Merge branch 'master' of https://github.com/DetectiveSquirrel/Pokemon-Go-Rocket-API into personal

Edwin [2016-09-14 23:11:43]
Merge branch 'master' of https://github.com/DetectiveSquirrel/Pokemon-Go-Rocket-API into personal

Conflicts:
	PokemonGo/RocketAPI/Window/MainForm.cs
	PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
Filename
.gitignore
.gitmodules
Images/MainForm.png
Images/SettingForm.png
Images/SettingForm_2.png
Images/SettingForm_3.png
Images/SettingForm_4.png
Images/SettingForm_5.png
LICENSE.md
MainSettings2.png
MainWindow.png
POGOProtos
Pokemon Go Rocket API.sln
PokemonGo.RocketAPI
PokemonGo.RocketBot.Logic/Common/ApiFailureStrategy.cs
PokemonGo.RocketBot.Logic/Common/Translations.cs
PokemonGo.RocketBot.Logic/DataDumper/Dumper.cs
PokemonGo.RocketBot.Logic/DataDumper/IDumper.cs
PokemonGo.RocketBot.Logic/Event/DisplayHighestsPokemonEvent.cs
PokemonGo.RocketBot.Logic/Event/EggHatchedEvent.cs
PokemonGo.RocketBot.Logic/Event/EggIncubatorStatusEvent.cs
PokemonGo.RocketBot.Logic/Event/EggsListEvent.cs
PokemonGo.RocketBot.Logic/Event/ErrorEvent.cs
PokemonGo.RocketBot.Logic/Event/EventDispatcher.cs
PokemonGo.RocketBot.Logic/Event/EvolveCountEvent.cs
PokemonGo.RocketBot.Logic/Event/FortFailedEvent.cs
PokemonGo.RocketBot.Logic/Event/FortTargetEvent.cs
PokemonGo.RocketBot.Logic/Event/FortUsedEvent.cs
PokemonGo.RocketBot.Logic/Event/GetHumanizeRouteEvent.cs
PokemonGo.RocketBot.Logic/Event/HumanWalkingEvent.cs
PokemonGo.RocketBot.Logic/Event/IEvent.cs
PokemonGo.RocketBot.Logic/Event/InventoryListEvent.cs
PokemonGo.RocketBot.Logic/Event/ItemRecycledEvent.cs
PokemonGo.RocketBot.Logic/Event/LootPokestopEvent.cs
PokemonGo.RocketBot.Logic/Event/NoPokeballEvent.cs
PokemonGo.RocketBot.Logic/Event/NoticeEvent.cs
PokemonGo.RocketBot.Logic/Event/OptimizeRouteEvent.cs
PokemonGo.RocketBot.Logic/Event/PokeStopListEvent.cs
PokemonGo.RocketBot.Logic/Event/PokemonCaptureEvent.cs
PokemonGo.RocketBot.Logic/Event/PokemonEvolveEvent.cs
PokemonGo.RocketBot.Logic/Event/PokemonListEvent.cs
PokemonGo.RocketBot.Logic/Event/PokemonsEncounterEvent.cs
PokemonGo.RocketBot.Logic/Event/ProfileEvent.cs
PokemonGo.RocketBot.Logic/Event/SnipeEvent.cs
PokemonGo.RocketBot.Logic/Event/SnipeModeEvent.cs
PokemonGo.RocketBot.Logic/Event/SnipeScanEvent.cs
PokemonGo.RocketBot.Logic/Event/TransferPokemonEvent.cs
PokemonGo.RocketBot.Logic/Event/UpdateEvent.cs
PokemonGo.RocketBot.Logic/Event/UpdatePositionEvent.cs
PokemonGo.RocketBot.Logic/Event/UseBerryEvent.cs
PokemonGo.RocketBot.Logic/Event/UseLuckyEggEvent.cs
PokemonGo.RocketBot.Logic/Event/WarnEvent.cs
PokemonGo.RocketBot.Logic/ILogicSettings.cs
PokemonGo.RocketBot.Logic/Inventory.cs
PokemonGo.RocketBot.Logic/Localization/Localizer.cs
PokemonGo.RocketBot.Logic/Logging/ILogger.cs
PokemonGo.RocketBot.Logic/Logging/Logger.cs
PokemonGo.RocketBot.Logic/Navigation.cs
PokemonGo.RocketBot.Logic/PoGoUtils/PokemonInfo.cs
PokemonGo.RocketBot.Logic/PokemonGo.RocketBot.Logic.csproj
PokemonGo/RocketAPI/Properties/AssemblyInfo.cs
PokemonGo.RocketBot.Logic/Service/BotService.cs
PokemonGo.RocketBot.Logic/Service/TelegramService.cs
PokemonGo.RocketBot.Logic/Settings.cs
PokemonGo.RocketBot.Logic/State/FarmState.cs
PokemonGo.RocketBot.Logic/State/IState.cs
PokemonGo.RocketBot.Logic/State/InfoState.cs
PokemonGo.RocketBot.Logic/State/LoginState.cs
PokemonGo.RocketBot.Logic/State/PositionCheckState.cs
PokemonGo.RocketBot.Logic/State/Session.cs
PokemonGo.RocketBot.Logic/State/StateMachine.cs
PokemonGo.RocketBot.Logic/State/VersionCheckState.cs
PokemonGo.RocketBot.Logic/StatisticsAggregator.cs
PokemonGo.RocketBot.Logic/Tasks/CatchIncensePokemonsTask.cs
PokemonGo.RocketBot.Logic/Tasks/CatchLurePokemonsTask.cs
PokemonGo.RocketBot.Logic/Tasks/CatchNearbyPokemonsTask.cs
PokemonGo.RocketBot.Logic/Tasks/CatchPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/DisplayPokemonStatsTask.cs
PokemonGo.RocketBot.Logic/Tasks/EggsListTask.cs
PokemonGo.RocketBot.Logic/Tasks/EvolvePokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/EvolveSpecificPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/Farm.cs
PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsGPXTask.cs
PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsTask.cs
PokemonGo.RocketBot.Logic/Tasks/FavoritePokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/GetPokeDexCount.cs
PokemonGo.RocketBot.Logic/Tasks/InventoryListTask.cs
PokemonGo.RocketBot.Logic/Tasks/LevelUpPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/LevelUpSpecificPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/Login.cs
PokemonGo.RocketBot.Logic/Tasks/PokemonListTask.cs
PokemonGo.RocketBot.Logic/Tasks/RecycleItemsTask.cs
PokemonGo.RocketBot.Logic/Tasks/RecycleSpecificItemTask.cs
PokemonGo.RocketBot.Logic/Tasks/RenamePokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/RenameSpecificPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/SnipePokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/TransferDuplicatePokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/TransferSpecificPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/TransferWeakPokemonTask.cs
PokemonGo.RocketBot.Logic/Tasks/UseIncenseConstantlyTask.cs
PokemonGo.RocketBot.Logic/Tasks/UseIncenseTask.cs
PokemonGo.RocketBot.Logic/Tasks/UseIncubatorsTask.cs
PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggConstantlyTask.cs
PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggTask.cs
PokemonGo.RocketBot.Logic/Tasks/UseNearbyPokestopsTask.cs
PokemonGo.RocketBot.Logic/Utils/DelayingUtils.cs
PokemonGo.RocketBot.Logic/Utils/DeviceInfoHelper.cs
PokemonGo.RocketBot.Logic/Utils/EggWalker.cs
PokemonGo.RocketBot.Logic/Utils/ErrorHandler.cs
PokemonGo.RocketBot.Logic/Utils/GPXReader.cs
PokemonGo.RocketBot.Logic/Utils/JitterUtils.cs
PokemonGo.RocketBot.Logic/Utils/LocationUtils.cs
PokemonGo.RocketBot.Logic/Utils/NecroWebClient.cs
PokemonGo.RocketBot.Logic/Utils/RouteOptimizeUtil.cs
PokemonGo.RocketBot.Logic/Utils/Statistics.cs
PokemonGo.RocketBot.Logic/Utils/StringUtils.cs
PokemonGo.RocketBot.Logic/Utils/WebClientExtensions.cs
PokemonGo.RocketBot.Logic/Utils/WebUtils.cs
PokemonGo.RocketBot.Logic/Utils/dijkstras.cs
PokemonGo/RocketAPI/app.config
PokemonGo.RocketBot.Logic/packages.config
PokemonGo.RocketBot.Window/App.config
PokemonGo.RocketBot.Window/Config/Translations/translation.ca.json
PokemonGo.RocketBot.Window/Config/Translations/translation.cs.json
PokemonGo.RocketBot.Window/Config/Translations/translation.da.json
PokemonGo.RocketBot.Window/Config/Translations/translation.de.json
PokemonGo.RocketBot.Window/Config/Translations/translation.es.json
PokemonGo.RocketBot.Window/Config/Translations/translation.et.json
PokemonGo.RocketBot.Window/Config/Translations/translation.fr.json
PokemonGo.RocketBot.Window/Config/Translations/translation.gr.json
PokemonGo.RocketBot.Window/Config/Translations/translation.hu.json
PokemonGo.RocketBot.Window/Config/Translations/translation.id.json
PokemonGo.RocketBot.Window/Config/Translations/translation.it.json
PokemonGo.RocketBot.Window/Config/Translations/translation.lt.json
PokemonGo.RocketBot.Window/Config/Translations/translation.nl.json
PokemonGo.RocketBot.Window/Config/Translations/translation.no.json
PokemonGo.RocketBot.Window/Config/Translations/translation.pl.json
PokemonGo.RocketBot.Window/Config/Translations/translation.pt-br.json
PokemonGo.RocketBot.Window/Config/Translations/translation.pt-pt.json
PokemonGo.RocketBot.Window/Config/Translations/translation.ro.json
PokemonGo.RocketBot.Window/Config/Translations/translation.ru_RU.json
PokemonGo.RocketBot.Window/Config/Translations/translation.sv.json
PokemonGo.RocketBot.Window/Config/Translations/translation.th.json
PokemonGo.RocketBot.Window/Config/Translations/translation.tr.json
PokemonGo.RocketBot.Window/Config/Translations/translation.uk_UA.json
PokemonGo.RocketBot.Window/Config/Translations/translation.vi.json
PokemonGo.RocketBot.Window/Config/Translations/translation.zh_CN.json
PokemonGo.RocketBot.Window/Config/Translations/translation.zh_TW.json
PokemonGo.RocketBot.Window/Config/Translations/translation.zh_hk.json
PokemonGo.RocketBot.Window/Config/log4net.config
PokemonGo.RocketBot.Window/Config/log4net.unix.config
PokemonGo.RocketBot.Window/ConsoleEventListener.cs
PokemonGo.RocketBot.Window/ConsoleLogger.cs
PokemonGo.RocketBot.Window/FodyWeavers.xml
PokemonGo.RocketBot.Window/Forms/ItemBox.cs
PokemonGo.RocketBot.Window/Forms/ItemBox.designer.cs
PokemonGo.RocketBot.Window/Forms/ItemBox.resx
PokemonGo.RocketBot.Window/Forms/ItemForm.cs
PokemonGo.RocketBot.Window/Forms/ItemForm.designer.cs
PokemonGo.RocketBot.Window/Forms/MainForm.cs
PokemonGo.RocketBot.Window/Forms/MainForm.designer.cs
PokemonGo.RocketBot.Window/Forms/MainForm.resx
PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.cs
PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.designer.cs
PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.resx
PokemonGo.RocketBot.Window/Forms/SettingForm.Designer.cs
PokemonGo.RocketBot.Window/Forms/SettingForm.cs
PokemonGo.RocketBot.Window/Forms/SettingForm.resx
PokemonGo.RocketBot.Window/Helpers/DeviceHelper.cs
PokemonGo.RocketBot.Window/Helpers/MachineIdHelper.cs
PokemonGo.RocketBot.Window/Helpers/ResourceHelper.cs
PokemonGo.RocketBot.Window/Helpers/S2GMapDrawer.cs
PokemonGo.RocketBot.Window/Helpers/TimeHelper.cs
PokemonGo.RocketBot.Window/Helpers/VersionHelper.cs
PokemonGo.RocketBot.Window/Images/Items/ItemBlukBerry.png
PokemonGo.RocketBot.Window/Images/Items/ItemGreatBall.png
PokemonGo.RocketBot.Window/Images/Items/ItemHyperPotion.png
PokemonGo.RocketBot.Window/Images/Items/ItemIncenseOrdinary.png
PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasic.png
PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasicUnlimited.png
PokemonGo.RocketBot.Window/Images/Items/ItemItemStorageUpgrade.png
PokemonGo.RocketBot.Window/Images/Items/ItemLuckyEgg.png
PokemonGo.RocketBot.Window/Images/Items/ItemMasterBall.png
PokemonGo.RocketBot.Window/Images/Items/ItemMaxPotion.png
PokemonGo.RocketBot.Window/Images/Items/ItemMaxRevive.png
PokemonGo.RocketBot.Window/Images/Items/ItemNanabBerry.png
PokemonGo.RocketBot.Window/Images/Items/ItemPinapBerry.png
PokemonGo.RocketBot.Window/Images/Items/ItemPokeBall.png
PokemonGo.RocketBot.Window/Images/Items/ItemPokemonStorageUpgrade.png
PokemonGo.RocketBot.Window/Images/Items/ItemPotion.png
PokemonGo.RocketBot.Window/Images/Items/ItemRazzBerry.png
PokemonGo.RocketBot.Window/Images/Items/ItemRevive.png
PokemonGo.RocketBot.Window/Images/Items/ItemSpecialCamera.png
PokemonGo.RocketBot.Window/Images/Items/ItemSuperPotion.png
PokemonGo.RocketBot.Window/Images/Items/ItemTroyDisk.png
PokemonGo.RocketBot.Window/Images/Items/ItemUltraBall.png
PokemonGo.RocketBot.Window/Images/Items/ItemWeparBerry.png
PokemonGo.RocketBot.Window/Images/Markers/Pokestop.png
PokemonGo.RocketBot.Window/Images/Markers/Pokestop_looted.png
PokemonGo.RocketBot.Window/Images/Markers/Trainer_Front.png
PokemonGo.RocketBot.Window/Images/Markers/Trainer_Left.png
PokemonGo.RocketBot.Window/Images/Markers/Trainer_Right.png
PokemonGo.RocketBot.Window/Images/Miscs/question.png
PokemonGo/RocketAPI/Window/img/Pokemon_1.png
PokemonGo/RocketAPI/Window/img/Pokemon_10.png
PokemonGo/RocketAPI/Window/img/Pokemon_100.png
PokemonGo/RocketAPI/Window/img/Pokemon_101.png
PokemonGo/RocketAPI/Window/img/Pokemon_102.png
PokemonGo/RocketAPI/Window/img/Pokemon_103.png
PokemonGo/RocketAPI/Window/img/Pokemon_104.png
PokemonGo/RocketAPI/Window/img/Pokemon_105.png
PokemonGo/RocketAPI/Window/img/Pokemon_106.png
PokemonGo/RocketAPI/Window/img/Pokemon_107.png
PokemonGo/RocketAPI/Window/img/Pokemon_108.png
PokemonGo/RocketAPI/Window/img/Pokemon_109.png
PokemonGo/RocketAPI/Window/img/Pokemon_11.png
PokemonGo/RocketAPI/Window/img/Pokemon_110.png
PokemonGo/RocketAPI/Window/img/Pokemon_111.png
PokemonGo/RocketAPI/Window/img/Pokemon_112.png
PokemonGo/RocketAPI/Window/img/Pokemon_113.png
PokemonGo/RocketAPI/Window/img/Pokemon_114.png
PokemonGo/RocketAPI/Window/img/Pokemon_115.png
PokemonGo/RocketAPI/Window/img/Pokemon_116.png
PokemonGo/RocketAPI/Window/img/Pokemon_117.png
PokemonGo/RocketAPI/Window/img/Pokemon_118.png
PokemonGo/RocketAPI/Window/img/Pokemon_119.png
PokemonGo/RocketAPI/Window/img/Pokemon_12.png
PokemonGo/RocketAPI/Window/img/Pokemon_120.png
PokemonGo/RocketAPI/Window/img/Pokemon_121.png
PokemonGo/RocketAPI/Window/img/Pokemon_122.png
PokemonGo/RocketAPI/Window/img/Pokemon_123.png
PokemonGo/RocketAPI/Window/img/Pokemon_124.png
PokemonGo/RocketAPI/Window/img/Pokemon_125.png
PokemonGo/RocketAPI/Window/img/Pokemon_126.png
PokemonGo/RocketAPI/Window/img/Pokemon_127.png
PokemonGo/RocketAPI/Window/img/Pokemon_128.png
PokemonGo/RocketAPI/Window/img/Pokemon_129.png
PokemonGo/RocketAPI/Window/img/Pokemon_13.png
PokemonGo/RocketAPI/Window/img/Pokemon_130.png
PokemonGo/RocketAPI/Window/img/Pokemon_131.png
PokemonGo/RocketAPI/Window/img/Pokemon_132.png
PokemonGo/RocketAPI/Window/img/Pokemon_133.png
PokemonGo/RocketAPI/Window/img/Pokemon_134.png
PokemonGo/RocketAPI/Window/img/Pokemon_135.png
PokemonGo/RocketAPI/Window/img/Pokemon_136.png
PokemonGo/RocketAPI/Window/img/Pokemon_137.png
PokemonGo/RocketAPI/Window/img/Pokemon_138.png
PokemonGo/RocketAPI/Window/img/Pokemon_139.png
PokemonGo/RocketAPI/Window/img/Pokemon_14.png
PokemonGo/RocketAPI/Window/img/Pokemon_140.png
PokemonGo/RocketAPI/Window/img/Pokemon_141.png
PokemonGo/RocketAPI/Window/img/Pokemon_142.png
PokemonGo/RocketAPI/Window/img/Pokemon_143.png
PokemonGo/RocketAPI/Window/img/Pokemon_144.png
PokemonGo/RocketAPI/Window/img/Pokemon_145.png
PokemonGo/RocketAPI/Window/img/Pokemon_146.png
PokemonGo/RocketAPI/Window/img/Pokemon_147.png
PokemonGo/RocketAPI/Window/img/Pokemon_148.png
PokemonGo/RocketAPI/Window/img/Pokemon_149.png
PokemonGo/RocketAPI/Window/img/Pokemon_15.png
PokemonGo/RocketAPI/Window/img/Pokemon_150.png
PokemonGo/RocketAPI/Window/img/Pokemon_151.png
PokemonGo/RocketAPI/Window/img/Pokemon_16.png
PokemonGo/RocketAPI/Window/img/Pokemon_17.png
PokemonGo/RocketAPI/Window/img/Pokemon_18.png
PokemonGo/RocketAPI/Window/img/Pokemon_19.png
PokemonGo/RocketAPI/Window/img/Pokemon_2.png
PokemonGo/RocketAPI/Window/img/Pokemon_20.png
PokemonGo/RocketAPI/Window/img/Pokemon_21.png
PokemonGo/RocketAPI/Window/img/Pokemon_22.png
PokemonGo/RocketAPI/Window/img/Pokemon_23.png
PokemonGo/RocketAPI/Window/img/Pokemon_24.png
PokemonGo/RocketAPI/Window/img/Pokemon_25.png
PokemonGo/RocketAPI/Window/img/Pokemon_26.png
PokemonGo/RocketAPI/Window/img/Pokemon_27.png
PokemonGo/RocketAPI/Window/img/Pokemon_28.png
PokemonGo/RocketAPI/Window/img/Pokemon_29.png
PokemonGo/RocketAPI/Window/img/Pokemon_3.png
PokemonGo/RocketAPI/Window/img/Pokemon_30.png
PokemonGo/RocketAPI/Window/img/Pokemon_31.png
PokemonGo/RocketAPI/Window/img/Pokemon_32.png
PokemonGo/RocketAPI/Window/img/Pokemon_33.png
PokemonGo/RocketAPI/Window/img/Pokemon_34.png
PokemonGo/RocketAPI/Window/img/Pokemon_35.png
PokemonGo/RocketAPI/Window/img/Pokemon_36.png
PokemonGo/RocketAPI/Window/img/Pokemon_37.png
PokemonGo/RocketAPI/Window/img/Pokemon_38.png
PokemonGo/RocketAPI/Window/img/Pokemon_39.png
PokemonGo/RocketAPI/Window/img/Pokemon_4.png
PokemonGo/RocketAPI/Window/img/Pokemon_40.png
PokemonGo/RocketAPI/Window/img/Pokemon_41.png
PokemonGo/RocketAPI/Window/img/Pokemon_42.png
PokemonGo/RocketAPI/Window/img/Pokemon_43.png
PokemonGo/RocketAPI/Window/img/Pokemon_44.png
PokemonGo/RocketAPI/Window/img/Pokemon_45.png
PokemonGo/RocketAPI/Window/img/Pokemon_46.png
PokemonGo/RocketAPI/Window/img/Pokemon_47.png
PokemonGo/RocketAPI/Window/img/Pokemon_48.png
PokemonGo/RocketAPI/Window/img/Pokemon_49.png
PokemonGo/RocketAPI/Window/img/Pokemon_5.png
PokemonGo/RocketAPI/Window/img/Pokemon_50.png
PokemonGo/RocketAPI/Window/img/Pokemon_51.png
PokemonGo/RocketAPI/Window/img/Pokemon_52.png
PokemonGo/RocketAPI/Window/img/Pokemon_53.png
PokemonGo/RocketAPI/Window/img/Pokemon_54.png
PokemonGo/RocketAPI/Window/img/Pokemon_55.png
PokemonGo/RocketAPI/Window/img/Pokemon_56.png
PokemonGo/RocketAPI/Window/img/Pokemon_57.png
PokemonGo/RocketAPI/Window/img/Pokemon_58.png
PokemonGo/RocketAPI/Window/img/Pokemon_59.png
PokemonGo/RocketAPI/Window/img/Pokemon_6.png
PokemonGo/RocketAPI/Window/img/Pokemon_60.png
PokemonGo/RocketAPI/Window/img/Pokemon_61.png
PokemonGo/RocketAPI/Window/img/Pokemon_62.png
PokemonGo/RocketAPI/Window/img/Pokemon_63.png
PokemonGo/RocketAPI/Window/img/Pokemon_64.png
PokemonGo/RocketAPI/Window/img/Pokemon_65.png
PokemonGo/RocketAPI/Window/img/Pokemon_66.png
PokemonGo/RocketAPI/Window/img/Pokemon_67.png
PokemonGo/RocketAPI/Window/img/Pokemon_68.png
PokemonGo/RocketAPI/Window/img/Pokemon_69.png
PokemonGo/RocketAPI/Window/img/Pokemon_7.png
PokemonGo/RocketAPI/Window/img/Pokemon_70.png
PokemonGo/RocketAPI/Window/img/Pokemon_71.png
PokemonGo/RocketAPI/Window/img/Pokemon_72.png
PokemonGo/RocketAPI/Window/img/Pokemon_73.png
PokemonGo/RocketAPI/Window/img/Pokemon_74.png
PokemonGo/RocketAPI/Window/img/Pokemon_75.png
PokemonGo/RocketAPI/Window/img/Pokemon_76.png
PokemonGo/RocketAPI/Window/img/Pokemon_77.png
PokemonGo/RocketAPI/Window/img/Pokemon_78.png
PokemonGo/RocketAPI/Window/img/Pokemon_79.png
PokemonGo/RocketAPI/Window/img/Pokemon_8.png
PokemonGo/RocketAPI/Window/img/Pokemon_80.png
PokemonGo/RocketAPI/Window/img/Pokemon_81.png
PokemonGo/RocketAPI/Window/img/Pokemon_82.png
PokemonGo/RocketAPI/Window/img/Pokemon_83.png
PokemonGo/RocketAPI/Window/img/Pokemon_84.png
PokemonGo/RocketAPI/Window/img/Pokemon_85.png
PokemonGo/RocketAPI/Window/img/Pokemon_86.png
PokemonGo/RocketAPI/Window/img/Pokemon_87.png
PokemonGo/RocketAPI/Window/img/Pokemon_88.png
PokemonGo/RocketAPI/Window/img/Pokemon_89.png
PokemonGo/RocketAPI/Window/img/Pokemon_9.png
PokemonGo/RocketAPI/Window/img/Pokemon_90.png
PokemonGo/RocketAPI/Window/img/Pokemon_91.png
PokemonGo/RocketAPI/Window/img/Pokemon_92.png
PokemonGo/RocketAPI/Window/img/Pokemon_93.png
PokemonGo/RocketAPI/Window/img/Pokemon_94.png
PokemonGo/RocketAPI/Window/img/Pokemon_95.png
PokemonGo/RocketAPI/Window/img/Pokemon_96.png
PokemonGo/RocketAPI/Window/img/Pokemon_97.png
PokemonGo/RocketAPI/Window/img/Pokemon_98.png
PokemonGo/RocketAPI/Window/img/Pokemon_99.png
PokemonGo.RocketBot.Window/ItemSetting.Designer.cs
PokemonGo.RocketBot.Window/ItemSetting.cs
PokemonGo.RocketBot.Window/ItemSetting.resx
PokemonGo.RocketBot.Window/Models/GMapMarkerPokestops.cs
PokemonGo.RocketBot.Window/Models/GMapMarkerTrainer.cs
PokemonGo.RocketBot.Window/Models/LoggingStrings.cs
PokemonGo.RocketBot.Window/Plugin/INecroPlugin.cs
PokemonGo.RocketBot.Window/Plugin/PluginInitializerInfo.cs
PokemonGo.RocketBot.Window/Plugin/PluginManager.cs
PokemonGo.RocketBot.Window/PokemomObject.cs
PokemonGo.RocketBot.Window/PokemonGo.RocketBot.Window.csproj
PokemonGo.RocketBot.Window/Program.cs
PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs
PokemonGo/RocketAPI/Window/Properties/Resources.Designer.cs
PokemonGo.RocketBot.Window/Properties/Resources.resx
PokemonGo.RocketBot.Window/Resources/Icon.ico
PokemonGo.RocketBot.Window/Resources/ProgressBar.cs
PokemonGo.RocketBot.Window/Resources/client_secret.json
PokemonGo.RocketBot.Window/Resources/device info.csv
PokemonGo.RocketBot.Window/Resources/encrypt.dll
PokemonGo.RocketBot.Window/SETUP.md
PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/EvolvePokemonHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/TransferPokemonHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/EncodingHelper.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/EggListResponce.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/ItemListResponce.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/PokemonListResponce.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/TrainerProfileResponce.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/WebResponce.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetEggListHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetItemsListHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonListHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonSettingsHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetTrainerProfileHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/EggListWeb.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/PokemonListWeb.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/TrainerProfileWeb.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetEggListTask.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetItemListTask.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonListTask.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonSettingsTask.cs
PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetTrainerProfileTask.cs
PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketRequestHandler.cs
PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketResponce.cs
PokemonGo.RocketBot.Window/WebSocketHandler/WebSocketEventManager.cs
PokemonGo.RocketBot.Window/WebSocketInterface.cs
PokemonGo.RocketBot.Window/cert.pfx
PokemonGo.RocketBot.Window/packages.config
PokemonGo.RocketBot.Window/supersocket.cmd
PokemonGo.RocketBot.Window/supersocket.sh
PokemonGo/RocketAPI/ClassDiagram1.cd
PokemonGo/RocketAPI/Client.cs
PokemonGo/RocketAPI/Enums/AuthType.cs
PokemonGo/RocketAPI/Enums/MiscEnums.cs
PokemonGo/RocketAPI/Enums/RequestType.cs
PokemonGo/RocketAPI/Exceptions/LoginFailedException.cs
PokemonGo/RocketAPI/Exceptions/PTCOfflineException.cs
PokemonGo/RocketAPI/Extensions/DateTimeExtensions.cs
PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
PokemonGo/RocketAPI/Extensions/LatLongExtensions.cs
PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs
PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
PokemonGo/RocketAPI/GeneratedCode/Request.cs
PokemonGo/RocketAPI/GeneratedCode/Response.cs
PokemonGo/RocketAPI/Helpers/HttpClientHelper.cs
PokemonGo/RocketAPI/Helpers/ProtoHelper.cs
PokemonGo/RocketAPI/Helpers/RandomHelper.cs
PokemonGo/RocketAPI/Helpers/RequestBuilder.cs
PokemonGo/RocketAPI/Helpers/RetryHandler.cs
PokemonGo/RocketAPI/Helpers/S2Helper.cs
PokemonGo/RocketAPI/Helpers/Utils.cs
PokemonGo/RocketAPI/ILatLong.cs
PokemonGo/RocketAPI/ISettings.cs
PokemonGo/RocketAPI/Login/GoogleLogin.cs
PokemonGo/RocketAPI/Login/ILoginType.cs
PokemonGo/RocketAPI/Login/PtcLogin.cs
PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
PokemonGo/RocketAPI/Proto/AllEnum.proto
PokemonGo/RocketAPI/Proto/Payloads.proto
PokemonGo/RocketAPI/Proto/Request.proto
PokemonGo/RocketAPI/Proto/Response.proto
PokemonGo/RocketAPI/ProtoAdditions.cs
PokemonGo/RocketAPI/Resources.cs
PokemonGo/RocketAPI/Window/App.config
PokemonGo/RocketAPI/Window/LocationManager.cs
PokemonGo/RocketAPI/Window/MainForm.Designer.cs
PokemonGo/RocketAPI/Window/MainForm.cs
PokemonGo/RocketAPI/Window/MainForm.resx
PokemonGo/RocketAPI/Window/MapForm.Designer.cs
PokemonGo/RocketAPI/Window/MapForm.cs
PokemonGo/RocketAPI/Window/MapForm.resx
PokemonGo/RocketAPI/Window/PokeUi.Designer.cs
PokemonGo/RocketAPI/Window/PokeUi.cs
PokemonGo/RocketAPI/Window/PokeUi.resx
PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs
PokemonGo/RocketAPI/Window/PokemonForm.cs
PokemonGo/RocketAPI/Window/PokemonForm.resx
PokemonGo/RocketAPI/Window/PokemonGo.RocketAPI.Window.csproj
PokemonGo/RocketAPI/Window/Program.cs
PokemonGo/RocketAPI/Window/Properties/Resources.resx
PokemonGo/RocketAPI/Window/Properties/Settings.Designer.cs
PokemonGo/RocketAPI/Window/Properties/Settings.settings
PokemonGo/RocketAPI/Window/RouteOptimizer.cs
PokemonGo/RocketAPI/Window/S2GMapDrawer.cs
PokemonGo/RocketAPI/Window/Settings.cs
PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
PokemonGo/RocketAPI/Window/SettingsForm.cs
PokemonGo/RocketAPI/Window/SettingsForm.resx
PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.dll
PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.xml
PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.dll
PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.xml
PokemonGo/RocketAPI/Window/lib/License.txt
PokemonGo/RocketAPI/Window/packages.config
PokemonGo/RocketAPI/Window/pokemonGo.ico
PokemonGo/RocketAPI/packages.config
README.md
RocketBot.sln
diff --git a/.gitignore b/.gitignore
index 26e77f2..6af79b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,256 @@
-################################################################################
-# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
-################################################################################
-
-.vs
-packages
-bin/
-obj/
-/PokemonGo/RocketAPI/Proto/google/protobuf
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignoreable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..fde8e54
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "POGOProtos"]
+	path = POGOProtos
+	url = https://github.com/TheUnnameOrganization/POGOProtos.git
+[submodule "PokemonGo.RocketAPI"]
+	path = PokemonGo.RocketAPI
+	url = https://github.com/TheUnnameOrganization/PokemonGo.RocketAPI.git
diff --git a/Images/MainForm.png b/Images/MainForm.png
new file mode 100644
index 0000000..4462f6e
Binary files /dev/null and b/Images/MainForm.png differ
diff --git a/Images/SettingForm.png b/Images/SettingForm.png
new file mode 100644
index 0000000..d08e57c
Binary files /dev/null and b/Images/SettingForm.png differ
diff --git a/Images/SettingForm_2.png b/Images/SettingForm_2.png
new file mode 100644
index 0000000..eb2d550
Binary files /dev/null and b/Images/SettingForm_2.png differ
diff --git a/Images/SettingForm_3.png b/Images/SettingForm_3.png
new file mode 100644
index 0000000..32b4138
Binary files /dev/null and b/Images/SettingForm_3.png differ
diff --git a/Images/SettingForm_4.png b/Images/SettingForm_4.png
new file mode 100644
index 0000000..8cf6050
Binary files /dev/null and b/Images/SettingForm_4.png differ
diff --git a/Images/SettingForm_5.png b/Images/SettingForm_5.png
new file mode 100644
index 0000000..924e9bb
Binary files /dev/null and b/Images/SettingForm_5.png differ
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..9cecc1d
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    {one line to give the program's name and a brief idea of what it does.}
+    Copyright (C) {year}  {name of author}
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    {project}  Copyright (C) {year}  {fullname}
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/MainSettings2.png b/MainSettings2.png
deleted file mode 100644
index f6df2f4..0000000
Binary files a/MainSettings2.png and /dev/null differ
diff --git a/MainWindow.png b/MainWindow.png
deleted file mode 100644
index 7dd8a00..0000000
Binary files a/MainWindow.png and /dev/null differ
diff --git a/POGOProtos b/POGOProtos
new file mode 160000
index 0000000..36a2a8e
--- /dev/null
+++ b/POGOProtos
@@ -0,0 +1 @@
+Subproject commit 36a2a8ea792cfa05c55ad3b692c67380e4654952
diff --git a/Pokemon Go Rocket API.sln b/Pokemon Go Rocket API.sln
deleted file mode 100644
index 13123b8..0000000
--- a/Pokemon Go Rocket API.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PokemonGo.RocketAPI", "PokemonGo\RocketAPI\PokemonGo.RocketAPI.csproj", "{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PokemonGo.RocketAPI.Window", "PokemonGo\RocketAPI\Window\PokemonGo.RocketAPI.Window.csproj", "{C85B9D78-9CA3-4830-84CD-6B69090B987F}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C85B9D78-9CA3-4830-84CD-6B69090B987F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C85B9D78-9CA3-4830-84CD-6B69090B987F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C85B9D78-9CA3-4830-84CD-6B69090B987F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C85B9D78-9CA3-4830-84CD-6B69090B987F}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		EnterpriseLibraryConfigurationToolBinariesPathV6 = packages\EnterpriseLibrary.TransientFaultHandling.6.0.1304.0\lib\portable-net45+win+wp8;packages\EnterpriseLibrary.TransientFaultHandling.Data.6.0.1304.1\lib\NET45
-	EndGlobalSection
-EndGlobal
diff --git a/PokemonGo.RocketAPI b/PokemonGo.RocketAPI
new file mode 160000
index 0000000..ad89192
--- /dev/null
+++ b/PokemonGo.RocketAPI
@@ -0,0 +1 @@
+Subproject commit ad89192001dc1beade27a6296f183e42015f2170
diff --git a/PokemonGo.RocketBot.Logic/Common/ApiFailureStrategy.cs b/PokemonGo.RocketBot.Logic/Common/ApiFailureStrategy.cs
new file mode 100644
index 0000000..a032dd3
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Common/ApiFailureStrategy.cs
@@ -0,0 +1,179 @@
+#region using directives
+
+using System;
+using System.Threading.Tasks;
+using PokemonGo.RocketAPI.Enums;
+using PokemonGo.RocketAPI.Exceptions;
+using PokemonGo.RocketAPI.Extensions;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Networking.Envelopes;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Common
+{
+    public class ApiFailureStrategy : IApiFailureStrategy
+    {
+        private readonly ISession _session;
+        private int _retryCount;
+
+        public ApiFailureStrategy(ISession session)
+        {
+            _session = session;
+        }
+
+        public void HandleApiSuccess(RequestEnvelope request, ResponseEnvelope response)
+        {
+            _retryCount = 0;
+        }
+
+        public async Task<ApiOperation> HandleApiFailure(RequestEnvelope request, ResponseEnvelope response)
+        {
+            if (_retryCount == 11)
+                return ApiOperation.Abort;
+
+            await Task.Delay(500);
+            _retryCount++;
+
+            if (_retryCount%5 == 0)
+            {
+                try
+                {
+                    DoLogin();
+                }
+                catch (PtcOfflineException)
+                {
+                    await Task.Delay(20000);
+                }
+                catch (AccessTokenExpiredException)
+                {
+                    await Task.Delay(2000);
+                }
+                catch (Exception ex) when (ex is InvalidResponseException || ex is TaskCanceledException)
+                {
+                    await Task.Delay(1000);
+                }
+            }
+
+            return ApiOperation.Retry;
+        }
+
+        public async Task<ApiOperation> HandleApiFailure()
+        {
+            if (_retryCount == 11)
+                return ApiOperation.Abort;
+
+            await Task.Delay(500);
+            _retryCount++;
+
+            if (_retryCount%5 == 0)
+            {
+                DoLogin();
+            }
+
+            return ApiOperation.Retry;
+        }
+
+        public void HandleApiSuccess()
+        {
+            _retryCount = 0;
+        }
+
+        private async void DoLogin()
+        {
+            try
+            {
+                if (_session.Settings.AuthType == AuthType.Google || _session.Settings.AuthType == AuthType.Ptc)
+                {
+                    await _session.Client.Login.DoLogin();
+                }
+                else
+                {
+                    _session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = _session.Translation.GetTranslation(TranslationString.WrongAuthType)
+                    });
+                }
+            }
+            catch (AggregateException ae)
+            {
+                throw ae.Flatten().InnerException;
+            }
+            catch (NullReferenceException nre)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = "Causing Method: " + nre.TargetSite + " Source: " + nre.Source + " Data: " + nre.Data
+                });
+                throw nre.InnerException;
+            }
+            catch (LoginFailedException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.LoginInvalid)
+                });
+            }
+            catch (AccessTokenExpiredException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.AccessTokenExpired)
+                });
+                _session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 1)
+                });
+
+                await Task.Delay(1000);
+            }
+            catch (PtcOfflineException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.PtcOffline)
+                });
+                _session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 15)
+                });
+
+                await Task.Delay(15000);
+            }
+            catch (GoogleOfflineException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.GoogleOffline)
+                });
+                _session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 15)
+                });
+
+                await Task.Delay(15000);
+            }
+            catch (InvalidResponseException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.InvalidResponse)
+                });
+                _session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 5)
+                });
+
+                await Task.Delay(5000);
+            }
+            catch (Exception ex)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = ex.InnerException.ToString()
+                });
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Common/Translations.cs b/PokemonGo.RocketBot.Logic/Common/Translations.cs
new file mode 100644
index 0000000..121ff97
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Common/Translations.cs
@@ -0,0 +1,953 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Common
+{
+    public interface ITranslation
+    {
+        string GetTranslation(TranslationString translationString, params object[] data);
+
+        string GetTranslation(TranslationString translationString);
+
+        string GetPokemonTranslation(PokemonId id);
+
+        string GetPokemonMovesetTranslation(PokemonMove move);
+    }
+
+    public enum TranslationString
+    {
+        HumanWalkingVariant,
+        Pokeball,
+        GreatPokeball,
+        UltraPokeball,
+        MasterPokeball,
+        LogLevelDebug,
+        LogLevelPokestop,
+        WrongAuthType,
+        LoginInvalid,
+        FarmPokestopsOutsideRadius,
+        FarmPokestopsNoUsableFound,
+        EventFortUsed,
+        EventFortFailed,
+        EventFortTargeted,
+        EventProfileLogin,
+        EventUsedLuckyEgg,
+        EventPokemonEvolvedSuccess,
+        EventPokemonEvolvedFailed,
+        EventPokemonTransferred,
+        EventItemRecycled,
+        EventPokemonCaptureSuccess,
+        EventPokemonCaptureFailed,
+        EventNoPokeballs,
+        WaitingForMorePokemonToEvolve,
+        UseLuckyEggsMinPokemonAmountTooHigh,
+        CatchMorePokemonToUseLuckyEgg,
+        EventUseBerry,
+        ItemRazzBerry,
+        CatchStatusAttempt,
+        CatchStatus,
+        Candies,
+        UnhandledGpxData,
+        DisplayHighestsHeader,
+        CommonWordPerfect,
+        CommonWordName,
+        DisplayHighestsCpHeader,
+        DisplayHighestsPerfectHeader,
+        WelcomeWarning,
+        IncubatorPuttingEgg,
+        IncubatorStatusUpdate,
+        DisplayHighestsLevelHeader,
+        LogEntryError,
+        LogEntryAttention,
+        LogEntryInfo,
+        LogEntryPokestop,
+        LogEntryFarming,
+        LogEntrySniper,
+        LogEntryRecycling,
+        LogEntryPkmn,
+        LogEntryTransfered,
+        LogEntryEvolved,
+        LogEntryLevelUp,
+        LogEntryBerry,
+        LogEntryEgg,
+        LogEntryDebug,
+        LogEntryUpdate,
+        LogEntryNew,
+        LogEntrySoftBan,
+        LoggingIn,
+        PtcOffline,
+        AccessTokenExpired,
+        InvalidResponse,
+        TryingAgainIn,
+        AccountNotVerified,
+        CommonWordUnknown,
+        OpeningGoogleDevicePage,
+        CouldntCopyToClipboard,
+        CouldntCopyToClipboard2,
+        RealisticTravelDetected,
+        NotRealisticTravel,
+        CoordinatesAreInvalid,
+        GotUpToDateVersion,
+        AutoUpdaterDisabled,
+        DownloadingUpdate,
+        FinishedDownloadingRelease,
+        FinishedUnpackingFiles,
+        FinishedTransferringConfig,
+        UpdateFinished,
+        LookingForIncensePokemon,
+        PokemonSkipped,
+        ZeroPokeballInv,
+        CurrentPokeballInv,
+        CurrentPotionInv,
+        CurrentReviveInv,
+        CurrentMiscItemInv,
+        MaxItemsCombinedOverMaxItemStorage,
+        RecyclingQuietly,
+        InvFullTransferring,
+        InvFullTransferManually,
+        InvFullPokestopLooting,
+        IncubatorEggHatched,
+        EncounterProblem,
+        EncounterProblemLurePokemon,
+        LookingForPokemon,
+        LookingForLurePokemon,
+        DesiredDestTooFar,
+        PokemonRename,
+        PokemonFavorite,
+        PokemonIgnoreFilter,
+        CatchStatusError,
+        CatchStatusEscape,
+        CatchStatusFlee,
+        CatchStatusMissed,
+        CatchStatusSuccess,
+        CatchTypeNormal,
+        CatchTypeLure,
+        CatchTypeIncense,
+        WebSocketFailStart,
+        StatsTemplateString,
+        ProfileStatsTemplateString,
+        ShowPokeTemplate,
+        HelpTemplate,
+        StatsXpTemplateString,
+        RequireInputText,
+        GoogleTwoFactorAuth,
+        GoogleTwoFactorAuthExplanation,
+        GoogleError,
+        GoogleOffline,
+        MissingCredentialsGoogle,
+        MissingCredentialsPtc,
+        SnipeScan,
+        SnipeScanEx,
+        NoPokemonToSnipe,
+        NotEnoughPokeballsToSnipe,
+        DisplayHighestMove1Header,
+        DisplayHighestMove2Header,
+        DisplayHighestCandy,
+        // ReSharper disable once InconsistentNaming
+        IPBannedError,
+        NoEggsAvailable,
+        UseLuckyEggActive,
+        UsedLuckyEgg,
+        UseLuckyEggAmount,
+        NoIncenseAvailable,
+        UseIncenseActive,
+        UseIncenseAmount,
+        UsedIncense,
+        AmountPkmSeenCaught,
+        PkmPotentialEvolveCount,
+        PkmNotEnoughRessources,
+        EventUsedIncense,
+        SnipeServerOffline,
+        PromptError,
+        SoftBanBypassed,
+        FirstStartLanguagePrompt,
+        FirstStartLanguageCodePrompt,
+        FirstStartLanguageConfirm,
+        FirstStartPrompt,
+        FirstStartAutoGenSettings,
+        FirstStartSetupAccount,
+        FirstStartSetupTypePrompt,
+        FirstStartSetupTypeConfirm,
+        FirstStartSetupTypePromptError,
+        FirstStartSetupUsernamePrompt,
+        FirstStartSetupUsernameConfirm,
+        FirstStartSetupPasswordPrompt,
+        FirstStartSetupPasswordConfirm,
+        FirstStartAccountCompleted,
+        FirstStartDefaultLocationPrompt,
+        FirstStartDefaultLocationSet,
+        FirstStartDefaultLocation,
+        FirstStartSetupDefaultLocationError,
+        FirstStartSetupDefaultLatPrompt,
+        FirstStartSetupDefaultLatConfirm,
+        FirstStartSetupDefaultLongPrompt,
+        FirstStartSetupDefaultLongConfirm,
+        FirstStartSetupCompleted,
+        PokedexCatchedTelegram,
+        PokedexPokemonCatchedTelegram,
+        PokedexNeededTelegram,
+        PokedexPokemonNeededTelegram
+    }
+
+    public class Translation : ITranslation
+    {
+        [JsonProperty("PokemonMovesetStrings",
+            ItemTypeNameHandling = TypeNameHandling.Arrays,
+            ItemConverterType = typeof(KeyValuePairConverter),
+            ObjectCreationHandling = ObjectCreationHandling.Replace,
+            DefaultValueHandling = DefaultValueHandling.Populate)] private readonly
+            List<KeyValuePair<PokemonMove, string>> _pokemonMovesetTranslationStrings =
+                new List<KeyValuePair<PokemonMove, string>>
+                {
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MoveUnset, "MoveUnset"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ThunderShock, "ThunderShock"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.QuickAttack, "QuickAttack"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Scratch, "Scratch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Ember, "Ember"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.VineWhip, "VineWhip"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Tackle, "Tackle"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RazorLeaf, "RazorLeaf"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.TakeDown, "TakeDown"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WaterGun, "WaterGun"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Bite, "Bite"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Pound, "Pound"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DoubleSlap, "DoubleSlap"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Wrap, "Wrap"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HyperBeam, "HyperBeam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Lick, "Lick"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DarkPulse, "DarkPulse"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Smog, "Smog"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Sludge, "Sludge"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MetalClaw, "MetalClaw"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ViceGrip, "ViceGrip"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FlameWheel, "FlameWheel"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Megahorn, "Megahorn"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WingAttack, "WingAttack"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Flamethrower, "Flamethrower"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SuckerPunch, "SuckerPunch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Dig, "Dig"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.LowKick, "LowKick"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.CrossChop, "CrossChop"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PsychoCut, "PsychoCut"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Psybeam, "Psybeam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Earthquake, "Earthquake"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.StoneEdge, "StoneEdge"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.IcePunch, "IcePunch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HeartStamp, "HeartStamp"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Discharge, "Discharge"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FlashCannon, "FlashCannon"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Peck, "Peck"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DrillPeck, "DrillPeck"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.IceBeam, "IceBeam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Blizzard, "Blizzard"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AirSlash, "AirSlash"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HeatWave, "HeatWave"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Twineedle, "Twineedle"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PoisonJab, "PoisonJab"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AerialAce, "AerialAce"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DrillRun, "DrillRun"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PetalBlizzard, "PetalBlizzard"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MegaDrain, "MegaDrain"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BugBuzz, "BugBuzz"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PoisonFang, "PoisonFang"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.NightSlash, "NightSlash"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Slash, "Slash"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BubbleBeam, "BubbleBeam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Submission, "Submission"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.KarateChop, "KarateChop"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.LowSweep, "LowSweep"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AquaJet, "AquaJet"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AquaTail, "AquaTail"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SeedBomb, "SeedBomb"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Psyshock, "Psyshock"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RockThrow, "RockThrow"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AncientPower, "AncientPower"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RockTomb, "RockTomb"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RockSlide, "RockSlide"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PowerGem, "PowerGem"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ShadowSneak, "ShadowSneak"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ShadowPunch, "ShadowPunch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ShadowClaw, "ShadowClaw"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.OminousWind, "OminousWind"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ShadowBall, "ShadowBall"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BulletPunch, "BulletPunch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MagnetBomb, "MagnetBomb"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SteelWing, "SteelWing"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.IronHead, "IronHead"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ParabolicCharge, "ParabolicCharge"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Spark, "Spark"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ThunderPunch, "ThunderPunch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Thunder, "Thunder"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Thunderbolt, "Thunderbolt"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Twister, "Twister"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DragonBreath, "DragonBreath"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DragonPulse, "DragonPulse"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DragonClaw, "DragonClaw"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DisarmingVoice, "DisarmingVoice"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DrainingKiss, "DrainingKiss"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DazzlingGleam, "DazzlingGleam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Moonblast, "Moonblast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PlayRough, "PlayRough"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.CrossPoison, "CrossPoison"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SludgeBomb, "SludgeBomb"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SludgeWave, "SludgeWave"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.GunkShot, "GunkShot"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MudShot, "MudShot"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BoneClub, "BoneClub"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Bulldoze, "Bulldoze"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MudBomb, "MudBomb"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FuryCutter, "FuryCutter"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BugBite, "BugBite"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SignalBeam, "SignalBeam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.XScissor, "XScissor"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FlameCharge, "FlameCharge"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FlameBurst, "FlameBurst"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FireBlast, "FireBlast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Brine, "Brine"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WaterPulse, "WaterPulse"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Scald, "Scald"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HydroPump, "HydroPump"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Psychic, "Psychic"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Psystrike, "Psystrike"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.IceShard, "IceShard"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.IcyWind, "IcyWind"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FrostBreath, "FrostBreath"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Absorb, "Absorb"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.GigaDrain, "GigaDrain"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FirePunch, "FirePunch"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SolarBeam, "SolarBeam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.LeafBlade, "LeafBlade"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PowerWhip, "PowerWhip"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Splash, "Splash"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Acid, "Acid"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AirCutter, "AirCutter"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Hurricane, "Hurricane"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BrickBreak, "BrickBreak"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Cut, "Cut"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Swift, "Swift"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HornAttack, "HornAttack"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Stomp, "Stomp"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Headbutt, "Headbutt"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HyperFang, "HyperFang"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Slam, "Slam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BodySlam, "BodySlam"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Rest, "Rest"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.Struggle, "Struggle"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ScaldBlastoise, "ScaldBlastoise"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.HydroPumpBlastoise, "HydroPumpBlastoise"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WrapGreen, "WrapGreen"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WrapPink, "WrapPink"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FuryCutterFast, "FuryCutterFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BugBiteFast, "BugBiteFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BiteFast, "BiteFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SuckerPunchFast, "SuckerPunchFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.DragonBreathFast, "DragonBreathFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ThunderShockFast, "ThunderShockFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SparkFast, "SparkFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.LowKickFast, "LowKickFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.KarateChopFast, "KarateChopFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.EmberFast, "EmberFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WingAttackFast, "WingAttackFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PeckFast, "PeckFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.LickFast, "LickFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ShadowClawFast, "ShadowClawFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.VineWhipFast, "VineWhipFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RazorLeafFast, "RazorLeafFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MudShotFast, "MudShotFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.IceShardFast, "IceShardFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FrostBreathFast, "FrostBreathFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.QuickAttackFast, "QuickAttackFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ScratchFast, "ScratchFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.TackleFast, "TackleFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PoundFast, "PoundFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.CutFast, "CutFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PoisonJabFast, "PoisonJabFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.AcidFast, "AcidFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PsychoCutFast, "PsychoCutFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RockThrowFast, "RockThrowFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MetalClawFast, "MetalClawFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BulletPunchFast, "BulletPunchFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WaterGunFast, "WaterGunFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SplashFast, "SplashFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.WaterGunFastBlastoise, "WaterGunFastBlastoise"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.MudSlapFast, "MudSlapFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ZenHeadbuttFast, "ZenHeadbuttFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.ConfusionFast, "ConfusionFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.PoisonStingFast, "PoisonStingFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.BubbleFast, "BubbleFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FeintAttackFast, "FeintAttackFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.SteelWingFast, "SteelWingFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.FireFangFast, "FireFangFast"),
+                    new KeyValuePair<PokemonMove, string>(PokemonMove.RockSmashFast, "RockSmashFast")
+                };
+
+        [JsonProperty("PokemonStrings",
+            ItemTypeNameHandling = TypeNameHandling.Arrays,
+            ItemConverterType = typeof(KeyValuePairConverter),
+            ObjectCreationHandling = ObjectCreationHandling.Replace,
+            DefaultValueHandling = DefaultValueHandling.Populate)] private readonly
+            List<KeyValuePair<PokemonId, string>> _pokemonTranslationStrings = new List<KeyValuePair<PokemonId, string>>
+            {
+                new KeyValuePair<PokemonId, string>((PokemonId) 001, "Bulbasaur"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 002, "Ivysaur"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 003, "Venusaur"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 004, "Charmander"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 005, "Charmeleon"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 006, "Charizard"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 007, "Squirtle"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 008, "Wartortle"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 009, "Blastoise"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 010, "Caterpie"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 011, "Metapod"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 012, "Butterfree"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 013, "Weedle"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 014, "Kakuna"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 015, "Beedrill"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 016, "Pidgey"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 017, "Pidgeotto"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 018, "Pidgeot"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 019, "Rattata"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 020, "Raticate"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 021, "Spearow"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 022, "Fearow"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 023, "Ekans"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 024, "Arbok"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 025, "Pikachu"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 026, "Raichu"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 027, "Sandshrew"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 028, "Sandslash"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 029, "NidoranFemale"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 030, "Nidorina"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 031, "Nidoqueen"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 032, "NidoranMale"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 033, "Nidorino"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 034, "Nidoking"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 035, "Clefairy"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 036, "Clefable"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 037, "Vulpix"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 038, "Ninetales"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 039, "Jigglypuff"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 040, "Wigglytuff"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 041, "Zubat"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 042, "Golbat"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 043, "Oddish"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 044, "Gloom"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 045, "Vileplume"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 046, "Paras"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 047, "Parasect"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 048, "Venonat"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 049, "Venomoth"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 050, "Diglett"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 051, "Dugtrio"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 052, "Meowth"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 053, "Persian"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 054, "Psyduck"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 055, "Golduck"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 056, "Mankey"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 057, "Primeape"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 058, "Growlithe"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 059, "Arcanine"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 060, "Poliwag"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 061, "Poliwhirl"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 062, "Poliwrath"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 063, "Abra"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 064, "Kadabra"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 065, "Alakazam"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 066, "Machop"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 067, "Machoke"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 068, "Machamp"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 069, "Bellsprout"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 070, "Weepinbell"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 071, "Victreebel"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 072, "Tentacool"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 073, "Tentacruel"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 074, "Geodude"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 075, "Graveler"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 076, "Golem"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 077, "Ponyta"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 078, "Rapidash"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 079, "Slowpoke"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 080, "Slowbro"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 081, "Magnemite"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 082, "Magneton"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 083, "Farfetchd"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 084, "Doduo"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 085, "Dodrio"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 086, "Seel"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 087, "Dewgong"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 088, "Grimer"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 089, "Muk"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 090, "Shellder"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 091, "Cloyster"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 092, "Gastly"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 093, "Haunter"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 094, "Gengar"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 095, "Onix"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 096, "Drowzee"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 097, "Hypno"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 098, "Krabby"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 099, "Kingler"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 100, "Voltorb"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 101, "Electrode"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 102, "Exeggcute"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 103, "Exeggutor"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 104, "Cubone"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 105, "Marowak"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 106, "Hitmonlee"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 107, "Hitmonchan"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 108, "Lickitung"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 109, "Koffing"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 110, "Weezing"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 111, "Rhyhorn"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 112, "Rhydon"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 113, "Chansey"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 114, "Tangela"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 115, "Kangaskhan"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 116, "Horsea"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 117, "Seadra"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 118, "Goldeen"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 119, "Seaking"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 120, "Staryu"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 121, "Starmie"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 122, "Mr. Mime"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 123, "Scyther"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 124, "Jynx"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 125, "Electabuzz"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 126, "Magmar"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 127, "Pinsir"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 128, "Tauros"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 129, "Magikarp"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 130, "Gyarados"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 131, "Lapras"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 132, "Ditto"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 133, "Eevee"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 134, "Vaporeon"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 135, "Jolteon"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 136, "Flareon"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 137, "Porygon"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 138, "Omanyte"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 139, "Omastar"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 140, "Kabuto"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 141, "Kabutops"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 142, "Aerodactyl"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 143, "Snorlax"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 144, "Articuno"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 145, "Zapdos"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 146, "Moltres"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 147, "Dratini"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 148, "Dragonair"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 149, "Dragonite"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 150, "Mewtwo"),
+                new KeyValuePair<PokemonId, string>((PokemonId) 151, "Mew")
+            };
+
+        [JsonProperty("TranslationStrings",
+            ItemTypeNameHandling = TypeNameHandling.Arrays,
+            ItemConverterType = typeof(KeyValuePairConverter),
+            ObjectCreationHandling = ObjectCreationHandling.Replace,
+            DefaultValueHandling = DefaultValueHandling.Populate)]
+        //Default Translations (ENGLISH)
+        private readonly List<KeyValuePair<TranslationString, string>> _translationStrings = new List
+            <KeyValuePair<TranslationString, string>>
+        {
+            new KeyValuePair<TranslationString, string>(TranslationString.HumanWalkingVariant,
+                "Walking Speed: Has been changed, {0:n2} Km/h to {1:n2} Km/h"),
+            new KeyValuePair<TranslationString, string>(TranslationString.Pokeball, "PokeBall"),
+            new KeyValuePair<TranslationString, string>(TranslationString.GreatPokeball, "GreatBall"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UltraPokeball, "UltraBall"),
+            new KeyValuePair<TranslationString, string>(TranslationString.MasterPokeball, "MasterBall"),
+            new KeyValuePair<TranslationString, string>(TranslationString.WrongAuthType,
+                "Unknown AuthType in config.json"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LoginInvalid,
+                "User credentials are invalid and login failed."),
+            new KeyValuePair<TranslationString, string>(TranslationString.FarmPokestopsOutsideRadius,
+                "You're outside of your defined radius! Walking to start ({0}m away) in 5 seconds. Is your LastPos.ini file correct?"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FarmPokestopsNoUsableFound,
+                "No usable PokeStops found in your area. Is your maximum distance too small?"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventFortUsed,
+                "Name: {0} XP: {1}, Gems: {2}, Items: {3}, Lat: {4}, Long: {5}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventFortFailed,
+                "Name: {0} INFO: Looting failed, possible softban. Unban in: {1}/{2}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventFortTargeted,
+                "Traveling to Pokestop: {0} ({1}m) ({2} seconds)"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventProfileLogin, "Playing as {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventUsedIncense,
+                "Used Incense, remaining: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventUsedLuckyEgg,
+                "Used Lucky Egg, remaining: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventPokemonEvolvedSuccess,
+                "{0} successfully for {1}xp"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventPokemonEvolvedFailed,
+                "Failed {0}. Result was {1}, stopping evolving {2}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventPokemonTransferred,
+                "{0}\t- CP: {1}  IV: {2}%   [Best CP: {3}  IV: {4}%] (Candies: {5})"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventItemRecycled, "{0}x {1}"),
+
+            //Logging Cleanup (mostly uneccessary information, may want a verbose pokemon capture logger setting)
+            new KeyValuePair<TranslationString, string>(TranslationString.EventPokemonCaptureSuccess,
+                "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventPokemonCaptureFailed,
+                "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventNoPokeballs,
+                "No Pokeballs - We missed a {0} with CP {1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.WaitingForMorePokemonToEvolve,
+                "Waiting to evolve {0} Pokemon once {1} more are caught! ({2}/{3} for {4}% inventory)"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UseLuckyEggsMinPokemonAmountTooHigh,
+                "Lucky eggs will never be used with UseLuckyEggsMinPokemonAmount set to {0}, use <= {1} instead"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchMorePokemonToUseLuckyEgg,
+                "Catch {0} more Pokemon to use a Lucky Egg!"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EventUseBerry, "Used {0} | {1} remaining"),
+            new KeyValuePair<TranslationString, string>(TranslationString.ItemRazzBerry, "Razz Berry"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusAttempt, "{0} Attempt #{1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatus, "{0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.Candies, "Candies: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UnhandledGpxData,
+                "Unhandled data in GPX file, attempting to skip."),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestsHeader, "Pokemons"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CommonWordPerfect, "perfect"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CommonWordName, "name"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CommonWordUnknown, "Unknown"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestsCpHeader, "DisplayHighestsCP"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestsPerfectHeader,
+                "DisplayHighestsPerfect"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestsLevelHeader,
+                "DisplayHighestsLevel"),
+            new KeyValuePair<TranslationString, string>(TranslationString.WelcomeWarning,
+                "Make sure Lat & Lng are right. Exit Program if not! Lat: {0} Lng: {1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.IncubatorPuttingEgg,
+                "Putting egg in incubator: {0:0.00}km left"),
+            new KeyValuePair<TranslationString, string>(TranslationString.IncubatorStatusUpdate,
+                "Incubator status update: {0:0.00}km left"),
+            new KeyValuePair<TranslationString, string>(TranslationString.IncubatorEggHatched,
+                "Incubated egg has hatched: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryError, "ERROR"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryAttention, "ATTENTION"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryInfo, "INFO"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryPokestop, "POKESTOP"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryFarming, "FARMING"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntrySniper, "SNIPER"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryRecycling, "RECYCLING"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryPkmn, "PKMN"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryTransfered, "TRANSFERRED"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryEvolved, "EVOLVED"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryLevelUp, "LEVELUP"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryBerry, "BERRY"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryEgg, "EGG"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryDebug, "DEBUG"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryUpdate, "UPDATE"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntryNew, "NEW"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LogEntrySoftBan, "SOFTBAN"),
+            new KeyValuePair<TranslationString, string>(TranslationString.LoggingIn, "Logging in using {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PtcOffline,
+                "PTC Servers are probably down OR your credentials are wrong. Try google"),
+            new KeyValuePair<TranslationString, string>(TranslationString.AccessTokenExpired,
+                "PTC Login Token expired. Relogging..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.InvalidResponse,
+                "Received an invalid response from Niantic server"),
+            new KeyValuePair<TranslationString, string>(TranslationString.TryingAgainIn,
+                "Trying again in {0} seconds..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.AccountNotVerified,
+                "Account not verified! Exiting..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.OpeningGoogleDevicePage,
+                "Opening Google Device page. Please paste the code using CTRL+V"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CouldntCopyToClipboard,
+                "Couldnt copy to clipboard, do it manually"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CouldntCopyToClipboard2,
+                "Goto: {0} & enter {1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.RealisticTravelDetected,
+                "Detected realistic Traveling , using Default Settings inside config.json"),
+            new KeyValuePair<TranslationString, string>(TranslationString.NotRealisticTravel,
+                "Not realistic Traveling at {0}, using last saved LastPos.ini"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CoordinatesAreInvalid,
+                "Coordinates in \"LastPos.ini\" file are invalid, using the default coordinates"),
+            new KeyValuePair<TranslationString, string>(TranslationString.GotUpToDateVersion,
+                "Perfect! You already have the newest Version {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.AutoUpdaterDisabled,
+                "AutoUpdater is disabled. Get the latest release from: {0}\n "),
+            new KeyValuePair<TranslationString, string>(TranslationString.DownloadingUpdate,
+                "Downloading and apply Update..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.FinishedDownloadingRelease,
+                "Finished downloading newest Release..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.FinishedUnpackingFiles,
+                "Finished unpacking files..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.FinishedTransferringConfig,
+                "Finished transferring your config to the new version..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.UpdateFinished,
+                "Update finished, you can close this window now."),
+            new KeyValuePair<TranslationString, string>(TranslationString.LookingForIncensePokemon,
+                "Looking for incense Pokemon..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.LookingForPokemon, "Looking for Pokemon..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.LookingForLurePokemon,
+                "Looking for lure Pokemon..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokemonSkipped, "Skipped {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.ZeroPokeballInv,
+                "You have no pokeballs in your inventory, no more Pokemon can be caught!"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CurrentPokeballInv,
+                "Pokeballs: {0} | Greatballs: {1} | Ultraballs: {2} | Masterballs: {3}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CurrentPotionInv,
+                "Potions: {0} | SuperPotions: {1} | HyperPotions: {2} | MaxPotions: {3}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CurrentReviveInv,
+                "Revives: {0} | MaxRevives: {1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CurrentMiscItemInv,
+                "Berries: {0} | Incense: {1} | LuckyEggs: {2} | Lures: {3}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.MaxItemsCombinedOverMaxItemStorage,
+                "[Configuration Invalid] Your maximum items combined (balls+potions+revives={0}) is over your max item storage ({1})"),
+            new KeyValuePair<TranslationString, string>(TranslationString.RecyclingQuietly, "Recycling Quietly..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.InvFullTransferring,
+                "Pokemon Inventory is full, transferring Pokemon..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.InvFullTransferManually,
+                "Pokemon Inventory is full! Please transfer Pokemon manually or set TransferDuplicatePokemon to true in settings..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.InvFullPokestopLooting,
+                "Inventory is full, no items looted!"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EncounterProblem, "Encounter problem: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.EncounterProblemLurePokemon,
+                "Encounter problem: Lure Pokemon {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DesiredDestTooFar,
+                "Your desired destination of {0}, {1} is too far from your current position of {2}, {3}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokemonRename,
+                "Pokemon {0} ({1}) renamed from {2} to {3}."),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokemonFavorite,
+                "{0}% perfect {1} (CP {2}) *favorited*."),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokemonIgnoreFilter,
+                "[Pokemon ignore filter] - Ignoring {0} as defined in settings"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusAttempt, "CatchAttempt"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusError, "CatchError"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusEscape, "CatchEscape"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusFlee, "CatchFlee"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusMissed, "CatchMissed"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchStatusSuccess, "CatchSuccess"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchTypeNormal, "Normal"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchTypeLure, "Lure"),
+            new KeyValuePair<TranslationString, string>(TranslationString.CatchTypeIncense, "Incense"),
+            new KeyValuePair<TranslationString, string>(TranslationString.WebSocketFailStart,
+                "Failed to start WebSocketServer on port : {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.StatsTemplateString,
+                "{0} - Runtime {1} - Lvl: {2} | EXP/H: {3:n0} | P/H: {4:n0} | Stardust: {5:n0} | Transferred: {6:n0} | Recycled: {7:n0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.ProfileStatsTemplateString,
+                "----- LVL {0} | {1} ----- \n Experience: {2}/{3} \n Pokemons caught: {4} \n Pokemons deployed: {5} \n Pokestops visited: {6} \n Eggs hatched: {7} \n Pokemons evolved: {8} \n Pokedex entries: {9} \n KM walked: {10}  \n Pokemons: {11}/{12}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.ShowPokeTemplate,
+                "\n CP: {0} | IV: {1}% | Name: {2}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.HelpTemplate,
+                "Commands: \n \n /top <cp/iv> <amount> - Shows you top Pokemons. \n /all <cp/iv> - Shows you all Pokemons. \n /profile - Shows you profile. \n /loc - Shows you location. \n /items - Shows your items. \n /status - Shows you the Status of the Bot. \n /pokedex - Shows you Pokedex "),
+            new KeyValuePair<TranslationString, string>(TranslationString.StatsXpTemplateString,
+                "{0} (Advance in {1}h {2}m | {3:n0}/{4:n0} XP)"),
+            new KeyValuePair<TranslationString, string>(TranslationString.RequireInputText,
+                "Program will continue after the key press..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.GoogleTwoFactorAuth,
+                "As you have Google Two Factor Auth enabled, you will need to insert an App Specific Password into the auth.json"),
+            new KeyValuePair<TranslationString, string>(TranslationString.GoogleTwoFactorAuthExplanation,
+                "Opening Google App-Passwords. Please make a new App Password (use Other as Device)"),
+            new KeyValuePair<TranslationString, string>(TranslationString.GoogleError,
+                "Make sure you have entered the right Email & Password."),
+            new KeyValuePair<TranslationString, string>(TranslationString.GoogleOffline,
+                "Google servers are probably down, Please be patient and start the bot later."),
+            new KeyValuePair<TranslationString, string>(TranslationString.MissingCredentialsGoogle,
+                "You need to fill out GoogleUsername and GooglePassword in auth.json!"),
+            new KeyValuePair<TranslationString, string>(TranslationString.MissingCredentialsPtc,
+                "You need to fill out PtcUsername and PtcPassword in auth.json!"),
+            new KeyValuePair<TranslationString, string>(TranslationString.SnipeScan,
+                "Scanning for Snipeable Pokemon at {0}..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.SnipeScanEx,
+                "Sniping a {0} with {1} IV at {2}..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.NoPokemonToSnipe,
+                "Did not find a Pokemon within the Location, pokemon despawned?"),
+            new KeyValuePair<TranslationString, string>(TranslationString.NotEnoughPokeballsToSnipe,
+                "Not enough Pokeballs to start sniping! ({0}/{1})"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestMove1Header, "MOVE1"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestMove2Header, "MOVE2"),
+            new KeyValuePair<TranslationString, string>(TranslationString.DisplayHighestCandy, "Candy"),
+            new KeyValuePair<TranslationString, string>(TranslationString.IPBannedError,
+                "Connection refused. Your IP might have been Blacklisted by Niantic. Exiting.."),
+            new KeyValuePair<TranslationString, string>(TranslationString.NoEggsAvailable, "No Eggs Available"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UseLuckyEggActive, "Lucky Egg Already Active"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UsedLuckyEgg, "Used Lucky Egg"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UseLuckyEggAmount,
+                "Lucky Eggs in Inventory: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.NoIncenseAvailable, "No Incense Available"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UseIncenseActive, "Incense Already Active"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UseIncenseAmount, "Incense in Inventory: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.UsedIncense, "Used an Incense"),
+            new KeyValuePair<TranslationString, string>(TranslationString.AmountPkmSeenCaught,
+                "Amount of Pokemon Seen: {0}/151, Amount of Pokemon Caught: {1}/151"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PkmPotentialEvolveCount,
+                "Potential Evolutions: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PkmNotEnoughRessources,
+                "Pokemon Upgrade Failed Not Enough Resources"),
+            new KeyValuePair<TranslationString, string>(TranslationString.SnipeServerOffline,
+                "Sniping server is offline. Skipping..."),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartPrompt,
+                "This is your first start, would you like to begin setup? {0}/{1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartLanguagePrompt,
+                "Would you like to change the default language? {0}/{1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartLanguageCodePrompt,
+                "Please enter a new language code"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartLanguageConfirm,
+                "Language Code Applied: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PromptError,
+                "[INPUT ERROR] Error with input, please enter '{0}' or '{1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartAutoGenSettings,
+                "Config/Auth file automatically generated and must be completed before continuing"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupAccount,
+                "### Setting up new USER ACCOUNT ###"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupTypePrompt,
+                "Please choose an account type: {0}/{1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupTypeConfirm,
+                "Chosen Account Type: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupTypePromptError,
+                "[ERROR] submitted an incorrect account type, please choose '{0}' or '{1}'"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupUsernamePrompt,
+                "Please enter a Username"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupUsernameConfirm,
+                "Accepted username: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupPasswordPrompt,
+                "Please enter a Password"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupPasswordConfirm,
+                "Accepted password: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartAccountCompleted,
+                "### User Account Completed ###"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartDefaultLocationPrompt,
+                "Would you like to setup a new Default Location? {0}/{1}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartDefaultLocationSet,
+                "Default Location Applied"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartDefaultLocation,
+                "### Setting Default Position ###"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupDefaultLocationError,
+                "[ERROR] Please input only a VALUE for example: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupDefaultLatPrompt,
+                "Please enter a Latitude (Right click to paste)"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupDefaultLatConfirm,
+                "Lattitude accepted: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupDefaultLongPrompt,
+                "Please enter a Longitude (Right click to paste)"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupDefaultLongConfirm,
+                "Longitude accepted: {0}"),
+            new KeyValuePair<TranslationString, string>(TranslationString.SoftBanBypassed,
+                "Successfully bypassed!"),
+            new KeyValuePair<TranslationString, string>(TranslationString.FirstStartSetupCompleted,
+                "### COMPLETED CONFIG SETUP ###"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokedexCatchedTelegram,
+                "--- Pokedex catched --- \n"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokedexPokemonCatchedTelegram,
+                "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokedexNeededTelegram,
+                "--- Pokedex needed --- \n"),
+            new KeyValuePair<TranslationString, string>(TranslationString.PokedexPokemonNeededTelegram,
+                "#{0}# Name: {1} \n")
+        };
+
+        public string GetTranslation(TranslationString translationString, params object[] data)
+        {
+            var translation = _translationStrings.FirstOrDefault(t => t.Key.Equals(translationString)).Value;
+            return translation != default(string)
+                ? string.Format(translation, data)
+                : $"Translation for {translationString} is missing";
+        }
+
+        public string GetTranslation(TranslationString translationString)
+        {
+            var translation = _translationStrings.FirstOrDefault(t => t.Key.Equals(translationString)).Value;
+            return translation != default(string) ? translation : $"Translation for {translationString} is missing";
+        }
+
+        public string GetPokemonTranslation(PokemonId id)
+        {
+            var translation = _pokemonTranslationStrings.FirstOrDefault(t => t.Key.Equals(id)).Value;
+            return translation != default(string) ? translation : $"Translation for pokemon {id} is missing";
+        }
+
+        public string GetPokemonMovesetTranslation(PokemonMove move)
+        {
+            var translation = _pokemonMovesetTranslationStrings.FirstOrDefault(t => t.Key.Equals(move)).Value;
+            return translation != default(string) ? translation : $"Translation for move {move} is missing";
+        }
+
+        public static Translation Load(ILogicSettings logicSettings)
+        {
+            return Load(logicSettings, new Translation());
+        }
+
+        public static Translation Load(ILogicSettings logicSettings, Translation translations)
+        {
+            var translationsLanguageCode = logicSettings.TranslationLanguageCode;
+            var translationPath = Path.Combine(logicSettings.GeneralConfigPath, "translations");
+            var fullPath = Path.Combine(translationPath, "translation." + translationsLanguageCode + ".json");
+
+            if (File.Exists(fullPath))
+            {
+                var input = File.ReadAllText(fullPath);
+
+                var jsonSettings = new JsonSerializerSettings();
+                jsonSettings.Converters.Add(new StringEnumConverter {CamelCaseText = true});
+                jsonSettings.ObjectCreationHandling = ObjectCreationHandling.Replace;
+                jsonSettings.DefaultValueHandling = DefaultValueHandling.Populate;
+
+                try
+                {
+                    translations = JsonConvert.DeserializeObject<Translation>(input, jsonSettings);
+                    //TODO make json to fill default values as it won't do it now
+                    new Translation()._translationStrings.Where(
+                        item => translations._translationStrings.All(a => a.Key != item.Key))
+                        .ToList()
+                        .ForEach(translations._translationStrings.Add);
+                    new Translation()._pokemonTranslationStrings.Where(
+                        item => translations._pokemonTranslationStrings.All(a => a.Key != item.Key))
+                        .ToList()
+                        .ForEach(translations._pokemonTranslationStrings.Add);
+                }
+                catch (JsonException ex)
+                {
+                    Logger.Write($"[ERROR] Issue loading translations: {ex}", LogLevel.Warning);
+                    Logger.Write("[Request] Rebuild the translations folder? Y/N");
+
+                    var strInput = Console.ReadLine()?.ToLower();
+
+                    if (strInput == null || strInput.Equals("y"))
+                    {
+                        // Currently this section can only rebuild the EN translations file \\
+                        // This is because default values cannot be supplied from other languages \\
+                        Logger.Write("Loading fresh translations and continuing");
+                        translations = new Translation();
+                        translations.Save(Path.Combine(translationPath, "translation.en.json"));
+                    }
+                    else
+                    {
+                        ErrorHandler.ThrowFatalError("[ERROR] Fatal Error", 3, LogLevel.Error);
+                        return null;
+                    }
+                }
+            }
+            else
+            {
+                translations = new Translation();
+                translations.Save(Path.Combine(translationPath, "translation.en.json"));
+            }
+
+            return translations;
+        }
+
+        public void Save(string fullPath)
+        {
+            var output = JsonConvert.SerializeObject(this, Formatting.Indented,
+                new StringEnumConverter {CamelCaseText = true});
+
+            var folder = Path.GetDirectoryName(fullPath);
+            if (folder != null && !Directory.Exists(folder))
+            {
+                Directory.CreateDirectory(folder);
+            }
+
+            File.WriteAllText(fullPath, output);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/DataDumper/Dumper.cs b/PokemonGo.RocketBot.Logic/DataDumper/Dumper.cs
new file mode 100644
index 0000000..1169d20
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/DataDumper/Dumper.cs
@@ -0,0 +1,74 @@
+#region using directives
+
+using System;
+using System.IO;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.DataDumper
+{
+    public static class Dumper
+    {
+        /// <summary>
+        ///     Clears the specified dumpfile.
+        /// </summary>
+        /// <param name="session"></param>
+        /// <param name="filename" />
+        /// File to clear/param>
+        public static void ClearDumpFile(ISession session, string filename, string extension = "csv")
+        {
+            var path = Path.Combine(session.LogicSettings.ProfilePath, "Dumps");
+            var file = Path.Combine(path,
+                $"RocketBot-{filename}-{DateTime.Today.ToString("yyyy-MM-dd")}-{DateTime.Now.ToString("HH")}.{extension}");
+            if (!Directory.Exists(path)) Directory.CreateDirectory(path);
+
+            // Clears all contents of a file first if overwrite is true
+            File.WriteAllText(file, string.Empty);
+        }
+
+        /// <summary>
+        ///     Dumps data to a file
+        /// </summary>
+        /// <param name="session"></param>
+        /// <param name="data">Dumps the string data to the file</param>
+        /// <param name="filename">Filename to be used for naming the file.</param>
+        /// <param name="extension">FileExt.</param>
+        public static void Dump(ISession session, string data, string filename, string extension = "csv")
+        {
+            string uniqueFileName = $"{filename}";
+
+            DumpToFile(session, data, uniqueFileName, extension);
+        }
+
+        /// <summary>
+        ///     This is used for dumping contents to a file stored in the Logs folder.
+        /// </summary>
+        /// <param name="session"></param>
+        /// <param name="data">Dumps the string data to the file</param>
+        /// <param name="filename">Filename to be used for naming the file.</param>
+        private static void DumpToFile(ISession session, string data, string filename, string extension = "csv")
+        {
+            var path = Path.Combine(session.LogicSettings.ProfilePath, "Dumps",
+                $"RocketBot-{filename}-{DateTime.Today.ToString("yyyy-MM-dd")}-{DateTime.Now.ToString("HH")}.{extension}");
+
+            using (
+                var dumpFile =
+                    File.AppendText(path)
+                )
+            {
+                dumpFile.WriteLine(data);
+                dumpFile.Flush();
+            }
+        }
+
+        /// <summary>
+        ///     Set the dumper.
+        /// </summary>
+        /// <param name="dumper"></param>
+        /// <param name="subPath"></param>
+        public static void SetDumper(IDumper dumper, string subPath = "")
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/DataDumper/IDumper.cs b/PokemonGo.RocketBot.Logic/DataDumper/IDumper.cs
new file mode 100644
index 0000000..b66823a
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/DataDumper/IDumper.cs
@@ -0,0 +1,12 @@
+namespace PokemonGo.RocketBot.Logic.DataDumper
+{
+    public interface IDumper
+    {
+        /// <summary>
+        ///     Dump specific data.
+        /// </summary>
+        /// <param name="data">The data to dump.</param>
+        /// <param name="filename">File to dump to</param>
+        void Dump(string data, string filename);
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/DisplayHighestsPokemonEvent.cs b/PokemonGo.RocketBot.Logic/Event/DisplayHighestsPokemonEvent.cs
new file mode 100644
index 0000000..e73d344
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/DisplayHighestsPokemonEvent.cs
@@ -0,0 +1,18 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using POGOProtos.Data;
+using POGOProtos.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class DisplayHighestsPokemonEvent : IEvent
+    {
+        //PokemonData | CP | IV | Level | MOVE1 | MOVE2 | Candy
+        public List<Tuple<PokemonData, int, double, double, PokemonMove, PokemonMove, int>> PokemonList;
+        public string SortedBy;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/EggHatchedEvent.cs b/PokemonGo.RocketBot.Logic/Event/EggHatchedEvent.cs
new file mode 100644
index 0000000..f4f38b5
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/EggHatchedEvent.cs
@@ -0,0 +1,18 @@
+#region using directives
+
+using POGOProtos.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class EggHatchedEvent : IEvent
+    {
+        public int Cp;
+        public ulong Id;
+        public double Level;
+        public int MaxCp;
+        public double Perfection;
+        public PokemonId PokemonId;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/EggIncubatorStatusEvent.cs b/PokemonGo.RocketBot.Logic/Event/EggIncubatorStatusEvent.cs
new file mode 100644
index 0000000..873542e
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/EggIncubatorStatusEvent.cs
@@ -0,0 +1,12 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class EggIncubatorStatusEvent : IEvent
+    {
+        public string IncubatorId;
+        public double KmRemaining;
+        public double KmToWalk;
+        public ulong PokemonId;
+        public bool WasAddedNow;
+        public double KmWalked => KmToWalk - KmRemaining;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/EggsListEvent.cs b/PokemonGo.RocketBot.Logic/Event/EggsListEvent.cs
new file mode 100644
index 0000000..8179aca
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/EggsListEvent.cs
@@ -0,0 +1,16 @@
+#region using directives
+
+using System.Collections.Generic;
+using POGOProtos.Inventory;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class EggsListEvent : IEvent
+    {
+        public float PlayerKmWalked { get; set; }
+        public List<EggIncubator> Incubators { get; set; }
+        public object UnusedEggs { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/ErrorEvent.cs b/PokemonGo.RocketBot.Logic/Event/ErrorEvent.cs
new file mode 100644
index 0000000..6b1c4bc
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/ErrorEvent.cs
@@ -0,0 +1,12 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class ErrorEvent : IEvent
+    {
+        public string Message = "";
+
+        public override string ToString()
+        {
+            return Message;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/EventDispatcher.cs b/PokemonGo.RocketBot.Logic/Event/EventDispatcher.cs
new file mode 100644
index 0000000..cb8e408
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/EventDispatcher.cs
@@ -0,0 +1,20 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public delegate void EventDelegate(IEvent evt);
+
+    public interface IEventDispatcher
+    {
+        event EventDelegate EventReceived;
+        void Send(IEvent evt);
+    }
+
+    public class EventDispatcher : IEventDispatcher
+    {
+        public event EventDelegate EventReceived;
+
+        public void Send(IEvent evt)
+        {
+            EventReceived?.Invoke(evt);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/EvolveCountEvent.cs b/PokemonGo.RocketBot.Logic/Event/EvolveCountEvent.cs
new file mode 100644
index 0000000..62b2c91
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/EvolveCountEvent.cs
@@ -0,0 +1,7 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class EvolveCountEvent : IEvent
+    {
+        public int Evolves;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/FortFailedEvent.cs b/PokemonGo.RocketBot.Logic/Event/FortFailedEvent.cs
new file mode 100644
index 0000000..4969f03
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/FortFailedEvent.cs
@@ -0,0 +1,10 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class FortFailedEvent : IEvent
+    {
+        public bool Looted;
+        public int Max;
+        public string Name;
+        public int Try;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/FortTargetEvent.cs b/PokemonGo.RocketBot.Logic/Event/FortTargetEvent.cs
new file mode 100644
index 0000000..267f64a
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/FortTargetEvent.cs
@@ -0,0 +1,8 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class FortTargetEvent : IEvent
+    {
+        public double Distance;
+        public string Name;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/FortUsedEvent.cs b/PokemonGo.RocketBot.Logic/Event/FortUsedEvent.cs
new file mode 100644
index 0000000..c797a41
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/FortUsedEvent.cs
@@ -0,0 +1,14 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class FortUsedEvent : IEvent
+    {
+        public int Exp;
+        public int Gems;
+        public string Id;
+        public bool InventoryFull;
+        public string Items;
+        public double Latitude;
+        public double Longitude;
+        public string Name;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/GetHumanizeRouteEvent.cs b/PokemonGo.RocketBot.Logic/Event/GetHumanizeRouteEvent.cs
new file mode 100644
index 0000000..9fff3e0
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/GetHumanizeRouteEvent.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using GeoCoordinatePortable;
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class GetHumanizeRouteEvent : IEvent
+    {
+        public GeoCoordinate Destination;
+        public List<GeoCoordinate> Route;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/HumanWalkingEvent.cs b/PokemonGo.RocketBot.Logic/Event/HumanWalkingEvent.cs
new file mode 100644
index 0000000..12e99a8
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/HumanWalkingEvent.cs
@@ -0,0 +1,8 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class HumanWalkingEvent : IEvent
+    {
+        public double CurrentWalkingSpeed;
+        public double OldWalkingSpeed;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/IEvent.cs b/PokemonGo.RocketBot.Logic/Event/IEvent.cs
new file mode 100644
index 0000000..90629ba
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/IEvent.cs
@@ -0,0 +1,6 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public interface IEvent
+    {
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/InventoryListEvent.cs b/PokemonGo.RocketBot.Logic/Event/InventoryListEvent.cs
new file mode 100644
index 0000000..4331027
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/InventoryListEvent.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+using POGOProtos.Inventory.Item;
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class InventoryListEvent : IEvent
+    {
+        public List<ItemData> Items;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/ItemRecycledEvent.cs b/PokemonGo.RocketBot.Logic/Event/ItemRecycledEvent.cs
new file mode 100644
index 0000000..0d6e73a
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/ItemRecycledEvent.cs
@@ -0,0 +1,14 @@
+#region using directives
+
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class ItemRecycledEvent : IEvent
+    {
+        public int Count;
+        public ItemId Id;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/LootPokestopEvent.cs b/PokemonGo.RocketBot.Logic/Event/LootPokestopEvent.cs
new file mode 100644
index 0000000..1f9ff0f
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/LootPokestopEvent.cs
@@ -0,0 +1,9 @@
+using POGOProtos.Map.Fort;
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class LootPokestopEvent : IEvent
+    {
+        public FortData Pokestop;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/NoPokeballEvent.cs b/PokemonGo.RocketBot.Logic/Event/NoPokeballEvent.cs
new file mode 100644
index 0000000..2040f04
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/NoPokeballEvent.cs
@@ -0,0 +1,14 @@
+#region using directives
+
+using POGOProtos.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class NoPokeballEvent : IEvent
+    {
+        public int Cp;
+        public PokemonId Id;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/NoticeEvent.cs b/PokemonGo.RocketBot.Logic/Event/NoticeEvent.cs
new file mode 100644
index 0000000..e23ef80
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/NoticeEvent.cs
@@ -0,0 +1,12 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class NoticeEvent : IEvent
+    {
+        public string Message = "";
+
+        public override string ToString()
+        {
+            return Message;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/OptimizeRouteEvent.cs b/PokemonGo.RocketBot.Logic/Event/OptimizeRouteEvent.cs
new file mode 100644
index 0000000..3495fb2
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/OptimizeRouteEvent.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+using POGOProtos.Map.Fort;
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class OptimizeRouteEvent : IEvent
+    {
+        public List<FortData> OptimizedRoute { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/PokeStopListEvent.cs b/PokemonGo.RocketBot.Logic/Event/PokeStopListEvent.cs
new file mode 100644
index 0000000..c25313b
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/PokeStopListEvent.cs
@@ -0,0 +1,14 @@
+#region using directives
+
+using System.Collections.Generic;
+using POGOProtos.Map.Fort;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class PokeStopListEvent : IEvent
+    {
+        public List<FortData> Forts;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/PokemonCaptureEvent.cs b/PokemonGo.RocketBot.Logic/Event/PokemonCaptureEvent.cs
new file mode 100644
index 0000000..15ea705
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/PokemonCaptureEvent.cs
@@ -0,0 +1,31 @@
+#region using directives
+
+using POGOProtos.Enums;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class PokemonCaptureEvent : IEvent
+    {
+        public int Attempt;
+        public int BallAmount;
+        public string CatchType;
+        public int Cp;
+        public double Distance;
+        public int Exp;
+        public int FamilyCandies;
+        public PokemonId Id;
+        public double Latitude;
+        public double Level;
+        public double Longitude;
+        public int MaxCp;
+        public double Perfection;
+        public ItemId Pokeball;
+        public double Probability;
+        public int Stardust;
+        public CatchPokemonResponse.Types.CatchStatus Status;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/PokemonEvolveEvent.cs b/PokemonGo.RocketBot.Logic/Event/PokemonEvolveEvent.cs
new file mode 100644
index 0000000..c123d7e
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/PokemonEvolveEvent.cs
@@ -0,0 +1,16 @@
+#region using directives
+
+using POGOProtos.Enums;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class PokemonEvolveEvent : IEvent
+    {
+        public int Exp;
+        public PokemonId Id;
+        public EvolvePokemonResponse.Types.Result Result;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/PokemonListEvent.cs b/PokemonGo.RocketBot.Logic/Event/PokemonListEvent.cs
new file mode 100644
index 0000000..647eada
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/PokemonListEvent.cs
@@ -0,0 +1,15 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using POGOProtos.Data;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class PokemonListEvent : IEvent
+    {
+        public List<Tuple<PokemonData, double, int>> PokemonList;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/PokemonsEncounterEvent.cs b/PokemonGo.RocketBot.Logic/Event/PokemonsEncounterEvent.cs
new file mode 100644
index 0000000..d46507b
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/PokemonsEncounterEvent.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+using POGOProtos.Map.Pokemon;
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class PokemonsEncounterEvent : IEvent
+    {
+        public List<MapPokemon> EncounterPokemons;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/ProfileEvent.cs b/PokemonGo.RocketBot.Logic/Event/ProfileEvent.cs
new file mode 100644
index 0000000..b9fd444
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/ProfileEvent.cs
@@ -0,0 +1,13 @@
+#region using directives
+
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class ProfileEvent : IEvent
+    {
+        public GetPlayerResponse Profile;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/SnipeEvent.cs b/PokemonGo.RocketBot.Logic/Event/SnipeEvent.cs
new file mode 100644
index 0000000..5b8b8c1
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/SnipeEvent.cs
@@ -0,0 +1,12 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class SnipeEvent : IEvent
+    {
+        public string Message = "";
+
+        public override string ToString()
+        {
+            return Message;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/SnipeModeEvent.cs b/PokemonGo.RocketBot.Logic/Event/SnipeModeEvent.cs
new file mode 100644
index 0000000..68fa037
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/SnipeModeEvent.cs
@@ -0,0 +1,7 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class SnipeModeEvent : IEvent
+    {
+        public bool Active;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/SnipeScanEvent.cs b/PokemonGo.RocketBot.Logic/Event/SnipeScanEvent.cs
new file mode 100644
index 0000000..ee25c12
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/SnipeScanEvent.cs
@@ -0,0 +1,16 @@
+#region using directives
+
+using POGOProtos.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class SnipeScanEvent : IEvent
+    {
+        public Location Bounds { get; set; }
+        public PokemonId PokemonId { get; set; }
+        public double Iv { get; set; }
+        public string Source { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/TransferPokemonEvent.cs b/PokemonGo.RocketBot.Logic/Event/TransferPokemonEvent.cs
new file mode 100644
index 0000000..8a81856
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/TransferPokemonEvent.cs
@@ -0,0 +1,18 @@
+#region using directives
+
+using POGOProtos.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class TransferPokemonEvent : IEvent
+    {
+        public int BestCp;
+        public double BestPerfection;
+        public int Cp;
+        public int FamilyCandies;
+        public PokemonId Id;
+        public double Perfection;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/UpdateEvent.cs b/PokemonGo.RocketBot.Logic/Event/UpdateEvent.cs
new file mode 100644
index 0000000..a96b537
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/UpdateEvent.cs
@@ -0,0 +1,12 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class UpdateEvent : IEvent
+    {
+        public string Message = "";
+
+        public override string ToString()
+        {
+            return Message;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/UpdatePositionEvent.cs b/PokemonGo.RocketBot.Logic/Event/UpdatePositionEvent.cs
new file mode 100644
index 0000000..cb3007c
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/UpdatePositionEvent.cs
@@ -0,0 +1,8 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class UpdatePositionEvent : IEvent
+    {
+        public double Latitude;
+        public double Longitude;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/UseBerryEvent.cs b/PokemonGo.RocketBot.Logic/Event/UseBerryEvent.cs
new file mode 100644
index 0000000..b0c8a0f
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/UseBerryEvent.cs
@@ -0,0 +1,10 @@
+using POGOProtos.Inventory.Item;
+
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class UseBerryEvent : IEvent
+    {
+        public ItemId BerryType;
+        public int Count;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/UseLuckyEggEvent.cs b/PokemonGo.RocketBot.Logic/Event/UseLuckyEggEvent.cs
new file mode 100644
index 0000000..98e96d4
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/UseLuckyEggEvent.cs
@@ -0,0 +1,7 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class UseLuckyEggEvent : IEvent
+    {
+        public int Count;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Event/WarnEvent.cs b/PokemonGo.RocketBot.Logic/Event/WarnEvent.cs
new file mode 100644
index 0000000..7a75935
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Event/WarnEvent.cs
@@ -0,0 +1,17 @@
+namespace PokemonGo.RocketBot.Logic.Event
+{
+    public class WarnEvent : IEvent
+    {
+        public string Message = "";
+
+        /// <summary>
+        ///     This event requires handler to perform input
+        /// </summary>
+        public bool RequireInput;
+
+        public override string ToString()
+        {
+            return Message;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/ILogicSettings.cs b/PokemonGo.RocketBot.Logic/ILogicSettings.cs
new file mode 100644
index 0000000..687b3e7
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/ILogicSettings.cs
@@ -0,0 +1,203 @@
+#region using directives
+
+using System.Collections.Generic;
+using POGOProtos.Enums;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic
+{
+    public class Location
+    {
+        public Location()
+        {
+        }
+
+        public Location(double latitude, double longitude)
+        {
+            Latitude = latitude;
+            Longitude = longitude;
+        }
+
+        public double Latitude { get; set; }
+        public double Longitude { get; set; }
+    }
+
+    public class SnipeSettings
+    {
+        public SnipeSettings()
+        {
+        }
+
+        public SnipeSettings(List<Location> locations, List<PokemonId> pokemon)
+        {
+            Locations = locations;
+            Pokemon = pokemon;
+        }
+
+        public List<Location> Locations { get; set; }
+        public List<PokemonId> Pokemon { get; set; }
+    }
+
+    public class TransferFilter
+    {
+        public TransferFilter()
+        {
+        }
+
+        public TransferFilter(int keepMinCp, int keepMinLvl, bool useKeepMinLvl, float keepMinIvPercentage,
+            string keepMinOperator, int keepMinDuplicatePokemon,
+            List<PokemonMove> moves = null, string movesOperator = "or")
+        {
+            KeepMinCp = keepMinCp;
+            KeepMinLvl = keepMinLvl;
+            UseKeepMinLvl = useKeepMinLvl;
+            KeepMinIvPercentage = keepMinIvPercentage;
+            KeepMinDuplicatePokemon = keepMinDuplicatePokemon;
+            KeepMinOperator = keepMinOperator;
+            Moves = moves ?? new List<PokemonMove>();
+            MovesOperator = movesOperator;
+        }
+
+        public int KeepMinCp { get; set; }
+        public int KeepMinLvl { get; set; }
+        public bool UseKeepMinLvl { get; set; }
+        public float KeepMinIvPercentage { get; set; }
+        public int KeepMinDuplicatePokemon { get; set; }
+        public List<PokemonMove> Moves { get; set; }
+        public string KeepMinOperator { get; set; }
+        public string MovesOperator { get; set; }
+    }
+
+    public interface ILogicSettings
+    {
+        string GoogleApiKey { get; }
+        bool UseWebsocket { get; }
+        bool CatchPokemon { get; }
+        bool TransferWeakPokemon { get; }
+        bool DisableHumanWalking { get; }
+        bool AutoUpdate { get; }
+        bool TransferConfigAndAuthOnUpdate { get; }
+        float KeepMinIvPercentage { get; }
+        int KeepMinCp { get; }
+        int KeepMinLvl { get; }
+        bool UseKeepMinLvl { get; }
+        string KeepMinOperator { get; }
+        double WalkingSpeedInKilometerPerHour { get; }
+        bool UseWalkingSpeedVariant { get; }
+        double WalkingSpeedVariant { get; }
+        bool ShowVariantWalking { get; }
+        bool FastSoftBanBypass { get; }
+        bool EvolveAllPokemonWithEnoughCandy { get; }
+        bool KeepPokemonsThatCanEvolve { get; }
+        bool TransferDuplicatePokemon { get; }
+        bool TransferDuplicatePokemonOnCapture { get; }
+        bool UseEggIncubators { get; }
+        int UseGreatBallAboveCp { get; }
+        int UseUltraBallAboveCp { get; }
+        int UseMasterBallAboveCp { get; }
+        double UseGreatBallAboveIv { get; }
+        double UseUltraBallAboveIv { get; }
+        double UseMasterBallBelowCatchProbability { get; }
+        double UseUltraBallBelowCatchProbability { get; }
+        double UseGreatBallBelowCatchProbability { get; }
+        bool EnableHumanizedThrows { get; }
+        int NiceThrowChance { get; }
+        int GreatThrowChance { get; }
+        int ExcellentThrowChance { get; }
+        int CurveThrowChance { get; }
+        double ForceGreatThrowOverIv { get; }
+        double ForceExcellentThrowOverIv { get; }
+        int ForceGreatThrowOverCp { get; }
+        int ForceExcellentThrowOverCp { get; }
+
+        int DelayBetweenPokemonCatch { get; }
+        bool AutomaticallyLevelUpPokemon { get; }
+        bool OnlyUpgradeFavorites { get; }
+        bool UseLevelUpList { get; }
+        string LevelUpByCPorIv { get; }
+        float UpgradePokemonCpMinimum { get; }
+        float UpgradePokemonIvMinimum { get; }
+        int DelayBetweenPlayerActions { get; }
+        bool UsePokemonToNotCatchFilter { get; }
+        bool UsePokemonSniperFilterOnly { get; }
+        int KeepMinDuplicatePokemon { get; }
+        bool PrioritizeIvOverCp { get; }
+        int AmountOfTimesToUpgradeLoop { get; }
+
+        int GetMinStarDustForLevelUp { get; }
+        bool UseLuckyEggConstantly { get; }
+        int MaxBerriesToUsePerPokemon { get; }
+        bool UseIncenseConstantly { get; }
+        int UseBerriesMinCp { get; }
+        float UseBerriesMinIv { get; }
+        double UseBerriesBelowCatchProbability { get; }
+        string UseBerriesOperator { get; }
+        string UpgradePokemonMinimumStatsOperator { get; }
+        int MaxTravelDistanceInMeters { get; }
+        bool UseGpxPathing { get; }
+        string GpxFile { get; }
+        bool UseLuckyEggsWhileEvolving { get; }
+        int UseLuckyEggsMinPokemonAmount { get; }
+        bool EvolveAllPokemonAboveIv { get; }
+        float EvolveAboveIvValue { get; }
+        bool DumpPokemonStats { get; }
+        bool RenamePokemon { get; }
+        bool RenameOnlyAboveIv { get; }
+        float FavoriteMinIvPercentage { get; }
+        bool AutoFavoritePokemon { get; }
+        string RenameTemplate { get; }
+        int AmountOfPokemonToDisplayOnStart { get; }
+        string TranslationLanguageCode { get; }
+        string ProfilePath { get; }
+        string ProfileConfigPath { get; }
+        string GeneralConfigPath { get; }
+        bool SnipeAtPokestops { get; }
+        bool UseTelegramAPI { get; }
+        string TelegramAPIKey { get; }
+        int MinPokeballsToSnipe { get; }
+        int MinPokeballsWhileSnipe { get; }
+        int MaxPokeballsPerPokemon { get; }
+        string SnipeLocationServer { get; }
+        int SnipeLocationServerPort { get; }
+        bool GetSniperInfoFromPokezz { get; }
+        bool GetOnlyVerifiedSniperInfoFromPokezz { get; }
+        bool GetSniperInfoFromPokeSnipers { get; }
+        bool GetSniperInfoFromPokeWatchers { get; }
+        bool SnipeWithSkiplagged { get; }
+        bool UseSnipeLocationServer { get; }
+        bool UseTransferIvForSnipe { get; }
+        bool SnipeIgnoreUnknownIv { get; }
+        int MinDelayBetweenSnipes { get; }
+        double SnipingScanOffset { get; }
+        bool SnipePokemonNotInPokedex { get; }
+        bool RandomizeRecycle { get; }
+        int RandomRecycleValue { get; }
+        int DelayBetweenRecycle{ get; }
+        int TotalAmountOfPokeballsToKeep { get; }
+        int TotalAmountOfPotionsToKeep { get; }
+        int TotalAmountOfRevivesToKeep { get; }
+        int TotalAmountOfBerriesToKeep { get; }
+
+        bool DetailedCountsBeforeRecycling { get; }
+        bool VerboseRecycling { get; }
+        double RecycleInventoryAtUsagePercentage { get; }
+        double EvolveKeptPokemonsAtStorageUsagePercentage { get; }
+        ICollection<KeyValuePair<ItemId, int>> ItemRecycleFilter { get; }
+
+        ICollection<PokemonId> PokemonsToEvolve { get; }
+        ICollection<PokemonId> PokemonsToLevelUp { get; }
+
+        ICollection<PokemonId> PokemonsNotToTransfer { get; }
+
+        ICollection<PokemonId> PokemonsNotToCatch { get; }
+
+        ICollection<PokemonId> PokemonToUseMasterball { get; }
+
+        Dictionary<PokemonId, TransferFilter> PokemonsTransferFilter { get; }
+        SnipeSettings PokemonToSnipe { get; }
+
+        bool StartupWelcomeDelay { get; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Inventory.cs b/PokemonGo.RocketBot.Logic/Inventory.cs
new file mode 100644
index 0000000..67319d9
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Inventory.cs
@@ -0,0 +1,550 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketAPI;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Data;
+using POGOProtos.Data.Player;
+using POGOProtos.Enums;
+using POGOProtos.Inventory;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+using POGOProtos.Settings.Master;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic
+{
+    public class Inventory
+    {
+        private readonly Client _client;
+        private readonly ILogicSettings _logicSettings;
+
+        private readonly List<ItemId> _pokeballs = new List<ItemId>
+        {
+            ItemId.ItemPokeBall,
+            ItemId.ItemGreatBall,
+            ItemId.ItemUltraBall,
+            ItemId.ItemMasterBall
+        };
+
+        private readonly List<ItemId> _potions = new List<ItemId>
+        {
+            ItemId.ItemPotion,
+            ItemId.ItemSuperPotion,
+            ItemId.ItemHyperPotion,
+            ItemId.ItemMaxPotion
+        };
+
+        private readonly List<ItemId> _revives = new List<ItemId> {ItemId.ItemRevive, ItemId.ItemMaxRevive};
+        private GetInventoryResponse _cachedInventory;
+        private DateTime _lastRefresh;
+        private int _level;
+        private GetPlayerResponse _player;
+        private IEnumerable<PokemonSettings> _pokemonSettings;
+        private DownloadItemTemplatesResponse _templates;
+
+        public Inventory(Client client, ILogicSettings logicSettings)
+        {
+            _client = client;
+            _logicSettings = logicSettings;
+        }
+
+        public async Task DeletePokemonFromInvById(ulong id)
+        {
+            var inventory = await GetCachedInventory();
+            var pokemon =
+                inventory.InventoryDelta.InventoryItems.FirstOrDefault(
+                    i => i.InventoryItemData.PokemonData != null && i.InventoryItemData.PokemonData.Id == id);
+            if (pokemon != null)
+                inventory.InventoryDelta.InventoryItems.Remove(pokemon);
+        }
+
+        public async Task<LevelUpRewardsResponse> GetLevelUpRewards(Inventory inv)
+        {
+            return await GetLevelUpRewards(inv.GetPlayerStats().Result.FirstOrDefault().Level);
+        }
+
+        public async Task<GetInventoryResponse> GetCachedInventory()
+        {
+            if (_player == null) GetPlayerData();
+            var now = DateTime.UtcNow;
+
+            if (_lastRefresh.AddSeconds(30).Ticks > now.Ticks)
+                return _cachedInventory;
+
+            return await RefreshCachedInventory();
+        }
+
+
+        public async Task<IEnumerable<PokemonData>> GetDuplicatePokemonToTransfer(
+            IEnumerable<PokemonId> pokemonsNotToTransfer, IEnumerable<PokemonId> pokemonsToEvolve,
+            bool keepPokemonsThatCanEvolve = false, bool prioritizeIVoverCp = false
+            )
+        {
+            var myPokemon = await GetPokemons();
+
+            var myPokemonList = myPokemon.ToList();
+
+            var pokemonToTransfer =
+                myPokemonList.Where(
+                    p =>
+                        !pokemonsNotToTransfer.Contains(p.PokemonId) && p.DeployedFortId == string.Empty &&
+                        p.Favorite == 0).ToList();
+
+            try
+            {
+                pokemonToTransfer =
+                    pokemonToTransfer.Where(
+                        p =>
+                        {
+                            var pokemonTransferFilter = GetPokemonTransferFilter(p.PokemonId);
+
+                            return
+                                !pokemonTransferFilter.MovesOperator.BoolFunc(
+                                    pokemonTransferFilter.Moves.Intersect(new[] {p.Move1, p.Move2}).Any(),
+                                    pokemonTransferFilter.KeepMinOperator.BoolFunc(
+                                        p.Cp >= pokemonTransferFilter.KeepMinCp,
+                                        PokemonInfo.CalculatePokemonPerfection(p) >=
+                                        pokemonTransferFilter.KeepMinIvPercentage,
+                                        pokemonTransferFilter.KeepMinOperator.ReverseBoolFunc(
+                                            pokemonTransferFilter.KeepMinOperator.InverseBool(
+                                                pokemonTransferFilter.UseKeepMinLvl),
+                                            PokemonInfo.GetLevel(p) >= pokemonTransferFilter.KeepMinLvl)));
+                        }).ToList();
+            }
+            catch (Exception e)
+            {
+                throw e;
+            }
+
+            var myPokemonSettings = await GetPokemonSettings();
+            var pokemonSettings = myPokemonSettings.ToList();
+
+            var myPokemonFamilies = await GetPokemonFamilies();
+            var pokemonFamilies = myPokemonFamilies.ToArray();
+
+            var results = new List<PokemonData>();
+
+            foreach (var pokemonGroupToTransfer in pokemonToTransfer.GroupBy(p => p.PokemonId).ToList())
+            {
+                var amountToKeepInStorage =
+                    Math.Max(GetPokemonTransferFilter(pokemonGroupToTransfer.Key).KeepMinDuplicatePokemon, 0);
+
+                var settings = pokemonSettings.Single(x => x.PokemonId == pokemonGroupToTransfer.Key);
+                var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId);
+
+                int? modFromEvolve = null;
+
+                if (keepPokemonsThatCanEvolve &&
+                    pokemonsToEvolve.Contains(pokemonGroupToTransfer.Key) &&
+                    settings.CandyToEvolve > 0 &&
+                    settings.EvolutionIds.Count != 0)
+                {
+                    var possibleCountToEvolve = familyCandy.Candy_/settings.CandyToEvolve;
+                    amountToKeepInStorage = Math.Max(amountToKeepInStorage, possibleCountToEvolve);
+
+                    //remain candy
+                    modFromEvolve = familyCandy.Candy_%settings.CandyToEvolve;
+                }
+
+                var inStorage = myPokemonList.Count(data => data.PokemonId == pokemonGroupToTransfer.Key);
+
+                var weakPokemonCount = pokemonGroupToTransfer.Count();
+
+                var needToRemove = inStorage - amountToKeepInStorage;
+                if (needToRemove <= 0)
+                    continue;
+
+                var canBeRemoved = Math.Min(needToRemove, weakPokemonCount);
+
+                if (canBeRemoved <= 0)
+                    continue;
+
+                //Lets calc new canBeRemoved pokemons according to transferring some of them and use it as future candy to keepPokemonsThatCanEvolve
+                if (modFromEvolve.HasValue)
+                {
+                    // its an solution in fixed numbers of equations with two variables
+                    // (N = X + Y, X + C >= Y * E) -> (X >= (N * E - C / 1 + E)
+                    // where N - current canBeRemoved,  X - new canBeRemoved, Y - possible to keep more, E - CandyToEvolve, C - modFromEvolve(remain candy) ) )
+                    canBeRemoved = (settings.CandyToEvolve*canBeRemoved - modFromEvolve.Value)/
+                                   (1 + settings.CandyToEvolve) +
+                                   Math.Sign((settings.CandyToEvolve*canBeRemoved - modFromEvolve.Value)%
+                                             (1 + settings.CandyToEvolve));
+                }
+
+                var skipCount = weakPokemonCount - canBeRemoved;
+
+                if (prioritizeIVoverCp)
+                {
+                    results.AddRange(pokemonGroupToTransfer
+                        .OrderByDescending(PokemonInfo.CalculatePokemonPerfection)
+                        .ThenByDescending(n => n.Cp)
+                        .Skip(skipCount));
+                }
+                else
+                {
+                    results.AddRange(pokemonGroupToTransfer
+                        .OrderByDescending(x => x.Cp)
+                        .ThenByDescending(PokemonInfo.CalculatePokemonPerfection)
+                        .Skip(skipCount));
+                }
+            }
+
+            #region For testing
+
+            /*
+            results.ForEach(data =>
+            {
+                var bestPokemonOfType = (_logicSettings.PrioritizeIvOverCp
+                 ? myPokemonList.Where(x => x.PokemonId == data.PokemonId)
+                .OrderByDescending(x => x.Cp)
+                .FirstOrDefault()
+                 : myPokemonList.Where(x => x.PokemonId == data.PokemonId)
+                .OrderByDescending(PokemonInfo.CalculatePokemonPerfection)
+                .FirstOrDefault()) ?? data;
+
+                var perfection = PokemonInfo.CalculatePokemonPerfection(data);
+                var cp = data.Cp;
+
+                var bestPerfection = PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType);
+                var bestCp = bestPokemonOfType.Cp;
+            });
+            */
+
+            #endregion
+
+            return results;
+        }
+
+        public async Task<IEnumerable<EggIncubator>> GetEggIncubators()
+        {
+            var inventory = await GetCachedInventory();
+            return
+                inventory.InventoryDelta.InventoryItems
+                    .Where(x => x.InventoryItemData.EggIncubators != null)
+                    .SelectMany(i => i.InventoryItemData.EggIncubators.EggIncubator)
+                    .Where(i => i != null);
+        }
+
+        public async Task<IEnumerable<PokemonData>> GetEggs()
+        {
+            var inventory = await GetCachedInventory();
+            return
+                inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonData)
+                    .Where(p => p != null && p.IsEgg);
+        }
+
+        public async Task<PokemonData> GetHighestPokemonOfTypeByCp(PokemonData pokemon)
+        {
+            var myPokemon = await GetPokemons();
+            var pokemons = myPokemon.ToList();
+            return pokemons.Where(x => x.PokemonId == pokemon.PokemonId)
+                .OrderByDescending(x => x.Cp)
+                .FirstOrDefault();
+        }
+
+        public int GetStarDust()
+        {
+            GetPlayerData();
+            return _player.PlayerData.Currencies[1].Amount;
+        }
+
+        public async void GetPlayerData()
+        {
+            _player = await _client.Player.GetPlayer();
+        }
+
+        public async Task<PokemonData> GetHighestPokemonOfTypeByIv(PokemonData pokemon)
+        {
+            var myPokemon = await GetPokemons();
+            var pokemons = myPokemon.ToList();
+            return pokemons.Where(x => x.PokemonId == pokemon.PokemonId)
+                .OrderByDescending(PokemonInfo.CalculatePokemonPerfection)
+                .FirstOrDefault();
+        }
+
+        public async Task<IEnumerable<PokemonData>> GetHighestsCp(int limit)
+        {
+            var myPokemon = await GetPokemons();
+            var pokemons = myPokemon.ToList();
+            return pokemons.OrderByDescending(x => x.Cp).ThenBy(n => n.StaminaMax).Take(limit);
+        }
+
+        public async Task<IEnumerable<PokemonData>> GetHighestsPerfect(int limit)
+        {
+            var myPokemon = await GetPokemons();
+            var pokemons = myPokemon.ToList();
+            return pokemons.OrderByDescending(PokemonInfo.CalculatePokemonPerfection).Take(limit);
+        }
+
+        public async Task<int> GetItemAmountByType(ItemId type)
+        {
+            var pokeballs = await GetItems();
+            return pokeballs.FirstOrDefault(i => i.ItemId == type)?.Count ?? 0;
+        }
+
+        public async Task<IEnumerable<ItemData>> GetItems()
+        {
+            var inventory = await GetCachedInventory();
+            return inventory.InventoryDelta.InventoryItems
+                .Select(i => i.InventoryItemData?.Item)
+                .Where(p => p != null);
+        }
+
+        public async Task<IEnumerable<AppliedItems>> GetAppliedItems()
+        {
+            var inventory = await GetCachedInventory();
+            return
+                inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.AppliedItems)
+                    .Where(p => p != null);
+        }
+
+        public async Task<int> GetTotalItemCount()
+        {
+            var myItems = (await GetItems()).ToList();
+            var myItemCount = 0;
+            foreach (var myItem in myItems) myItemCount += myItem.Count;
+            return myItemCount;
+        }
+
+        public async Task<IEnumerable<ItemData>> GetItemsToRecycle(ISession session)
+        {
+            var itemsToRecycle = new List<ItemData>();
+            var myItems = (await GetItems()).ToList();
+            if (myItems == null)
+                return itemsToRecycle;
+
+            var otherItemsToRecycle = myItems
+                .Where(x => _logicSettings.ItemRecycleFilter.Any(f => f.Key == x.ItemId && x.Count > f.Value))
+                .Select(
+                    x =>
+                        new ItemData
+                        {
+                            ItemId = x.ItemId,
+                            Count = x.Count - _logicSettings.ItemRecycleFilter.Single(f => f.Key == x.ItemId).Value,
+                            Unseen = x.Unseen
+                        });
+
+            itemsToRecycle.AddRange(otherItemsToRecycle);
+
+            return itemsToRecycle;
+        }
+
+        public double GetPerfect(PokemonData poke)
+        {
+            var result = PokemonInfo.CalculatePokemonPerfection(poke);
+            return result;
+        }
+
+        public async Task<IEnumerable<PlayerStats>> GetPlayerStats()
+        {
+            var inventory = await GetCachedInventory();
+            return inventory.InventoryDelta.InventoryItems
+                .Select(i => i.InventoryItemData?.PlayerStats)
+                .Where(p => p != null);
+        }
+
+        public async Task<UseItemXpBoostResponse> UseLuckyEggConstantly()
+        {
+            var UseLuckyEgg = await _client.Inventory.UseItemXpBoost();
+            return UseLuckyEgg;
+        }
+
+        public async Task<UseIncenseResponse> UseIncenseConstantly()
+        {
+            var UseIncense = await _client.Inventory.UseIncense(ItemId.ItemIncenseOrdinary);
+            return UseIncense;
+        }
+
+        public async Task<List<InventoryItem>> GetPokeDexItems()
+        {
+            var PokeDex = new List<InventoryItem>();
+            var inventory = await _client.Inventory.GetInventory();
+
+            return (from items in inventory.InventoryDelta.InventoryItems
+                where items.InventoryItemData?.PokedexEntry != null
+                select items).ToList();
+        }
+
+        public async Task<List<Candy>> GetPokemonFamilies()
+        {
+            var inventory = await GetCachedInventory();
+
+            var families = from item in inventory.InventoryDelta.InventoryItems
+                where item.InventoryItemData?.Candy != null
+                where item.InventoryItemData?.Candy.FamilyId != PokemonFamilyId.FamilyUnset
+                group item by item.InventoryItemData?.Candy.FamilyId
+                into family
+                select new Candy
+                {
+                    FamilyId = family.First().InventoryItemData.Candy.FamilyId,
+                    Candy_ = family.First().InventoryItemData.Candy.Candy_
+                };
+
+
+            return families.ToList();
+        }
+
+        public async Task<IEnumerable<PokemonData>> GetPokemons()
+        {
+            var inventory = await GetCachedInventory();
+            return
+                inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonData)
+                    .Where(p => p != null && p.PokemonId > 0);
+        }
+
+        public async Task<IEnumerable<PokemonData>> GetFaveriotPokemon()
+        {
+            var inventory = await GetPokemons();
+            return
+                inventory.Where(i => i.Favorite == 1);
+        }
+
+        public async Task<IEnumerable<PokemonSettings>> GetPokemonSettings()
+        {
+            if (_templates == null || _pokemonSettings == null)
+            {
+                _templates = await _client.Download.GetItemTemplates();
+                _pokemonSettings =
+                    _templates.ItemTemplates.Select(i => i.PokemonSettings)
+                        .Where(p => p != null && p.FamilyId != PokemonFamilyId.FamilyUnset);
+            }
+
+            return _pokemonSettings;
+        }
+
+        public async Task<IEnumerable<PokemonData>> GetPokemonToEvolve(IEnumerable<PokemonId> filter = null)
+        {
+            var myPokemon = await GetPokemons();
+            myPokemon = myPokemon.Where(p => p.DeployedFortId == string.Empty).OrderByDescending(p => p.Cp);
+            //Don't evolve pokemon in gyms
+            IEnumerable<PokemonId> pokemonIds = filter as PokemonId[] ?? filter.ToArray();
+            if (pokemonIds.Any())
+            {
+                myPokemon =
+                    myPokemon.Where(
+                        p => pokemonIds.Contains(p.PokemonId) ||
+                             (_logicSettings.EvolveAllPokemonAboveIv &&
+                              (PokemonInfo.CalculatePokemonPerfection(p) >= _logicSettings.EvolveAboveIvValue)));
+            }
+            else if (_logicSettings.EvolveAllPokemonAboveIv)
+            {
+                myPokemon =
+                    myPokemon.Where(
+                        p => PokemonInfo.CalculatePokemonPerfection(p) >= _logicSettings.EvolveAboveIvValue);
+            }
+            var pokemons = myPokemon.ToList();
+
+            var myPokemonSettings = await GetPokemonSettings();
+            var pokemonSettings = myPokemonSettings.ToList();
+
+            var myPokemonFamilies = await GetPokemonFamilies();
+            var pokemonFamilies = myPokemonFamilies.ToArray();
+
+            var pokemonToEvolve = new List<PokemonData>();
+            foreach (var pokemon in pokemons)
+            {
+                var settings = pokemonSettings.SingleOrDefault(x => x.PokemonId == pokemon.PokemonId);
+                var familyCandy = pokemonFamilies.SingleOrDefault(x => settings.FamilyId == x.FamilyId);
+
+                //Don't evolve if we can't evolve it
+                if (settings.EvolutionIds.Count == 0)
+                    continue;
+                //DO NOT CHANGE! TESTED AND WORKS
+                var pokemonCandyNeededAlready =
+                    (pokemonToEvolve.Count(
+                        p => pokemonSettings.Single(x => x.PokemonId == p.PokemonId).FamilyId == settings.FamilyId) + 1)*
+                    settings.CandyToEvolve;
+
+                if (familyCandy.Candy_ >= pokemonCandyNeededAlready)
+                {
+                    pokemonToEvolve.Add(pokemon);
+                }
+            }
+
+            return pokemonToEvolve;
+        }
+
+        public async Task<LevelUpRewardsResponse> GetLevelUpRewards(int level)
+        {
+            if (_level == 0 || level > _level)
+            {
+                _level = level;
+                return await _client.Player.GetLevelUpRewards(level);
+            }
+
+            return new LevelUpRewardsResponse();
+        }
+
+        public async Task<List<PokemonData>> GetPokemonToUpgrade()
+        {
+            var upgradePokemon = new List<PokemonData>();
+
+            if (!_logicSettings.AutomaticallyLevelUpPokemon)
+                return upgradePokemon;
+
+            var myPokemon = await GetPokemons();
+            myPokemon = myPokemon.Where(p => p.DeployedFortId == string.Empty);
+
+            IEnumerable<PokemonData> highestPokemonForUpgrade =
+                _logicSettings.UpgradePokemonMinimumStatsOperator.ToLower().Equals("and")
+                    ? myPokemon.Where(
+                        p => p.Cp >= _logicSettings.UpgradePokemonCpMinimum &&
+                             PokemonInfo.CalculatePokemonPerfection(p) >= _logicSettings.UpgradePokemonIvMinimum)
+                        .OrderByDescending(p => p.Cp)
+                        .ToList()
+                    : myPokemon.Where(
+                        p => p.Cp >= _logicSettings.UpgradePokemonCpMinimum ||
+                             PokemonInfo.CalculatePokemonPerfection(p) >= _logicSettings.UpgradePokemonIvMinimum)
+                        .OrderByDescending(p => p.Cp)
+                        .ToList();
+
+            return upgradePokemon = _logicSettings.LevelUpByCPorIv.ToLower().Equals("iv")
+                ? highestPokemonForUpgrade.OrderByDescending(PokemonInfo.CalculatePokemonPerfection).ToList()
+                : highestPokemonForUpgrade.OrderByDescending(p => p.Cp).ToList();
+        }
+
+        public TransferFilter GetPokemonTransferFilter(PokemonId pokemon)
+        {
+            if (_logicSettings.PokemonsTransferFilter != null &&
+                _logicSettings.PokemonsTransferFilter.ContainsKey(pokemon))
+            {
+                return _logicSettings.PokemonsTransferFilter[pokemon];
+            }
+            return new TransferFilter(_logicSettings.KeepMinCp, _logicSettings.KeepMinLvl, _logicSettings.UseKeepMinLvl,
+                _logicSettings.KeepMinIvPercentage,
+                _logicSettings.KeepMinOperator, _logicSettings.KeepMinDuplicatePokemon);
+        }
+
+        public async Task<GetInventoryResponse> RefreshCachedInventory()
+        {
+            var now = DateTime.UtcNow;
+            var ss = new SemaphoreSlim(10);
+
+            await ss.WaitAsync();
+            try
+            {
+                _lastRefresh = now;
+                _cachedInventory = await _client.Inventory.GetInventory();
+                return _cachedInventory;
+            }
+            finally
+            {
+                ss.Release();
+            }
+        }
+
+        public async Task<UpgradePokemonResponse> UpgradePokemon(ulong pokemonid)
+        {
+            var upgradeResult = await _client.Inventory.UpgradePokemon(pokemonid);
+            return upgradeResult;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Localization/Localizer.cs b/PokemonGo.RocketBot.Logic/Localization/Localizer.cs
new file mode 100644
index 0000000..05a729c
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Localization/Localizer.cs
@@ -0,0 +1,27 @@
+#region using directives
+
+using PokemonGo.RocketBot.Logic.Common;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Localization
+{
+    public interface ILocalizer
+    {
+        string GetFormat(TranslationString key);
+        string GetFormat(TranslationString key, params object[] data);
+    }
+
+    public class Localizer : ILocalizer
+    {
+        public string GetFormat(TranslationString key)
+        {
+            return "";
+        }
+
+        public string GetFormat(TranslationString key, params object[] data)
+        {
+            return "";
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Logging/ILogger.cs b/PokemonGo.RocketBot.Logic/Logging/ILogger.cs
new file mode 100644
index 0000000..7a95e40
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Logging/ILogger.cs
@@ -0,0 +1,28 @@
+#region using directives
+
+using System;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Logging
+{
+    public interface ILogger
+    {
+        /// <summary>
+        ///     Set Context for a logger to be able to use translations and settings
+        /// </summary>
+        /// <param name="session">Context</param>
+        void SetSession(ISession session);
+
+        /// <summary>
+        ///     Log a specific message by LogLevel.
+        /// </summary>
+        /// <param name="message">The message to log.</param>
+        /// <param name="level">Optional. Default <see cref="LogLevel.Info" />.</param>
+        /// <param name="color">Optional. Default automatic color.</param>
+        void Write(string message, LogLevel level = LogLevel.Info, ConsoleColor color = ConsoleColor.Black);
+
+        void lineSelect(int lineChar = 0, int linesUp = 1);
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Logging/Logger.cs b/PokemonGo.RocketBot.Logic/Logging/Logger.cs
new file mode 100644
index 0000000..bd2169b
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Logging/Logger.cs
@@ -0,0 +1,120 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Logging
+{
+    public static class Logger
+    {
+        private static ILogger _logger;
+        private static string _path;
+        private static DateTime _lastLogTime;
+        private static readonly IList<string> LogbufferList = new List<string>();
+        private static string _lastLogMessage;
+        private static bool _isGui;
+
+        private static void Log(string message, bool force = false)
+        {
+            lock (LogbufferList)
+            {
+                LogbufferList.Add(message);
+
+                if (_lastLogTime.AddSeconds(60).Ticks > DateTime.Now.Ticks && !force)
+                    return;
+
+                using (
+                    var log =
+                        File.AppendText(Path.Combine(_path,
+                            $"RocketBot-{DateTime.Today.ToString("yyyy-MM-dd")}-{DateTime.Now.ToString("HH")}.txt"))
+                    )
+                {
+                    foreach (var line in LogbufferList)
+                    {
+                        log.WriteLine(line);
+                    }
+                    _lastLogTime = DateTime.Now;
+                    log.Flush();
+                    LogbufferList.Clear();
+                }
+            }
+        }
+
+        /// <summary>
+        ///     Set the logger. All future requests to <see cref="Write(string,LogLevel,ConsoleColor)" /> will use that logger, any
+        ///     old will be
+        ///     unset.
+        /// </summary>
+        /// <param name="logger"></param>
+        public static void SetLogger(ILogger logger, string subPath = "", bool isGui = false)
+        {
+            _logger = logger;
+            _isGui = isGui;
+            if (!_isGui)
+            {
+                _path = Path.Combine(Directory.GetCurrentDirectory(), subPath, "Logs");
+                Directory.CreateDirectory(_path);
+                Log($"Initializing RocketBot logger at time {DateTime.Now}...");
+            }
+        }
+
+        /// <summary>
+        ///     Sets Context for the logger
+        /// </summary>
+        /// <param name="session">Context</param>
+        public static void SetLoggerContext(ISession session)
+        {
+            _logger?.SetSession(session);
+        }
+
+        /// <summary>
+        ///     Log a specific message to the logger setup by <see cref="SetLogger(ILogger)" /> .
+        /// </summary>
+        /// <param name="message">The message to log.</param>
+        /// <param name="level">Optional level to log. Default <see cref="LogLevel.Info" />.</param>
+        /// <param name="color">Optional. Default is automatic color.</param>
+        public static void Write(string message, LogLevel level = LogLevel.Info, ConsoleColor color = ConsoleColor.Black,
+            bool force = false)
+        {
+            if (_logger == null || _lastLogMessage == message)
+                return;
+            _lastLogMessage = message;
+            _logger.Write(message, level, color);
+
+            if (!_isGui)
+                Log(string.Concat($"[{DateTime.Now.ToString("HH:mm:ss")}] ", message), force);
+        }
+
+        public static void lineSelect(int lineChar = 0, int linesUp = 1)
+        {
+            _logger.lineSelect(lineChar, linesUp);
+        }
+    }
+
+    public enum LogLevel
+    {
+        None = 0,
+        Error = 1,
+        Warning = 2,
+        Pokestop = 3,
+        Farming = 4,
+        Sniper = 5,
+        Recycling = 6,
+        Berry = 7,
+        Caught = 8,
+        Flee = 9,
+        Transfer = 10,
+        Evolve = 11,
+        Egg = 12,
+        Update = 13,
+        Info = 14,
+        New = 15,
+        SoftBan = 16,
+        LevelUp = 17,
+        Debug = 18
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Navigation.cs b/PokemonGo.RocketBot.Logic/Navigation.cs
new file mode 100644
index 0000000..f02e2a1
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Navigation.cs
@@ -0,0 +1,429 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.IO;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using GeoCoordinatePortable;
+using Newtonsoft.Json.Linq;
+using PokemonGo.RocketAPI;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic
+{
+    public delegate void UpdatePositionDelegate(double lat, double lng);
+
+    public delegate void GetHumanizeRouteDelegate(List<GeoCoordinate> route, GeoCoordinate destination);
+
+    public class Navigation
+    {
+        private const double SpeedDownTo = 10 / 3.6;
+        private readonly Client _client;
+        private readonly Random _randWalking = new Random();
+        private double _currentWalkingSpeed;
+        private DateTime _lastMajorVariantWalkingSpeed;
+        private DateTime _nextMajorVariantWalkingSpeed;
+
+        public Navigation(Client client)
+        {
+            _client = client;
+        }
+
+        private double MajorWalkingSpeedVariant(ISession session)
+        {
+            if (_lastMajorVariantWalkingSpeed == DateTime.MinValue && _nextMajorVariantWalkingSpeed == DateTime.MinValue)
+            {
+                var minutes = _randWalking.NextDouble() * (2 - 6) + 2;
+                _lastMajorVariantWalkingSpeed = DateTime.Now;
+                _nextMajorVariantWalkingSpeed = _lastMajorVariantWalkingSpeed.AddMinutes(minutes);
+                _currentWalkingSpeed = session.LogicSettings.WalkingSpeedInKilometerPerHour;
+            }
+            else if (_nextMajorVariantWalkingSpeed.Ticks < DateTime.Now.Ticks)
+            {
+                var oldWalkingSpeed = _currentWalkingSpeed;
+
+                var randomMin = session.LogicSettings.WalkingSpeedInKilometerPerHour -
+                                session.LogicSettings.WalkingSpeedVariant;
+                var randomMax = session.LogicSettings.WalkingSpeedInKilometerPerHour +
+                                session.LogicSettings.WalkingSpeedVariant;
+                _currentWalkingSpeed = _randWalking.NextDouble() * (randomMax - randomMin) + randomMin;
+
+                var minutes = _randWalking.NextDouble() * (2 - 6) + 2;
+                _lastMajorVariantWalkingSpeed = DateTime.Now;
+                _nextMajorVariantWalkingSpeed = _lastMajorVariantWalkingSpeed.AddMinutes(minutes);
+
+                session.EventDispatcher.Send(new HumanWalkingEvent
+                {
+                    OldWalkingSpeed = oldWalkingSpeed,
+                    CurrentWalkingSpeed = _currentWalkingSpeed
+                });
+            }
+
+            return _currentWalkingSpeed / 3.6;
+        }
+
+        private double MinorWalkingSpeedVariant(ISession session)
+        {
+            if (_randWalking.Next(1, 10) > 5) //Random change or no variant speed
+            {
+                var oldWalkingSpeed = _currentWalkingSpeed;
+
+                if (_randWalking.Next(1, 10) > 5) //Random change upper or lower variant speed
+                {
+                    var randomMax = session.LogicSettings.WalkingSpeedInKilometerPerHour +
+                                    session.LogicSettings.WalkingSpeedVariant + 0.5;
+
+                    _currentWalkingSpeed += _randWalking.NextDouble() * (0.01 - 0.09) + 0.01;
+                    if (_currentWalkingSpeed > randomMax)
+                        _currentWalkingSpeed = randomMax;
+                }
+                else
+                {
+                    var randomMin = session.LogicSettings.WalkingSpeedInKilometerPerHour -
+                                    session.LogicSettings.WalkingSpeedVariant - 0.5;
+
+                    _currentWalkingSpeed -= _randWalking.NextDouble() * (0.01 - 0.09) + 0.01;
+                    if (_currentWalkingSpeed < randomMin)
+                        _currentWalkingSpeed = randomMin;
+                }
+
+                if (Math.Abs(oldWalkingSpeed - _currentWalkingSpeed) > 0)
+                {
+                    session.EventDispatcher.Send(new HumanWalkingEvent
+                    {
+                        OldWalkingSpeed = oldWalkingSpeed,
+                        CurrentWalkingSpeed = _currentWalkingSpeed
+                    });
+                }
+            }
+
+            return _currentWalkingSpeed / 3.6;
+        }
+
+        private List<List<double>> Route(ISession session, GeoCoordinate start, GeoCoordinate dest)
+        {
+            var result = new List<List<double>>();
+
+            try
+            {
+                var web = WebRequest.Create(
+                    $"https://maps.googleapis.com/maps/api/directions/json?origin={start.Latitude},{start.Longitude}&destination={dest.Latitude},{dest.Longitude}&mode=walking&units=metric&key={session.LogicSettings.GoogleApiKey}");
+                web.Credentials = CredentialCache.DefaultCredentials;
+
+                string strResponse;
+                using (var response = web.GetResponse())
+                {
+                    using (var stream = response.GetResponseStream())
+                    {
+                        Debug.Assert(stream != null, "stream != null");
+                        using (var reader = new StreamReader(stream))
+                            strResponse = reader.ReadToEnd();
+                    }
+                }
+
+                var parseObject = JObject.Parse(strResponse);
+                result = Points(parseObject["routes"][0]["overview_polyline"]["points"].ToString(), 1e5);
+            }
+            catch (WebException e)
+            {
+                session.EventDispatcher.Send(new WarnEvent
+                {
+                    Message = $"Web Exception: {e.Message}"
+                });
+            }
+            catch (NullReferenceException e)
+            {
+                session.EventDispatcher.Send(new WarnEvent
+                {
+                    Message = $"Routing Error: {e.Message}"
+                });
+            }
+
+            return result;
+        }
+
+        public static List<List<double>> Points(string overview, double precision)
+        {
+            if (string.IsNullOrEmpty(overview))
+                throw new ArgumentNullException("Points");
+
+            var polyline = false;
+            int index = 0, lat = 0, lng = 0;
+            var polylineChars = overview.ToCharArray();
+            var result = new List<List<double>>();
+
+            while (index < polylineChars.Length)
+            {
+                int sum = 0, shifter = 0, nextBits;
+                var coordinates = new List<double>();
+
+                do
+                {
+                    nextBits = polylineChars[index++] - 63;
+                    sum |= (nextBits & 0x1f) << shifter;
+                    shifter += 5;
+                } while (nextBits >= 0x20 && index < polylineChars.Length);
+
+                if (index >= polylineChars.Length && (!polyline || nextBits >= 0x20))
+                    break;
+
+                if (!polyline)
+                    lat += (sum & 1) == 1 ? ~(sum >> 1) : sum >> 1;
+                else
+                {
+                    lng += (sum & 1) == 1 ? ~(sum >> 1) : sum >> 1;
+                    coordinates.Add(lng / precision);
+                    coordinates.Add(lat / precision);
+                    result.Add(coordinates);
+                }
+
+                polyline = !polyline;
+            }
+
+            return result;
+        }
+
+        public async Task<PlayerUpdateResponse> Move(GeoCoordinate targetLocation,
+            Func<Task<bool>> functionExecutedWhileWalking,
+            ISession session,
+            CancellationToken cancellationToken, bool forceDisableHumanWalking = false)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+            if (!session.LogicSettings.DisableHumanWalking && !forceDisableHumanWalking)
+            {
+                PlayerUpdateResponse result = null;
+                var points = new List<GeoCoordinate>();
+                var route = Route(session,
+                    new GeoCoordinate(
+                        _client.CurrentLatitude,
+                        _client.CurrentLongitude,
+                        _client.CurrentAltitude),
+                    targetLocation);
+
+                foreach (var item in route)
+                    points.Add(new GeoCoordinate(item.ToArray()[1], item.ToArray()[0]));
+
+                OnGetHumanizeRouteEvent(points, targetLocation);
+
+                for (var i = 0; i < points.Count; i++)
+                {
+                    var speedInMetersPerSecond = session.LogicSettings.UseWalkingSpeedVariant
+                        ? MajorWalkingSpeedVariant(session)
+                        : session.LogicSettings.WalkingSpeedInKilometerPerHour / 3.6;
+                    var sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
+
+                    var nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, points.ToArray()[i]);
+                    var nextWaypointDistance = speedInMetersPerSecond;
+                    var waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance,
+                        nextWaypointBearing);
+
+                    var requestSendDateTime = DateTime.Now;
+                    result =
+                        await
+                            _client.Player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
+                                waypoint.Altitude);
+
+                    UpdatePositionEvent?.Invoke(waypoint.Latitude, waypoint.Longitude);
+
+                    var realDistanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);
+                    if (realDistanceToTarget < 30)
+                        break;
+
+                    do
+                    {
+                        cancellationToken.ThrowIfCancellationRequested();
+
+                        var millisecondsUntilGetUpdatePlayerLocationResponse =
+                            (DateTime.Now - requestSendDateTime).TotalMilliseconds;
+
+                        sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
+                        var currentDistanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation,
+                            points.ToArray()[i]);
+
+                        var realDistanceToTargetSpeedDown = LocationUtils.CalculateDistanceInMeters(sourceLocation,
+                            targetLocation);
+                        if (realDistanceToTargetSpeedDown < 40)
+                            if (speedInMetersPerSecond > SpeedDownTo)
+                                speedInMetersPerSecond = SpeedDownTo;
+
+                        if (session.LogicSettings.UseWalkingSpeedVariant)
+                            speedInMetersPerSecond = MinorWalkingSpeedVariant(session);
+
+                        nextWaypointDistance = Math.Min(currentDistanceToTarget,
+                            millisecondsUntilGetUpdatePlayerLocationResponse / 1000 * speedInMetersPerSecond);
+                        nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, points.ToArray()[i]);
+                        waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance,
+                            nextWaypointBearing);
+
+                        requestSendDateTime = DateTime.Now;
+                        result =
+                            await
+                                _client.Player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
+                                    waypoint.Altitude);
+
+                        UpdatePositionEvent?.Invoke(waypoint.Latitude, waypoint.Longitude);
+
+                        if (functionExecutedWhileWalking != null)
+                            await functionExecutedWhileWalking(); // look for pokemon
+                    } while (LocationUtils.CalculateDistanceInMeters(sourceLocation, points.ToArray()[i]) >= 2);
+
+                    UpdatePositionEvent?.Invoke(points.ToArray()[i].Latitude, points.ToArray()[i].Longitude);
+                }
+
+                return result;
+            }
+            else
+            {
+                var sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
+
+                var nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
+
+                var nextWaypointDistance = session.LogicSettings.UseWalkingSpeedVariant
+                    ? MajorWalkingSpeedVariant(session)
+                    : session.LogicSettings.WalkingSpeedInKilometerPerHour / 3.6;
+                ;
+                ;
+                var waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing);
+
+                //Initial walking
+                var requestSendDateTime = DateTime.Now;
+                var result =
+                    await
+                        _client.Player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
+                            waypoint.Altitude);
+
+                UpdatePositionEvent?.Invoke(waypoint.Latitude, waypoint.Longitude);
+
+                do
+                {
+                    var speedInMetersPerSecond = session.LogicSettings.UseWalkingSpeedVariant
+                        ? MajorWalkingSpeedVariant(session)
+                        : session.LogicSettings.WalkingSpeedInKilometerPerHour / 3.6;
+                    cancellationToken.ThrowIfCancellationRequested();
+
+                    var millisecondsUntilGetUpdatePlayerLocationResponse =
+                        (DateTime.Now - requestSendDateTime).TotalMilliseconds;
+
+                    sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
+                    var currentDistanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation,
+                        targetLocation);
+
+                    if (currentDistanceToTarget < 40)
+                    {
+                        if (speedInMetersPerSecond > SpeedDownTo)
+                        {
+                            //Logger.Write("We are within 40 meters of the target. Speeding down to 10 km/h to not pass the target.", LogLevel.Info);
+                            speedInMetersPerSecond = SpeedDownTo;
+                        }
+                    }
+
+                    nextWaypointDistance = Math.Min(currentDistanceToTarget,
+                        millisecondsUntilGetUpdatePlayerLocationResponse / 1000 * speedInMetersPerSecond);
+                    nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
+                    waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance,
+                        nextWaypointBearing);
+
+                    requestSendDateTime = DateTime.Now;
+                    result =
+                        await
+                            _client.Player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
+                                waypoint.Altitude);
+
+                    UpdatePositionEvent?.Invoke(waypoint.Latitude, waypoint.Longitude);
+
+
+                    if (functionExecutedWhileWalking != null)
+                        await functionExecutedWhileWalking(); // look for pokemon
+                } while (LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation) >= 30);
+
+                return result;
+            }
+        }
+
+        public async Task<PlayerUpdateResponse> HumanPathWalking(GpxReader.Trkpt trk,
+            Func<Task<bool>> functionExecutedWhileWalking,
+            ISession session,
+            CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            //PlayerUpdateResponse result = null;
+
+            var targetLocation = new GeoCoordinate(Convert.ToDouble(trk.Lat, CultureInfo.InvariantCulture),
+                Convert.ToDouble(trk.Lon, CultureInfo.InvariantCulture));
+            var speedInMetersPerSecond = session.LogicSettings.UseWalkingSpeedVariant
+                ? MajorWalkingSpeedVariant(session)
+                : session.LogicSettings.WalkingSpeedInKilometerPerHour / 3.6;
+            var sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
+            LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);
+            var nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
+            var nextWaypointDistance = speedInMetersPerSecond;
+            var waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing,
+                Convert.ToDouble(trk.Ele, CultureInfo.InvariantCulture));
+            var requestSendDateTime = DateTime.Now;
+            var result =
+                await
+                    _client.Player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude, waypoint.Altitude);
+
+            UpdatePositionEvent?.Invoke(waypoint.Latitude, waypoint.Longitude);
+
+            do
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                var millisecondsUntilGetUpdatePlayerLocationResponse =
+                    (DateTime.Now - requestSendDateTime).TotalMilliseconds;
+
+                sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude);
+                var currentDistanceToTarget = LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation);
+
+                //if (currentDistanceToTarget < 40)
+                //{
+                //    if (speedInMetersPerSecond > SpeedDownTo)
+                //    {
+                //        //Logger.Write("We are within 40 meters of the target. Speeding down to 10 km/h to not pass the target.", LogLevel.Info);
+                //        speedInMetersPerSecond = SpeedDownTo;
+                //    }
+                //}
+
+                if (session.LogicSettings.UseWalkingSpeedVariant)
+                    speedInMetersPerSecond = MinorWalkingSpeedVariant(session);
+
+                nextWaypointDistance = Math.Min(currentDistanceToTarget,
+                    millisecondsUntilGetUpdatePlayerLocationResponse / 1000 * speedInMetersPerSecond);
+                nextWaypointBearing = LocationUtils.DegreeBearing(sourceLocation, targetLocation);
+                waypoint = LocationUtils.CreateWaypoint(sourceLocation, nextWaypointDistance, nextWaypointBearing);
+
+                requestSendDateTime = DateTime.Now;
+                result =
+                    await
+                        _client.Player.UpdatePlayerLocation(waypoint.Latitude, waypoint.Longitude,
+                            waypoint.Altitude);
+
+                UpdatePositionEvent?.Invoke(waypoint.Latitude, waypoint.Longitude);
+
+                if (functionExecutedWhileWalking != null)
+                    await functionExecutedWhileWalking(); // look for pokemon & hit stops
+            } while (LocationUtils.CalculateDistanceInMeters(sourceLocation, targetLocation) >= 30);
+
+            return result;
+        }
+
+        public event UpdatePositionDelegate UpdatePositionEvent;
+        public static event GetHumanizeRouteDelegate GetHumanizeRouteEvent;
+
+        protected virtual void OnGetHumanizeRouteEvent(List<GeoCoordinate> route, GeoCoordinate destination)
+        {
+            GetHumanizeRouteEvent?.Invoke(route, destination);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/PoGoUtils/PokemonInfo.cs b/PokemonGo.RocketBot.Logic/PoGoUtils/PokemonInfo.cs
new file mode 100644
index 0000000..b9908dd
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/PoGoUtils/PokemonInfo.cs
@@ -0,0 +1,600 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using POGOProtos.Data;
+using POGOProtos.Enums;
+using POGOProtos.Inventory;
+using POGOProtos.Settings.Master;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.PoGoUtils
+{
+    public struct BaseStats
+    {
+        public int BaseAttack, BaseDefense, BaseStamina;
+
+        public BaseStats(int baseStamina, int baseAttack, int baseDefense)
+        {
+            BaseAttack = baseAttack;
+            BaseDefense = baseDefense;
+            BaseStamina = baseStamina;
+        }
+
+        public override string ToString()
+        {
+            return $"({BaseAttack} atk,{BaseDefense} def,{BaseStamina} sta)";
+        }
+    }
+
+    public static class PokemonInfo
+    {
+        public static int CalculateCp(PokemonData poke)
+        {
+            return
+                Math.Max(
+                    (int)
+                        Math.Floor(0.1*CalculateCpMultiplier(poke)*
+                                   Math.Pow(poke.CpMultiplier + poke.AdditionalCpMultiplier, 2)), 10);
+        }
+
+        public static double CalculateCpMultiplier(PokemonData poke)
+        {
+            var baseStats = GetBaseStats(poke.PokemonId);
+            return (baseStats.BaseAttack + poke.IndividualAttack)*
+                   Math.Sqrt(baseStats.BaseDefense + poke.IndividualDefense)*
+                   Math.Sqrt(baseStats.BaseStamina + poke.IndividualStamina);
+        }
+
+        public static int CalculateMaxCp(PokemonData poke)
+        {
+            return
+                Math.Max(
+                    (int)
+                        Math.Floor(0.1*CalculateMaxCpMultiplier(poke.PokemonId)*
+                                   Math.Pow(poke.CpMultiplier + poke.AdditionalCpMultiplier, 2)), 10);
+        }
+
+        public static double CalculateMaxCpMultiplier(PokemonId pokemonId)
+        {
+            var baseStats = GetBaseStats(pokemonId);
+            return (baseStats.BaseAttack + 15)*Math.Sqrt(baseStats.BaseDefense + 15)*
+                   Math.Sqrt(baseStats.BaseStamina + 15);
+        }
+
+        public static int CalculateMinCp(PokemonData poke)
+        {
+            return
+                Math.Max(
+                    (int)
+                        Math.Floor(0.1*CalculateMinCpMultiplier(poke)*
+                                   Math.Pow(poke.CpMultiplier + poke.AdditionalCpMultiplier, 2)), 10);
+        }
+
+        public static double CalculateMinCpMultiplier(PokemonData poke)
+        {
+            var baseStats = GetBaseStats(poke.PokemonId);
+            return baseStats.BaseAttack*Math.Sqrt(baseStats.BaseDefense)*Math.Sqrt(baseStats.BaseStamina);
+        }
+
+        public static double CalculatePokemonPerfection(PokemonData poke)
+        {
+            if (Math.Abs(poke.CpMultiplier + poke.AdditionalCpMultiplier) <= 0)
+                return (poke.IndividualAttack + poke.IndividualDefense + poke.IndividualStamina)/45.0*100.0;
+
+            //GetBaseStats(poke.PokemonId);
+            var maxCp = CalculateMaxCpMultiplier(poke.PokemonId);
+            var minCp = CalculateMinCpMultiplier(poke);
+            var curCp = CalculateCpMultiplier(poke);
+
+            return (curCp - minCp)/(maxCp - minCp)*100.0;
+        }
+
+        public static BaseStats GetBaseStats(PokemonId id)
+        {
+            switch ((int) id)
+            {
+                case 1:
+                    return new BaseStats(90, 126, 126);
+                case 2:
+                    return new BaseStats(120, 156, 158);
+                case 3:
+                    return new BaseStats(160, 198, 200);
+                case 4:
+                    return new BaseStats(78, 128, 108);
+                case 5:
+                    return new BaseStats(116, 160, 140);
+                case 6:
+                    return new BaseStats(156, 212, 182);
+                case 7:
+                    return new BaseStats(88, 112, 142);
+                case 8:
+                    return new BaseStats(118, 144, 176);
+                case 9:
+                    return new BaseStats(158, 186, 222);
+                case 10:
+                    return new BaseStats(90, 62, 66);
+                case 11:
+                    return new BaseStats(100, 56, 86);
+                case 12:
+                    return new BaseStats(120, 144, 144);
+                case 13:
+                    return new BaseStats(80, 68, 64);
+                case 14:
+                    return new BaseStats(90, 62, 82);
+                case 15:
+                    return new BaseStats(130, 144, 130);
+                case 16:
+                    return new BaseStats(80, 94, 90);
+                case 17:
+                    return new BaseStats(126, 126, 122);
+                case 18:
+                    return new BaseStats(166, 170, 166);
+                case 19:
+                    return new BaseStats(60, 92, 86);
+                case 20:
+                    return new BaseStats(110, 146, 150);
+                case 21:
+                    return new BaseStats(80, 102, 78);
+                case 22:
+                    return new BaseStats(130, 168, 146);
+                case 23:
+                    return new BaseStats(70, 112, 112);
+                case 24:
+                    return new BaseStats(120, 166, 166);
+                case 25:
+                    return new BaseStats(70, 124, 108);
+                case 26:
+                    return new BaseStats(120, 200, 154);
+                case 27:
+                    return new BaseStats(100, 90, 114);
+                case 28:
+                    return new BaseStats(150, 150, 172);
+                case 29:
+                    return new BaseStats(110, 100, 104);
+                case 30:
+                    return new BaseStats(140, 132, 136);
+                case 31:
+                    return new BaseStats(180, 184, 190);
+                case 32:
+                    return new BaseStats(92, 110, 94);
+                case 33:
+                    return new BaseStats(122, 142, 128);
+                case 34:
+                    return new BaseStats(162, 204, 170);
+                case 35:
+                    return new BaseStats(140, 116, 124);
+                case 36:
+                    return new BaseStats(190, 178, 178);
+                case 37:
+                    return new BaseStats(76, 106, 118);
+                case 38:
+                    return new BaseStats(146, 176, 194);
+                case 39:
+                    return new BaseStats(230, 98, 54);
+                case 40:
+                    return new BaseStats(280, 168, 108);
+                case 41:
+                    return new BaseStats(80, 88, 90);
+                case 42:
+                    return new BaseStats(150, 164, 164);
+                case 43:
+                    return new BaseStats(90, 134, 130);
+                case 44:
+                    return new BaseStats(120, 162, 158);
+                case 45:
+                    return new BaseStats(150, 202, 190);
+                case 46:
+                    return new BaseStats(70, 122, 120);
+                case 47:
+                    return new BaseStats(120, 162, 170);
+                case 48:
+                    return new BaseStats(120, 108, 118);
+                case 49:
+                    return new BaseStats(140, 172, 154);
+                case 50:
+                    return new BaseStats(20, 108, 86);
+                case 51:
+                    return new BaseStats(70, 148, 140);
+                case 52:
+                    return new BaseStats(80, 104, 94);
+                case 53:
+                    return new BaseStats(130, 156, 146);
+                case 54:
+                    return new BaseStats(100, 132, 112);
+                case 55:
+                    return new BaseStats(160, 194, 176);
+                case 56:
+                    return new BaseStats(80, 122, 96);
+                case 57:
+                    return new BaseStats(130, 178, 150);
+                case 58:
+                    return new BaseStats(110, 156, 110);
+                case 59:
+                    return new BaseStats(180, 230, 180);
+                case 60:
+                    return new BaseStats(80, 108, 98);
+                case 61:
+                    return new BaseStats(130, 132, 132);
+                case 62:
+                    return new BaseStats(180, 180, 202);
+                case 63:
+                    return new BaseStats(50, 110, 76);
+                case 64:
+                    return new BaseStats(80, 150, 112);
+                case 65:
+                    return new BaseStats(110, 186, 152);
+                case 66:
+                    return new BaseStats(140, 118, 96);
+                case 67:
+                    return new BaseStats(160, 154, 144);
+                case 68:
+                    return new BaseStats(180, 198, 180);
+                case 69:
+                    return new BaseStats(100, 158, 78);
+                case 70:
+                    return new BaseStats(130, 190, 110);
+                case 71:
+                    return new BaseStats(160, 222, 152);
+                case 72:
+                    return new BaseStats(80, 106, 136);
+                case 73:
+                    return new BaseStats(160, 170, 196);
+                case 74:
+                    return new BaseStats(80, 106, 118);
+                case 75:
+                    return new BaseStats(110, 142, 156);
+                case 76:
+                    return new BaseStats(160, 176, 198);
+                case 77:
+                    return new BaseStats(100, 168, 138);
+                case 78:
+                    return new BaseStats(130, 200, 170);
+                case 79:
+                    return new BaseStats(180, 110, 110);
+                case 80:
+                    return new BaseStats(190, 184, 198);
+                case 81:
+                    return new BaseStats(50, 128, 138);
+                case 82:
+                    return new BaseStats(100, 186, 180);
+                case 83:
+                    return new BaseStats(104, 138, 132);
+                case 84:
+                    return new BaseStats(70, 126, 96);
+                case 85:
+                    return new BaseStats(120, 182, 150);
+                case 86:
+                    return new BaseStats(130, 104, 138);
+                case 87:
+                    return new BaseStats(180, 156, 192);
+                case 88:
+                    return new BaseStats(160, 124, 110);
+                case 89:
+                    return new BaseStats(210, 180, 188);
+                case 90:
+                    return new BaseStats(60, 120, 112);
+                case 91:
+                    return new BaseStats(100, 196, 196);
+                case 92:
+                    return new BaseStats(60, 136, 82);
+                case 93:
+                    return new BaseStats(90, 172, 118);
+                case 94:
+                    return new BaseStats(120, 204, 156);
+                case 95:
+                    return new BaseStats(70, 90, 186);
+                case 96:
+                    return new BaseStats(120, 104, 140);
+                case 97:
+                    return new BaseStats(170, 162, 196);
+                case 98:
+                    return new BaseStats(60, 116, 110);
+                case 99:
+                    return new BaseStats(110, 178, 168);
+                case 100:
+                    return new BaseStats(80, 102, 124);
+                case 101:
+                    return new BaseStats(120, 150, 174);
+                case 102:
+                    return new BaseStats(120, 110, 132);
+                case 103:
+                    return new BaseStats(190, 232, 164);
+                case 104:
+                    return new BaseStats(100, 102, 150);
+                case 105:
+                    return new BaseStats(120, 140, 202);
+                case 106:
+                    return new BaseStats(100, 148, 172);
+                case 107:
+                    return new BaseStats(100, 138, 204);
+                case 108:
+                    return new BaseStats(180, 126, 160);
+                case 109:
+                    return new BaseStats(80, 136, 142);
+                case 110:
+                    return new BaseStats(130, 190, 198);
+                case 111:
+                    return new BaseStats(160, 110, 116);
+                case 112:
+                    return new BaseStats(210, 166, 160);
+                case 113:
+                    return new BaseStats(500, 40, 60);
+                case 114:
+                    return new BaseStats(130, 164, 152);
+                case 115:
+                    return new BaseStats(210, 142, 178);
+                case 116:
+                    return new BaseStats(60, 122, 100);
+                case 117:
+                    return new BaseStats(110, 176, 150);
+                case 118:
+                    return new BaseStats(90, 112, 126);
+                case 119:
+                    return new BaseStats(160, 172, 160);
+                case 120:
+                    return new BaseStats(60, 130, 128);
+                case 121:
+                    return new BaseStats(120, 194, 192);
+                case 122:
+                    return new BaseStats(80, 154, 196);
+                case 123:
+                    return new BaseStats(140, 176, 180);
+                case 124:
+                    return new BaseStats(130, 172, 134);
+                case 125:
+                    return new BaseStats(130, 198, 160);
+                case 126:
+                    return new BaseStats(130, 214, 158);
+                case 127:
+                    return new BaseStats(130, 184, 186);
+                case 128:
+                    return new BaseStats(150, 148, 184);
+                case 129:
+                    return new BaseStats(40, 42, 84);
+                case 130:
+                    return new BaseStats(190, 192, 196);
+                case 131:
+                    return new BaseStats(260, 186, 190);
+                case 132:
+                    return new BaseStats(96, 110, 110);
+                case 133:
+                    return new BaseStats(110, 114, 128);
+                case 134:
+                    return new BaseStats(260, 186, 168);
+                case 135:
+                    return new BaseStats(130, 192, 174);
+                case 136:
+                    return new BaseStats(130, 238, 178);
+                case 137:
+                    return new BaseStats(130, 156, 158);
+                case 138:
+                    return new BaseStats(70, 132, 160);
+                case 139:
+                    return new BaseStats(140, 180, 202);
+                case 140:
+                    return new BaseStats(60, 148, 142);
+                case 141:
+                    return new BaseStats(120, 190, 190);
+                case 142:
+                    return new BaseStats(160, 182, 162);
+                case 143:
+                    return new BaseStats(320, 180, 180);
+                case 144:
+                    return new BaseStats(180, 198, 242);
+                case 145:
+                    return new BaseStats(180, 232, 194);
+                case 146:
+                    return new BaseStats(180, 242, 194);
+                case 147:
+                    return new BaseStats(82, 128, 110);
+                case 148:
+                    return new BaseStats(122, 170, 152);
+                case 149:
+                    return new BaseStats(182, 250, 212);
+                case 150:
+                    return new BaseStats(212, 284, 202);
+                case 151:
+                    return new BaseStats(200, 220, 220);
+                default:
+                    return new BaseStats();
+            }
+        }
+
+        public static double GetLevel(PokemonData poke)
+        {
+            switch ((int) ((poke.CpMultiplier + poke.AdditionalCpMultiplier)*1000.0))
+            {
+                case 93: // 0.094 * 1000 = 93.99999678134
+                case 94:
+                    return 1;
+                case 135:
+                    return 1.5;
+                case 166:
+                    return 2;
+                case 192:
+                    return 2.5;
+                case 215:
+                    return 3;
+                case 236:
+                    return 3.5;
+                case 255:
+                    return 4;
+                case 273:
+                    return 4.5;
+                case 290:
+                    return 5;
+                case 306:
+                    return 5.5;
+                case 321:
+                    return 6;
+                case 335:
+                    return 6.5;
+                case 349:
+                    return 7;
+                case 362:
+                    return 7.5;
+                case 375:
+                    return 8;
+                case 387:
+                    return 8.5;
+                case 399:
+                    return 9;
+                case 411:
+                    return 9.5;
+                case 422:
+                    return 10;
+                case 432:
+                    return 10.5;
+                case 443:
+                    return 11;
+                case 453:
+                    return 11.5;
+                case 462:
+                    return 12;
+                case 472:
+                    return 12.5;
+                case 481:
+                    return 13;
+                case 490:
+                    return 13.5;
+                case 499:
+                    return 14;
+                case 508:
+                    return 14.5;
+                case 517:
+                    return 15;
+                case 525:
+                    return 15.5;
+                case 534:
+                    return 16;
+                case 542:
+                    return 16.5;
+                case 550:
+                    return 17;
+                case 558:
+                    return 17.5;
+                case 566:
+                    return 18;
+                case 574:
+                    return 18.5;
+                case 582:
+                    return 19;
+                case 589:
+                    return 19.5;
+                case 597:
+                    return 20;
+                case 604:
+                    return 20.5;
+                case 612:
+                    return 21;
+                case 619:
+                    return 21.5;
+                case 626:
+                    return 22;
+                case 633:
+                    return 22.5;
+                case 640:
+                    return 23;
+                case 647:
+                    return 23.5;
+                case 654:
+                    return 24;
+                case 661:
+                    return 24.5;
+                case 667:
+                    return 25;
+                case 674:
+                    return 25.5;
+                case 681:
+                    return 26;
+                case 687:
+                    return 26.5;
+                case 694:
+                    return 27;
+                case 700:
+                    return 27.5;
+                case 706:
+                    return 28;
+                case 713:
+                    return 28.5;
+                case 719:
+                    return 29;
+                case 725:
+                    return 29.5;
+                case 731:
+                    return 30;
+                case 734:
+                    return 30.5;
+                case 737:
+                    return 31;
+                case 740:
+                    return 31.5;
+                case 743:
+                    return 32;
+                case 746:
+                    return 32.5;
+                case 749:
+                    return 33;
+                case 752:
+                    return 33.5;
+                case 755:
+                    return 34;
+                case 758:
+                    return 34.5;
+                case 761:
+                    return 35;
+                case 764:
+                    return 35.5;
+                case 767:
+                    return 36;
+                case 770:
+                    return 36.5;
+                case 773:
+                    return 37;
+                case 776:
+                    return 37.5;
+                case 778:
+                    return 38;
+                case 781:
+                    return 38.5;
+                case 784:
+                    return 39;
+                case 787:
+                    return 39.5;
+                case 790:
+                    return 40;
+                default:
+                    return 0;
+            }
+        }
+
+        public static PokemonMove GetPokemonMove1(PokemonData poke)
+        {
+            var move1 = poke.Move1;
+            return move1;
+        }
+
+        public static PokemonMove GetPokemonMove2(PokemonData poke)
+        {
+            var move2 = poke.Move2;
+            return move2;
+        }
+
+        public static int GetCandy(PokemonData pokemon, List<Candy> PokemonFamilies,
+            IEnumerable<PokemonSettings> PokemonSettings)
+        {
+            var setting = PokemonSettings.FirstOrDefault(q => pokemon != null && q.PokemonId.Equals(pokemon.PokemonId));
+            var family = PokemonFamilies.FirstOrDefault(q => setting != null && q.FamilyId.Equals(setting.FamilyId));
+
+            return family.Candy_;
+        }
+
+        public static int GetPowerUpLevel(PokemonData poke)
+        {
+            return (int) (GetLevel(poke)*2.0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/PokemonGo.RocketBot.Logic.csproj b/PokemonGo.RocketBot.Logic/PokemonGo.RocketBot.Logic.csproj
new file mode 100644
index 0000000..8a047e2
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/PokemonGo.RocketBot.Logic.csproj
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{0739E40D-C589-4AEB-93E5-EE8CD6773C60}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PokemonGo.RocketBot.Logic</RootNamespace>
+    <AssemblyName>PokemonGo.RocketBot.Logic</AssemblyName>
+    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="C5, Version=2.4.5947.17248, Culture=neutral, PublicKeyToken=282361b99ded7e8e, processorArchitecture=MSIL">
+      <HintPath>..\packages\C5.2.4.5947.17249\lib\net45\C5.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="CloudFlareUtilities, Version=0.2.1.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\CloudFlareUtilities.0.2.1-alpha\lib\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\CloudFlareUtilities.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="EngineIoClientDotNet, Version=0.9.22.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\EngineIoClientDotNet.0.9.22\lib\net45\EngineIoClientDotNet.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="GMap.NET.Core, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b85b9027b614afef, processorArchitecture=MSIL">
+      <HintPath>..\packages\GMap.NET.WindowsForms.1.7.1\lib\net40\GMap.NET.Core.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="GMap.NET.WindowsForms, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b85b9027b614afef, processorArchitecture=MSIL">
+      <HintPath>..\packages\GMap.NET.WindowsForms.1.7.1\lib\net40\GMap.NET.WindowsForms.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604" />
+    <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\S2Geometry.1.0.3\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="SocketIoClientDotNet, Version=0.9.13.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\SocketIoClientDotNet.0.9.13\lib\net45\SocketIoClientDotNet.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.Composition" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.IO.Compression" />
+    <Reference Include="System.IO.Compression.FileSystem" />
+    <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Numerics" />
+    <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.0.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System.Xml" />
+    <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed">
+      <HintPath>$(SolutionDir)\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="GeoCoordinatePortable">
+      <HintPath>$(SolutionDir)\packages\GeoCoordinate.1.1.0\lib\portable-net45+wp80+win+wpa81\GeoCoordinatePortable.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="Telegram.Bot, Version=10.3.1.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\Telegram.Bot.10.3.1\lib\net45\Telegram.Bot.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Common\ApiFailureStrategy.cs" />
+    <Compile Include="DataDumper\IDumper.cs" />
+    <Compile Include="DataDumper\Dumper.cs" />
+    <Compile Include="Common\Translations.cs" />
+    <Compile Include="Event\DisplayHighestsPokemonEvent.cs" />
+    <Compile Include="Event\EggHatchedEvent.cs" />
+    <Compile Include="Event\EggsListEvent.cs" />
+    <Compile Include="Event\EventDispatcher.cs" />
+    <Compile Include="Event\EvolveCountEvent.cs" />
+    <Compile Include="Event\FortTargetEvent.cs" />
+    <Compile Include="Event\FortFailedEvent.cs" />
+    <Compile Include="Event\FortUsedEvent.cs" />
+    <Compile Include="Event\GetHumanizeRouteEvent.cs" />
+    <Compile Include="Event\HumanWalkingEvent.cs" />
+    <Compile Include="Event\InventoryListEvent.cs" />
+    <Compile Include="Event\ItemRecycledEvent.cs" />
+    <Compile Include="Event\LootPokestopEvent.cs" />
+    <Compile Include="Event\NoPokeballEvent.cs" />
+    <Compile Include="Event\OptimizeRouteEvent.cs" />
+    <Compile Include="Event\PokemonsEncounterEvent.cs" />
+    <Compile Include="Event\SnipeEvent.cs" />
+    <Compile Include="Event\SnipeModeEvent.cs" />
+    <Compile Include="Event\PokemonListEvent.cs" />
+    <Compile Include="Event\SnipeScanEvent.cs" />
+    <Compile Include="Event\UpdateEvent.cs" />
+    <Compile Include="Event\PokemonCaptureEvent.cs" />
+    <Compile Include="Event\PokeStopListEvent.cs" />
+    <Compile Include="Event\ProfileEvent.cs" />
+    <Compile Include="Event\TransferPokemonEvent.cs" />
+    <Compile Include="Event\UpdatePositionEvent.cs" />
+    <Compile Include="Event\UseBerryEvent.cs" />
+    <Compile Include="Event\EggIncubatorStatusEvent.cs" />
+    <Compile Include="Inventory.cs" />
+    <Compile Include="Localization\Localizer.cs" />
+    <Compile Include="Logging\Logger.cs" />
+    <Compile Include="ILogicSettings.cs" />
+    <Compile Include="Navigation.cs" />
+    <Compile Include="PoGoUtils\PokemonInfo.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Service\BotService.cs" />
+    <Compile Include="Service\TelegramService.cs" />
+    <Compile Include="Tasks\EggsListTask.cs" />
+    <Compile Include="Tasks\EvolveSpecificPokemonTask.cs" />
+    <Compile Include="Tasks\FavoritePokemonTask.cs" />
+    <Compile Include="Tasks\GetPokeDexCount.cs" />
+    <Compile Include="Tasks\InventoryListTask.cs" />
+    <Compile Include="Tasks\LevelUpPokemonTask.cs" />
+    <Compile Include="Tasks\LevelUpSpecificPokemonTask.cs" />
+    <Compile Include="Tasks\PokemonListTask.cs" />
+    <Compile Include="Tasks\Farm.cs" />
+    <Compile Include="Settings.cs" />
+    <Compile Include="State\Session.cs" />
+    <Compile Include="Event\ErrorEvent.cs" />
+    <Compile Include="State\FarmState.cs" />
+    <Compile Include="State\InfoState.cs" />
+    <Compile Include="StatisticsAggregator.cs" />
+    <Compile Include="Tasks\CatchIncensePokemonsTask.cs" />
+    <Compile Include="Tasks\CatchLurePokemonsTask.cs" />
+    <Compile Include="Tasks\CatchNearbyPokemonsTask.cs" />
+    <Compile Include="Tasks\CatchPokemonTask.cs" />
+    <Compile Include="Tasks\DisplayPokemonStatsTask.cs" />
+    <Compile Include="Tasks\EvolvePokemonTask.cs" />
+    <Compile Include="Event\IEvent.cs" />
+    <Compile Include="State\IState.cs" />
+    <Compile Include="State\LoginState.cs" />
+    <Compile Include="Event\NoticeEvent.cs" />
+    <Compile Include="Event\PokemonEvolveEvent.cs" />
+    <Compile Include="State\PositionCheckState.cs" />
+    <Compile Include="State\StateMachine.cs" />
+    <Compile Include="Tasks\FarmPokestopsGPXTask.cs" />
+    <Compile Include="Tasks\FarmPokestopsTask.cs" />
+    <Compile Include="Tasks\Login.cs" />
+    <Compile Include="Tasks\RecycleItemsTask.cs" />
+    <Compile Include="Tasks\RecycleSpecificItemTask.cs" />
+    <Compile Include="Tasks\RenamePokemonTask.cs" />
+    <Compile Include="Tasks\RenameSpecificPokemonTask.cs" />
+    <Compile Include="Tasks\SnipePokemonTask.cs" />
+    <Compile Include="Tasks\TransferDuplicatePokemonTask.cs" />
+    <Compile Include="Event\UseLuckyEggEvent.cs" />
+    <Compile Include="State\VersionCheckState.cs" />
+    <Compile Include="Event\WarnEvent.cs" />
+    <Compile Include="Tasks\TransferSpecificPokemonTask.cs" />
+    <Compile Include="Tasks\TransferWeakPokemonTask.cs" />
+    <Compile Include="Tasks\UseIncenseConstantlyTask.cs" />
+    <Compile Include="Tasks\UseIncenseTask.cs" />
+    <Compile Include="Tasks\UseIncubatorsTask.cs" />
+    <Compile Include="Tasks\UseLuckyEggConstantlyTask.cs" />
+    <Compile Include="Tasks\UseLuckyEggTask.cs" />
+    <Compile Include="Tasks\UseNearbyPokestopsTask.cs" />
+    <Compile Include="Utils\DelayingUtils.cs" />
+    <Compile Include="Utils\DeviceInfoHelper.cs" />
+    <Compile Include="Utils\dijkstras.cs" />
+    <Compile Include="Utils\EggWalker.cs" />
+    <Compile Include="Utils\ErrorHandler.cs" />
+    <Compile Include="Utils\GPXReader.cs" />
+    <Compile Include="Logging\ILogger.cs" />
+    <Compile Include="Utils\JitterUtils.cs" />
+    <Compile Include="Utils\LocationUtils.cs" />
+    <Compile Include="Utils\NecroWebClient.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Utils\RouteOptimizeUtil.cs" />
+    <Compile Include="Utils\Statistics.cs" />
+    <Compile Include="Utils\StringUtils.cs" />
+    <Compile Include="Utils\WebClientExtensions.cs" />
+    <Compile Include="Utils\WebUtils.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\POGOProtos\POGOProtos.csproj">
+      <Project>{a03a7bb2-4f0b-467b-84b2-9a76e6aae6fb}</Project>
+      <Name>POGOProtos</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\PokemonGo.RocketAPI\PokemonGo.RocketAPI.csproj">
+      <Project>{05d2da44-1b8e-4cf7-94ed-4d52451cd095}</Project>
+      <Name>PokemonGo.RocketAPI</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Properties/AssemblyInfo.cs b/PokemonGo.RocketBot.Logic/Properties/AssemblyInfo.cs
similarity index 77%
rename from PokemonGo/RocketAPI/Properties/AssemblyInfo.cs
rename to PokemonGo.RocketBot.Logic/Properties/AssemblyInfo.cs
index 0d37ece..f18cbf7 100644
--- a/PokemonGo/RocketAPI/Properties/AssemblyInfo.cs
+++ b/PokemonGo.RocketBot.Logic/Properties/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-#region
+#region using directives

 using System.Reflection;
 using System.Runtime.InteropServices;
@@ -9,12 +9,12 @@ using System.Runtime.InteropServices;
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.

-[assembly: AssemblyTitle("Pokemon Go Rocket API")]
+[assembly: AssemblyTitle("RocketBot")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Pokemon Go Rocket API")]
-[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyProduct("PokemonGo.RocketBot.Logic")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

@@ -26,7 +26,7 @@ using System.Runtime.InteropServices;

 // The following GUID is for the ID of the typelib if this project is exposed to COM

-[assembly: Guid("05d2da44-1b8e-4cf7-94ed-4d52451cd095")]
+[assembly: Guid("0739e40d-c589-4aeb-93e5-ee8cd6773c60")]

 // Version information for an assembly consists of the following four values:
 //
@@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]

-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("0.8.1")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Service/BotService.cs b/PokemonGo.RocketBot.Logic/Service/BotService.cs
new file mode 100644
index 0000000..e960270
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Service/BotService.cs
@@ -0,0 +1,20 @@
+#region using directives
+
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Service
+{
+    public class BotService
+    {
+        public ILogin LoginTask;
+        public ISession Session;
+
+        public void Run()
+        {
+            LoginTask.DoLogin();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Service/TelegramService.cs b/PokemonGo.RocketBot.Logic/Service/TelegramService.cs
new file mode 100644
index 0000000..f1f7399
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Service/TelegramService.cs
@@ -0,0 +1,239 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Reflection;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Data;
+using POGOProtos.Enums;
+using POGOProtos.Inventory.Item;
+using Telegram.Bot;
+using Telegram.Bot.Args;
+using Telegram.Bot.Types.Enums;
+using Telegram.Bot.Types.ReplyMarkups;
+
+namespace PokemonGo.RocketBot.Logic.Service
+{
+    public class TelegramService
+    {
+        private readonly TelegramBotClient bot;
+        private readonly ISession session;
+
+        public TelegramService(string apiKey, ISession session)
+        {
+            bot = new TelegramBotClient(apiKey);
+            this.session = session;
+
+            var me = bot.GetMeAsync().Result;
+
+            bot.OnMessage += OnTelegramMessageReceived;
+            bot.StartReceiving();
+
+            this.session.EventDispatcher.Send(new NoticeEvent {Message = "Using TelegramAPI with " + me.Username});
+        }
+
+        private async void OnTelegramMessageReceived(object sender, MessageEventArgs messageEventArgs)
+        {
+            var message = messageEventArgs.Message;
+
+            if (message == null || message.Type != MessageType.TextMessage)
+                return;
+
+            var answerTextmessage = "";
+
+            if (session.Profile == null || session.Inventory == null)
+            {
+                return;
+            }
+
+            var messagetext = message.Text.Split(' ');
+
+            switch (messagetext[0].ToLower())
+            {
+                case "/top":
+                    var times = 10;
+                    var sortby = "cp";
+                    if (messagetext.Length == 3)
+                    {
+                        times = Convert.ToInt32(messagetext[2]);
+                    }
+                    if (messagetext.Length >= 2)
+                    {
+                        sortby = messagetext[1];
+                    }
+
+                    IEnumerable<PokemonData> topPokemons;
+                    if (sortby.Equals("iv"))
+                    {
+                        topPokemons = await session.Inventory.GetHighestsPerfect(times);
+                    }
+                    else
+                    {
+                        topPokemons = await session.Inventory.GetHighestsCp(times);
+                    }
+
+                    foreach (var pokemon in topPokemons)
+                    {
+                        answerTextmessage += session.Translation.GetTranslation(TranslationString.ShowPokeTemplate,
+                            pokemon.Cp, PokemonInfo.CalculatePokemonPerfection(pokemon).ToString("0.00"),
+                            session.Translation.GetPokemonTranslation(pokemon.PokemonId));
+
+                        if (answerTextmessage.Length > 3800)
+                        {
+                            SendMessage(message.Chat.Id, answerTextmessage);
+                            answerTextmessage = "";
+                        }
+                    }
+                    SendMessage(message.Chat.Id, answerTextmessage);
+                    break;
+                case "/all":
+                    var myPokemons = await session.Inventory.GetPokemons();
+                    var allMyPokemons = myPokemons.ToList();
+
+                    var allPokemons = await session.Inventory.GetHighestsCp(allMyPokemons.Count);
+                    ;
+                    if (messagetext.Length == 2)
+                    {
+                        if (messagetext[1] == "iv")
+                        {
+                            allPokemons = await session.Inventory.GetHighestsPerfect(allMyPokemons.Count);
+                        }
+                    }
+
+                    foreach (var pokemon in allPokemons)
+                    {
+                        answerTextmessage += session.Translation.GetTranslation(TranslationString.ShowPokeTemplate,
+                            pokemon.Cp, PokemonInfo.CalculatePokemonPerfection(pokemon).ToString("0.00"),
+                            session.Translation.GetPokemonTranslation(pokemon.PokemonId));
+
+                        if (answerTextmessage.Length > 3800)
+                        {
+                            SendMessage(message.Chat.Id, answerTextmessage);
+                            answerTextmessage = "";
+                        }
+                    }
+                    SendMessage(message.Chat.Id, answerTextmessage);
+                    break;
+                case "/profile":
+                    var stats = session.Inventory.GetPlayerStats().Result;
+                    var stat = stats.FirstOrDefault();
+
+                    var myPokemons2 = await session.Inventory.GetPokemons();
+                    answerTextmessage += session.Translation.GetTranslation(
+                        TranslationString.ProfileStatsTemplateString, stat.Level, session.Profile.PlayerData.Username,
+                        stat.Experience, stat.NextLevelXp, stat.PokemonsCaptured, stat.PokemonDeployed,
+                        stat.PokeStopVisits, stat.EggsHatched, stat.Evolutions, stat.UniquePokedexEntries, stat.KmWalked,
+                        myPokemons2.ToList().Count, session.Profile.PlayerData.MaxPokemonStorage);
+                    SendMessage(message.Chat.Id, answerTextmessage);
+                    break;
+                case "/pokedex":
+                    var pokedex = session.Inventory.GetPokeDexItems().Result;
+                    var pokedexSort = pokedex.OrderBy(x => x.InventoryItemData.PokedexEntry.PokemonId);
+
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.PokedexCatchedTelegram);
+                    foreach (var pokedexItem in pokedexSort)
+                    {
+                        answerTextmessage +=
+                            session.Translation.GetTranslation(TranslationString.PokedexPokemonCatchedTelegram,
+                                Convert.ToInt32(pokedexItem.InventoryItemData.PokedexEntry.PokemonId),
+                                session.Translation.GetPokemonTranslation(
+                                    pokedexItem.InventoryItemData.PokedexEntry.PokemonId),
+                                pokedexItem.InventoryItemData.PokedexEntry.TimesCaptured,
+                                pokedexItem.InventoryItemData.PokedexEntry.TimesEncountered);
+
+                        if (answerTextmessage.Length > 3800)
+                        {
+                            SendMessage(message.Chat.Id, answerTextmessage);
+                            answerTextmessage = "";
+                        }
+                    }
+
+                    var pokemonsToCapture =
+                        Enum.GetValues(typeof(PokemonId))
+                            .Cast<PokemonId>()
+                            .Except(pokedex.Select(x => x.InventoryItemData.PokedexEntry.PokemonId));
+
+                    SendMessage(message.Chat.Id, answerTextmessage);
+                    answerTextmessage = "";
+
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.PokedexNeededTelegram);
+
+                    foreach (var pokedexItem in pokemonsToCapture)
+                    {
+                        answerTextmessage +=
+                            session.Translation.GetTranslation(TranslationString.PokedexPokemonNeededTelegram,
+                                Convert.ToInt32(pokedexItem), session.Translation.GetPokemonTranslation(pokedexItem));
+
+                        if (answerTextmessage.Length > 3800)
+                        {
+                            SendMessage(message.Chat.Id, answerTextmessage);
+                            answerTextmessage = "";
+                        }
+                    }
+                    SendMessage(message.Chat.Id, answerTextmessage);
+
+                    break;
+                case "/loc":
+                    SendLocation(message.Chat.Id, session.Client.CurrentLatitude, session.Client.CurrentLongitude);
+                    break;
+                case "/items":
+                    var inventory = session.Inventory;
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.CurrentPokeballInv,
+                        await inventory.GetItemAmountByType(ItemId.ItemPokeBall),
+                        await inventory.GetItemAmountByType(ItemId.ItemGreatBall),
+                        await inventory.GetItemAmountByType(ItemId.ItemUltraBall),
+                        await inventory.GetItemAmountByType(ItemId.ItemMasterBall));
+                    answerTextmessage += "\n";
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.CurrentPotionInv,
+                        await inventory.GetItemAmountByType(ItemId.ItemPotion),
+                        await inventory.GetItemAmountByType(ItemId.ItemSuperPotion),
+                        await inventory.GetItemAmountByType(ItemId.ItemHyperPotion),
+                        await inventory.GetItemAmountByType(ItemId.ItemMaxPotion));
+                    answerTextmessage += "\n";
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.CurrentReviveInv,
+                        await inventory.GetItemAmountByType(ItemId.ItemRevive),
+                        await inventory.GetItemAmountByType(ItemId.ItemMaxRevive));
+                    answerTextmessage += "\n";
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.CurrentMiscItemInv,
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemRazzBerry) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemBlukBerry) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemNanabBerry) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemWeparBerry) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemPinapBerry),
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseOrdinary) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseSpicy) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseCool) +
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseFloral),
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemLuckyEgg),
+                        await session.Inventory.GetItemAmountByType(ItemId.ItemTroyDisk));
+                    SendMessage(message.Chat.Id, answerTextmessage);
+                    break;
+                case "/status":
+                    SendMessage(message.Chat.Id, Console.Title);
+                    break;
+                case "/restart":
+                    Process.Start(Assembly.GetEntryAssembly().Location);
+                    SendMessage(message.Chat.Id, "Restarted Bot. Closing old Instance... BYE!");
+                    Environment.Exit(-1);
+                    break;
+                default:
+                    answerTextmessage += session.Translation.GetTranslation(TranslationString.HelpTemplate);
+                    SendMessage(message.Chat.Id, answerTextmessage);
+                    break;
+            }
+        }
+
+        private async void SendLocation(long chatID, double currentLatitude, double currentLongitude)
+        {
+            await bot.SendLocationAsync(chatID, (float) currentLatitude, (float) currentLongitude);
+        }
+
+        private async void SendMessage(long chatID, string message)
+        {
+            await bot.SendTextMessageAsync(chatID, message, replyMarkup: new ReplyKeyboardHide());
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Settings.cs b/PokemonGo.RocketBot.Logic/Settings.cs
new file mode 100644
index 0000000..01a2b15
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Settings.cs
@@ -0,0 +1,1449 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Reflection;
+using System.Security.Cryptography;
+using System.Threading;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using PokemonGo.RocketAPI;
+using PokemonGo.RocketAPI.Enums;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Enums;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic
+{
+    public class AuthSettings
+    {
+        [JsonIgnore] private string _filePath;
+
+        [DefaultValue("msm8996")] public string AndroidBoardName;
+
+        [DefaultValue("1.0.0.0000")] public string AndroidBootloader;
+
+        public AuthType AuthType;
+
+        [DefaultValue("HTC")] public string DeviceBrand;
+
+        [DefaultValue("8525f5d8201f78b5")] public string DeviceId;
+
+        [DefaultValue("HTC 10")] public string DeviceModel;
+
+        [DefaultValue("qcom")] public string DeviceModelBoot;
+
+        [DefaultValue("pmewl_00531")] public string DeviceModelIdentifier;
+
+        // device data
+        [DefaultValue("random")] public string DevicePackageName;
+
+        [DefaultValue("pmewl_00531")] public string FirmwareBrand;
+
+        [DefaultValue("htc/pmewl_00531/htc_pmewl:6.0.1/MMB29M/770927.1:user/release-keys")] public string
+            FirmwareFingerprint;
+
+        [DefaultValue("release-keys")] public string FirmwareTags;
+
+        [DefaultValue("user")] public string FirmwareType;
+
+        public string GoogleApiKey;
+        public string GooglePassword;
+        public string GoogleUsername;
+
+        [DefaultValue("HTC")] public string HardwareManufacturer;
+
+        [DefaultValue("HTC 10")] public string HardwareModel;
+
+        public string PtcPassword;
+        public string PtcUsername;
+        public bool UseProxy;
+        public bool UseProxyAuthentication;
+        public string UseProxyHost;
+        public string UseProxyPassword;
+        public string UseProxyPort;
+        public string UseProxyUsername;
+
+        public AuthSettings()
+        {
+            InitializePropertyDefaultValues(this);
+        }
+
+        public void InitializePropertyDefaultValues(object obj)
+        {
+            var fields = obj.GetType().GetFields();
+
+            foreach (var field in fields)
+            {
+                var d = field.GetCustomAttribute<DefaultValueAttribute>();
+
+                if (d != null)
+                    field.SetValue(obj, d.Value);
+            }
+        }
+
+        public void Load(string path)
+        {
+            try
+            {
+                _filePath = path;
+
+                if (File.Exists(_filePath))
+                {
+                    //if the file exists, load the settings
+                    var input = File.ReadAllText(_filePath);
+
+                    var settings = new JsonSerializerSettings();
+                    settings.Converters.Add(new StringEnumConverter {CamelCaseText = true});
+                    JsonConvert.PopulateObject(input, this, settings);
+                }
+                // Do some post-load logic to determine what device info to be using - if 'custom' is set we just take what's in the file without question
+                if (!DevicePackageName.Equals("random", StringComparison.InvariantCultureIgnoreCase) &&
+                    !DevicePackageName.Equals("custom", StringComparison.InvariantCultureIgnoreCase))
+                {
+                    // User requested a specific device package, check to see if it exists and if so, set it up - otherwise fall-back to random package
+                    var keepDevId = DeviceId;
+                    SetDevInfoByKey(DevicePackageName);
+                    DeviceId = keepDevId;
+                }
+                if (DevicePackageName.Equals("random", StringComparison.InvariantCultureIgnoreCase))
+                {
+                    // Random is set, so pick a random device package and set it up - it will get saved to disk below and re-used in subsequent sessions
+                    var rnd = new Random();
+                    var rndIdx = rnd.Next(0, DeviceInfoHelper.DeviceInfoSets.Keys.Count - 1);
+                    DevicePackageName = DeviceInfoHelper.DeviceInfoSets.Keys.ToArray()[rndIdx];
+                    SetDevInfoByKey(DevicePackageName);
+                }
+                if (string.IsNullOrEmpty(DeviceId) || DeviceId == "8525f5d8201f78b5")
+                    DeviceId = RandomString(16, "0123456789abcdef");
+                // changed to random hex as full alphabet letters could have been flagged
+
+                // Jurann: Note that some device IDs I saw when adding devices had smaller numbers, only 12 or 14 chars instead of 16 - probably not important but noted here anyway
+
+                Save(_filePath);
+            }
+            catch (JsonReaderException exception)
+            {
+                if (exception.Message.Contains("Unexpected character") && exception.Message.Contains("PtcUsername"))
+                    Logger.Write("JSON Exception: You need to properly configure your PtcUsername using quotations.",
+                        LogLevel.Error);
+                else if (exception.Message.Contains("Unexpected character") && exception.Message.Contains("PtcPassword"))
+                    Logger.Write(
+                        "JSON Exception: You need to properly configure your PtcPassword using quotations.",
+                        LogLevel.Error);
+                else if (exception.Message.Contains("Unexpected character") &&
+                         exception.Message.Contains("GoogleUsername"))
+                    Logger.Write(
+                        "JSON Exception: You need to properly configure your GoogleUsername using quotations.",
+                        LogLevel.Error);
+                else if (exception.Message.Contains("Unexpected character") &&
+                         exception.Message.Contains("GooglePassword"))
+                    Logger.Write(
+                        "JSON Exception: You need to properly configure your GooglePassword using quotations.",
+                        LogLevel.Error);
+                else
+                    Logger.Write("JSON Exception: " + exception.Message, LogLevel.Error);
+            }
+        }
+
+        public void Save(string fullPath)
+        {
+            var jsonSerializeSettings = new JsonSerializerSettings
+            {
+                DefaultValueHandling = DefaultValueHandling.Include,
+                Formatting = Formatting.Indented,
+                Converters = new JsonConverter[] {new StringEnumConverter {CamelCaseText = true}}
+            };
+
+            var output = JsonConvert.SerializeObject(this, jsonSerializeSettings);
+
+            var folder = Path.GetDirectoryName(fullPath);
+            if (folder != null && !Directory.Exists(folder))
+            {
+                Directory.CreateDirectory(folder);
+            }
+
+            File.WriteAllText(fullPath, output);
+        }
+
+        public void Save()
+        {
+            if (!string.IsNullOrEmpty(_filePath))
+            {
+                Save(_filePath);
+            }
+        }
+
+        public void CheckProxy()
+        {
+            using (var tempWebClient = new NecroWebClient())
+            {
+                var unproxiedIP = WebClientExtensions.DownloadString(tempWebClient,
+                    new Uri("https://api.ipify.org/?format=text"));
+                if (UseProxy)
+                {
+                    tempWebClient.Proxy = InitProxy();
+                    var proxiedIPres = WebClientExtensions.DownloadString(tempWebClient,
+                        new Uri("https://api.ipify.org/?format=text"));
+                    var proxiedIP = proxiedIPres == null ? "INVALID PROXY" : proxiedIPres;
+                    Logger.Write(
+                        $"Your IP is: {unproxiedIP} / Proxy IP is: {proxiedIP}",
+                        LogLevel.Info, unproxiedIP == proxiedIP ? ConsoleColor.Red : ConsoleColor.Green);
+
+                    if (unproxiedIP == proxiedIP || proxiedIPres == null)
+                    {
+                        Logger.Write("Press any key to exit so you can fix your proxy settings...",
+                            LogLevel.Info, ConsoleColor.Red);
+                        Console.ReadKey();
+                        Environment.Exit(0);
+                    }
+                }
+                else
+                {
+                    Logger.Write(
+                        $"Your IP is: {unproxiedIP}",
+                        LogLevel.Info, ConsoleColor.Red);
+                }
+            }
+        }
+
+        private string RandomString(int length, string alphabet = "abcdefghijklmnopqrstuvwxyz0123456789")
+        {
+            var outOfRange = byte.MaxValue + 1 - (byte.MaxValue + 1)%alphabet.Length;
+
+            return string.Concat(
+                Enumerable
+                    .Repeat(0, int.MaxValue)
+                    .Select(e => RandomByte())
+                    .Where(randomByte => randomByte < outOfRange)
+                    .Take(length)
+                    .Select(randomByte => alphabet[randomByte%alphabet.Length])
+                );
+        }
+
+        private byte RandomByte()
+        {
+            using (var randomizationProvider = new RNGCryptoServiceProvider())
+            {
+                var randomBytes = new byte[1];
+                randomizationProvider.GetBytes(randomBytes);
+                return randomBytes.Single();
+            }
+        }
+
+        private void SetDevInfoByKey(string devKey)
+        {
+            if (DeviceInfoHelper.DeviceInfoSets.ContainsKey(DevicePackageName))
+            {
+                AndroidBoardName = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["AndroidBoardName"];
+                AndroidBootloader = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["AndroidBootloader"];
+                DeviceBrand = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["DeviceBrand"];
+                DeviceId = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["DeviceId"];
+                DeviceModel = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["DeviceModel"];
+                DeviceModelBoot = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["DeviceModelBoot"];
+                DeviceModelIdentifier = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["DeviceModelIdentifier"];
+                FirmwareBrand = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["FirmwareBrand"];
+                FirmwareFingerprint = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["FirmwareFingerprint"];
+                FirmwareTags = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["FirmwareTags"];
+                FirmwareType = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["FirmwareType"];
+                HardwareManufacturer = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["HardwareManufacturer"];
+                HardwareModel = DeviceInfoHelper.DeviceInfoSets[DevicePackageName]["HardwareModel"];
+            }
+            else
+            {
+                throw new ArgumentException(
+                    "Invalid device info package! Check your auth.config file and make sure a valid DevicePackageName is set. For simple use set it to 'random'. If you have a custom device, then set it to 'custom'.");
+            }
+        }
+
+        private WebProxy InitProxy()
+        {
+            if (!UseProxy) return null;
+
+            var prox = new WebProxy(new Uri($"http://{UseProxyHost}:{UseProxyPort}"), false, null);
+
+            if (UseProxyAuthentication)
+                prox.Credentials = new NetworkCredential(UseProxyUsername, UseProxyPassword);
+
+            return prox;
+        }
+    }
+
+    public class GlobalSettings
+    {
+        //console options
+        [DefaultValue(0)] public int AmountOfPokemonToDisplayOnStart;
+
+        [DefaultValue(5)] public int AmountOfTimesToUpgradeLoop;
+
+        [JsonIgnore] public AuthSettings Auth = new AuthSettings();
+
+        [DefaultValue(false)] public bool AutoFavoritePokemon;
+
+        //powerup
+        [DefaultValue(false)] public bool AutomaticallyLevelUpPokemon;
+
+        //autoupdate
+        [DefaultValue(true)] public bool AutoUpdate;
+
+        //pokemon
+        [DefaultValue(true)] public bool CatchPokemon;
+
+        [DefaultValue(90)] public int CurveThrowChance;
+
+        [DefaultValue(40.785091)] public double DefaultLatitude;
+
+        [DefaultValue(-73.968285)] public double DefaultLongitude;
+
+        //delays
+        [DefaultValue(2000)] public int DelayBetweenPlayerActions;
+
+        [DefaultValue(2000)] public int DelayBetweenPokemonCatch;
+
+        [DefaultValue(500)] public int DelayBetweenRecycle;
+
+        [DefaultValue(true)] public bool DetailedCountsBeforeRecycling;
+
+        //position
+        [DefaultValue(false)] public bool DisableHumanWalking;
+
+        //dump stats
+        [DefaultValue(false)] public bool DumpPokemonStats;
+
+        [DefaultValue(false)] public bool EnableAdvancedSettings;
+
+        //customizable catch
+        [DefaultValue(true)] public bool EnableHumanizedThrows;
+
+        //evolve
+        [DefaultValue(95)] public float EvolveAboveIvValue;
+
+        [DefaultValue(false)] public bool EvolveAllPokemonAboveIv;
+
+        [DefaultValue(true)] public bool EvolveAllPokemonWithEnoughCandy;
+
+        [DefaultValue(90.0)] public double EvolveKeptPokemonsAtStorageUsagePercentage;
+
+        [DefaultValue(10)] public int ExcellentThrowChance;
+
+        //softban related
+        [DefaultValue(false)] public bool FastSoftBanBypass;
+
+        //favorite
+        [DefaultValue(95)] public float FavoriteMinIvPercentage;
+
+        [DefaultValue(1500)] public int ForceExcellentThrowOverCp;
+
+        [DefaultValue(95.00)] public double ForceExcellentThrowOverIv;
+
+        [DefaultValue(1000)] public int ForceGreatThrowOverCp;
+
+        [DefaultValue(90.00)] public double ForceGreatThrowOverIv;
+
+        [JsonIgnore] public string GeneralConfigPath;
+
+        [DefaultValue(5000)] public int GetMinStarDustForLevelUp;
+
+        [DefaultValue(true)] public bool GetOnlyVerifiedSniperInfoFromPokezz;
+
+        [DefaultValue(true)] public bool GetSniperInfoFromPokeSnipers;
+
+        [DefaultValue(true)] public bool GetSniperInfoFromPokeWatchers;
+
+        [DefaultValue(true)] public bool GetSniperInfoFromPokezz;
+
+        [DefaultValue("GPXPath.GPX")] public string GpxFile;
+
+        [DefaultValue(30)] public int GreatThrowChance;
+
+        [JsonIgnore] public bool isGui;
+
+        public List<KeyValuePair<ItemId, int>> ItemRecycleFilter = new List<KeyValuePair<ItemId, int>>
+        {
+            new KeyValuePair<ItemId, int>(ItemId.ItemUnknown, 0),
+            new KeyValuePair<ItemId, int>(ItemId.ItemLuckyEgg, 200),
+            new KeyValuePair<ItemId, int>(ItemId.ItemIncenseOrdinary, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemIncenseSpicy, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemIncenseCool, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemIncenseFloral, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemTroyDisk, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemXAttack, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemXDefense, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemXMiracle, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemSpecialCamera, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemIncubatorBasicUnlimited, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemIncubatorBasic, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemPokemonStorageUpgrade, 100),
+            new KeyValuePair<ItemId, int>(ItemId.ItemItemStorageUpgrade, 100)
+        };
+
+        //keeping
+        [DefaultValue(1250)] public int KeepMinCp;
+
+        [DefaultValue(0)] public int KeepMinDuplicatePokemon;
+
+        [DefaultValue(90)] public float KeepMinIvPercentage;
+
+        [DefaultValue(6)] public int KeepMinLvl;
+
+        [DefaultValue("or")] public string KeepMinOperator;
+
+        [DefaultValue(false)] public bool KeepPokemonsThatCanEvolve;
+
+        [DefaultValue("iv")] public string LevelUpByCPorIv;
+
+        [DefaultValue(3)] public int MaxBerriesToUsePerPokemon;
+
+        //amounts
+        [DefaultValue(6)] public int MaxPokeballsPerPokemon;
+
+        [DefaultValue(10)] public int MaxSpawnLocationOffset;
+
+        [DefaultValue(1000)] public int MaxTravelDistanceInMeters;
+
+        [DefaultValue(60000)] public int MinDelayBetweenSnipes;
+
+        [DefaultValue(20)] public int MinPokeballsToSnipe;
+
+        [DefaultValue(0)] public int MinPokeballsWhileSnipe;
+
+        [DefaultValue(40)] public int NiceThrowChance;
+
+        [DefaultValue(true)] public bool OnlyUpgradeFavorites;
+
+
+        public List<PokemonId> PokemonsNotToTransfer = new List<PokemonId>
+        {
+            //criteria: from SS Tier to A Tier + Regional Exclusive
+            PokemonId.Venusaur,
+            PokemonId.Charizard,
+            PokemonId.Blastoise,
+            //PokemonId.Nidoqueen,
+            //PokemonId.Nidoking,
+            PokemonId.Clefable,
+            //PokemonId.Vileplume,
+            //PokemonId.Golduck,
+            //PokemonId.Arcanine,
+            //PokemonId.Poliwrath,
+            //PokemonId.Machamp,
+            //PokemonId.Victreebel,
+            //PokemonId.Golem,
+            //PokemonId.Slowbro,
+            //PokemonId.Farfetchd,
+            PokemonId.Muk,
+            //PokemonId.Exeggutor,
+            //PokemonId.Lickitung,
+            PokemonId.Chansey,
+            //PokemonId.Kangaskhan,
+            //PokemonId.MrMime,
+            //PokemonId.Tauros,
+            PokemonId.Gyarados,
+            //PokemonId.Lapras,
+            PokemonId.Ditto,
+            //PokemonId.Vaporeon,
+            //PokemonId.Jolteon,
+            //PokemonId.Flareon,
+            //PokemonId.Porygon,
+            PokemonId.Snorlax,
+            PokemonId.Articuno,
+            PokemonId.Zapdos,
+            PokemonId.Moltres,
+            PokemonId.Dragonite,
+            PokemonId.Mewtwo,
+            PokemonId.Mew
+        };
+
+        public List<PokemonId> PokemonsToEvolve = new List<PokemonId>
+        {
+            /*NOTE: keep all the end-of-line commas exept for the last one or an exception will be thrown!
+            criteria: 12 candies*/
+            PokemonId.Caterpie,
+            PokemonId.Weedle,
+            PokemonId.Pidgey,
+            /*criteria: 25 candies*/
+            //PokemonId.Bulbasaur,
+            //PokemonId.Charmander,
+            //PokemonId.Squirtle,
+            PokemonId.Rattata
+            //PokemonId.NidoranFemale,
+            //PokemonId.NidoranMale,
+            //PokemonId.Oddish,
+            //PokemonId.Poliwag,
+            //PokemonId.Abra,
+            //PokemonId.Machop,
+            //PokemonId.Bellsprout,
+            //PokemonId.Geodude,
+            //PokemonId.Gastly,
+            //PokemonId.Eevee,
+            //PokemonId.Dratini,
+            /*criteria: 50 candies commons*/
+            //PokemonId.Spearow,
+            //PokemonId.Ekans,
+            //PokemonId.Zubat,
+            //PokemonId.Paras,
+            //PokemonId.Venonat,
+            //PokemonId.Psyduck,
+            //PokemonId.Slowpoke,
+            //PokemonId.Doduo,
+            //PokemonId.Drowzee,
+            //PokemonId.Krabby,
+            //PokemonId.Horsea,
+            //PokemonId.Goldeen,
+            //PokemonId.Staryu
+        };
+
+        public List<PokemonId> PokemonsToIgnore = new List<PokemonId>
+        {
+            //criteria: most common
+            PokemonId.Caterpie,
+            PokemonId.Weedle,
+            PokemonId.Pidgey,
+            PokemonId.Rattata,
+            PokemonId.Spearow,
+            PokemonId.Zubat,
+            PokemonId.Doduo
+        };
+
+        public List<PokemonId> PokemonsToLevelUp = new List<PokemonId>
+        {
+            //criteria: most common
+            PokemonId.Caterpie,
+            PokemonId.Weedle,
+            PokemonId.Pidgey,
+            PokemonId.Rattata,
+            PokemonId.Spearow,
+            PokemonId.Zubat,
+            PokemonId.Doduo
+        };
+
+        public Dictionary<PokemonId, TransferFilter> PokemonsTransferFilter = new Dictionary<PokemonId, TransferFilter>
+        {
+            //criteria: based on NY Central Park and Tokyo variety + sniping optimization
+            {PokemonId.Golduck, new TransferFilter(1800, 6, false, 95, "or", 1)},
+            {PokemonId.Farfetchd, new TransferFilter(1250, 6, false, 80, "or", 1)},
+            {PokemonId.Krabby, new TransferFilter(1250, 6, false, 95, "or", 1)},
+            {PokemonId.Kangaskhan, new TransferFilter(1500, 6, false, 60, "or", 1)},
+            {PokemonId.Horsea, new TransferFilter(1250, 6, false, 95, "or", 1)},
+            {PokemonId.Staryu, new TransferFilter(1250, 6, false, 95, "or", 1)},
+            {PokemonId.MrMime, new TransferFilter(1250, 6, false, 40, "or", 1)},
+            {PokemonId.Scyther, new TransferFilter(1800, 6, false, 80, "or", 1)},
+            {PokemonId.Jynx, new TransferFilter(1250, 6, false, 95, "or", 1)},
+            {PokemonId.Electabuzz, new TransferFilter(1250, 6, false, 80, "or", 1)},
+            {PokemonId.Magmar, new TransferFilter(1500, 6, false, 80, "or", 1)},
+            {PokemonId.Pinsir, new TransferFilter(1800, 6, false, 95, "or", 1)},
+            {PokemonId.Tauros, new TransferFilter(1250, 6, false, 90, "or", 1)},
+            {PokemonId.Magikarp, new TransferFilter(200, 6, false, 95, "or", 1)},
+            {PokemonId.Gyarados, new TransferFilter(1250, 6, false, 90, "or", 1)},
+            {PokemonId.Lapras, new TransferFilter(1800, 6, false, 80, "or", 1)},
+            {PokemonId.Eevee, new TransferFilter(1250, 6, false, 95, "or", 1)},
+            {PokemonId.Vaporeon, new TransferFilter(1500, 6, false, 90, "or", 1)},
+            {PokemonId.Jolteon, new TransferFilter(1500, 6, false, 90, "or", 1)},
+            {PokemonId.Flareon, new TransferFilter(1500, 6, false, 90, "or", 1)},
+            {PokemonId.Porygon, new TransferFilter(1250, 6, false, 60, "or", 1)},
+            {PokemonId.Snorlax, new TransferFilter(2600, 6, false, 90, "or", 1)},
+            {PokemonId.Dragonite, new TransferFilter(2600, 6, false, 90, "or", 1)}
+        };
+
+        public SnipeSettings PokemonToSnipe = new SnipeSettings
+        {
+            Locations = new List<Location>
+            {
+                new Location(38.55680748646112, -121.2383794784546), //Dratini Spot
+                new Location(-33.85901900, 151.21309800), //Magikarp Spot
+                new Location(47.5014969, -122.0959568), //Eevee Spot
+                new Location(51.5025343, -0.2055027) //Charmender Spot
+            },
+            Pokemon = new List<PokemonId>
+            {
+                PokemonId.Venusaur,
+                PokemonId.Charizard,
+                PokemonId.Blastoise,
+                PokemonId.Beedrill,
+                PokemonId.Raichu,
+                PokemonId.Sandslash,
+                PokemonId.Nidoking,
+                PokemonId.Nidoqueen,
+                PokemonId.Clefable,
+                PokemonId.Ninetales,
+                PokemonId.Golbat,
+                PokemonId.Vileplume,
+                PokemonId.Golduck,
+                PokemonId.Primeape,
+                PokemonId.Arcanine,
+                PokemonId.Poliwrath,
+                PokemonId.Alakazam,
+                PokemonId.Machamp,
+                PokemonId.Golem,
+                PokemonId.Rapidash,
+                PokemonId.Slowbro,
+                PokemonId.Farfetchd,
+                PokemonId.Muk,
+                PokemonId.Cloyster,
+                PokemonId.Gengar,
+                PokemonId.Exeggutor,
+                PokemonId.Marowak,
+                PokemonId.Hitmonchan,
+                PokemonId.Lickitung,
+                PokemonId.Rhydon,
+                PokemonId.Chansey,
+                PokemonId.Kangaskhan,
+                PokemonId.Starmie,
+                PokemonId.MrMime,
+                PokemonId.Scyther,
+                PokemonId.Magmar,
+                PokemonId.Electabuzz,
+                PokemonId.Jynx,
+                PokemonId.Gyarados,
+                PokemonId.Lapras,
+                PokemonId.Ditto,
+                PokemonId.Vaporeon,
+                PokemonId.Jolteon,
+                PokemonId.Flareon,
+                PokemonId.Porygon,
+                PokemonId.Kabutops,
+                PokemonId.Aerodactyl,
+                PokemonId.Snorlax,
+                PokemonId.Articuno,
+                PokemonId.Zapdos,
+                PokemonId.Moltres,
+                PokemonId.Dragonite,
+                PokemonId.Mewtwo,
+                PokemonId.Mew
+            }
+        };
+
+        public List<PokemonId> PokemonToUseMasterball = new List<PokemonId>
+        {
+            PokemonId.Articuno,
+            PokemonId.Zapdos,
+            PokemonId.Moltres,
+            PokemonId.Mew,
+            PokemonId.Mewtwo
+        };
+
+        [DefaultValue(false)] public bool PrioritizeIvOverCp;
+
+        [JsonIgnore] public string ProfileConfigPath;
+
+        [JsonIgnore] public string ProfilePath;
+
+        [DefaultValue(false)] public bool RandomizeRecycle;
+
+        [DefaultValue(5)] public int RandomRecycleValue;
+
+        [DefaultValue(90.0)] public double RecycleInventoryAtUsagePercentage;
+
+        [DefaultValue(true)] public bool RenameOnlyAboveIv;
+
+        //rename
+        [DefaultValue(false)] public bool RenamePokemon;
+
+        [DefaultValue("{1}_{0}")] public string RenameTemplate;
+
+        [DefaultValue(true)] public bool ShowVariantWalking;
+
+        [DefaultValue(false)] public bool SnipeAtPokestops;
+
+        [DefaultValue(false)] public bool SnipeIgnoreUnknownIv;
+
+        [DefaultValue("localhost")] public string SnipeLocationServer;
+
+        [DefaultValue(16969)] public int SnipeLocationServerPort;
+
+        [DefaultValue(false)] public bool SnipePokemonNotInPokedex;
+
+        [DefaultValue(true)] public bool SnipeWithSkiplagged;
+
+        [DefaultValue(0.005)] public double SnipingScanOffset;
+
+        //pressakeyshit
+        [DefaultValue(false)] public bool StartupWelcomeDelay;
+
+        [DefaultValue(null)] public string TelegramApiKey;
+
+        [DefaultValue(50)] public int TotalAmountOfBerriesToKeep;
+
+        [DefaultValue(120)] public int TotalAmountOfPokeballsToKeep;
+
+        [DefaultValue(80)] public int TotalAmountOfPotionsToKeep;
+
+        [DefaultValue(60)] public int TotalAmountOfRevivesToKeep;
+
+        [DefaultValue(true)] public bool TransferConfigAndAuthOnUpdate;
+
+        [DefaultValue(true)] public bool TransferDuplicatePokemon;
+
+        [DefaultValue(true)] public bool TransferDuplicatePokemonOnCapture;
+
+        //transfer
+        [DefaultValue(false)] public bool TransferWeakPokemon;
+
+        [DefaultValue("en")] public string TranslationLanguageCode;
+
+        [DefaultValue(1000)] public float UpgradePokemonCpMinimum;
+
+        [DefaultValue(95)] public float UpgradePokemonIvMinimum;
+
+        [DefaultValue("and")] public string UpgradePokemonMinimumStatsOperator;
+
+        [DefaultValue(0.20)] public double UseBerriesBelowCatchProbability;
+
+        [DefaultValue(1000)] public int UseBerriesMinCp;
+
+        [DefaultValue(90)] public float UseBerriesMinIv;
+
+        [DefaultValue("or")] public string UseBerriesOperator;
+
+        //lucky, incense and berries
+        [DefaultValue(true)] public bool UseEggIncubators;
+
+        //gpx
+        [DefaultValue(false)] public bool UseGpxPathing;
+
+        //balls
+        [DefaultValue(1000)] public int UseGreatBallAboveCp;
+
+        [DefaultValue(85.0)] public double UseGreatBallAboveIv;
+
+        [DefaultValue(0.2)] public double UseGreatBallBelowCatchProbability;
+
+        [DefaultValue(false)] public bool UseIncenseConstantly;
+
+        [DefaultValue(false)] public bool UseKeepMinLvl;
+
+        [DefaultValue(true)] public bool UseLevelUpList;
+
+        [DefaultValue(false)] public bool UseLuckyEggConstantly;
+
+        [DefaultValue(30)] public int UseLuckyEggsMinPokemonAmount;
+
+        [DefaultValue(false)] public bool UseLuckyEggsWhileEvolving;
+
+        [DefaultValue(1500)] public int UseMasterBallAboveCp;
+
+        [DefaultValue(0.05)] public double UseMasterBallBelowCatchProbability;
+
+        [DefaultValue(false)] public bool UsePokemonSniperFilterOnly;
+
+        //notcatch
+        [DefaultValue(false)] public bool UsePokemonToNotCatchFilter;
+
+        //snipe
+        [DefaultValue(false)] public bool UseSnipeLocationServer;
+
+        //Telegram
+        [DefaultValue(false)] public bool UseTelegramApi;
+
+        [DefaultValue(false)] public bool UseTransferIvForSnipe;
+
+        [DefaultValue(1250)] public int UseUltraBallAboveCp;
+
+        [DefaultValue(95.0)] public double UseUltraBallAboveIv;
+
+        [DefaultValue(0.1)] public double UseUltraBallBelowCatchProbability;
+
+        [DefaultValue(true)] public bool UseWalkingSpeedVariant;
+
+        //websockets
+        [DefaultValue(false)] public bool UseWebsocket;
+
+        //recycle
+        [DefaultValue(true)] public bool VerboseRecycling;
+
+        [DefaultValue(19.0)] public double WalkingSpeedInKilometerPerHour;
+
+        [DefaultValue(1.2)] public double WalkingSpeedVariant;
+
+        [DefaultValue(14251)] public int WebSocketPort;
+
+        public GlobalSettings()
+        {
+            InitializePropertyDefaultValues(this);
+        }
+
+        public static GlobalSettings Default => new GlobalSettings();
+
+        public void InitializePropertyDefaultValues(object obj)
+        {
+            var fields = obj.GetType().GetFields();
+
+            foreach (var field in fields)
+            {
+                var d = field.GetCustomAttribute<DefaultValueAttribute>();
+
+                if (d != null)
+                    field.SetValue(obj, d.Value);
+            }
+        }
+
+        public static GlobalSettings Load(string path, bool boolSkipSave = false)
+        {
+            GlobalSettings settings = null;
+            var isGui =
+                AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(a => a.FullName.Contains("PoGo.NecroBot.GUI")) !=
+                null;
+            var profilePath = Path.Combine(Directory.GetCurrentDirectory(), path);
+            var profileConfigPath = Path.Combine(profilePath, "config");
+            var configFile = Path.Combine(profileConfigPath, "config.json");
+            var shouldExit = false;
+
+            if (File.Exists(configFile))
+            {
+                try
+                {
+                    //if the file exists, load the settings
+                    var input = "";
+                    var count = 0;
+                    while (true)
+                    {
+                        try
+                        {
+                            input = File.ReadAllText(configFile);
+                            break;
+                        }
+                        catch (Exception exception)
+                        {
+                            if (count > 10)
+                            {
+                                //sometimes we have to wait close to config.json for access
+                                Logger.Write("configFile: " + exception.Message, LogLevel.Error);
+                            }
+                            count++;
+                            Thread.Sleep(1000);
+                        }
+                    }
+                    ;
+
+                    var jsonSettings = new JsonSerializerSettings();
+                    jsonSettings.Converters.Add(new StringEnumConverter {CamelCaseText = true});
+                    jsonSettings.ObjectCreationHandling = ObjectCreationHandling.Replace;
+                    jsonSettings.DefaultValueHandling = DefaultValueHandling.Populate;
+
+                    settings = JsonConvert.DeserializeObject<GlobalSettings>(input, jsonSettings);
+
+                    //This makes sure that existing config files dont get null values which lead to an exception
+                    foreach (var filter in settings.PokemonsTransferFilter.Where(x => x.Value.KeepMinOperator == null))
+                    {
+                        filter.Value.KeepMinOperator = "or";
+                    }
+                    foreach (var filter in settings.PokemonsTransferFilter.Where(x => x.Value.Moves == null))
+                    {
+                        filter.Value.Moves = new List<PokemonMove>();
+                    }
+                    foreach (var filter in settings.PokemonsTransferFilter.Where(x => x.Value.MovesOperator == null))
+                    {
+                        filter.Value.MovesOperator = "or";
+                    }
+                }
+                catch (JsonReaderException exception)
+                {
+                    Logger.Write("JSON Exception: " + exception.Message, LogLevel.Error);
+                    return null;
+                }
+            }
+            else
+            {
+                settings = new GlobalSettings();
+                shouldExit = true;
+            }
+
+
+            settings.ProfilePath = profilePath;
+            settings.ProfileConfigPath = profileConfigPath;
+            settings.GeneralConfigPath = Path.Combine(Directory.GetCurrentDirectory(), "config");
+            settings.isGui = isGui;
+
+            if (!boolSkipSave || !settings.AutoUpdate)
+            {
+                settings.Save(configFile);
+                settings.Auth.Load(Path.Combine(profileConfigPath, "auth.json"));
+            }
+
+            return shouldExit ? null : settings;
+        }
+
+        public void CheckProxy()
+        {
+            Auth.CheckProxy();
+        }
+
+        public static bool PromptForSetup(ITranslation translator)
+        {
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartPrompt, "Y", "N"), LogLevel.Warning);
+
+            while (true)
+            {
+                var strInput = Console.ReadLine().ToLower();
+
+                switch (strInput)
+                {
+                    case "y":
+                        return true;
+                    case "n":
+                        Logger.Write(translator.GetTranslation(TranslationString.FirstStartAutoGenSettings));
+                        return false;
+                    default:
+                        Logger.Write(translator.GetTranslation(TranslationString.PromptError, "Y", "N"), LogLevel.Error);
+                        continue;
+                }
+            }
+        }
+
+        public static Session SetupSettings(Session session, GlobalSettings settings, string configPath)
+        {
+            var newSession = SetupTranslationCode(session, session.Translation, settings);
+
+            SetupAccountType(newSession.Translation, settings);
+            SetupUserAccount(newSession.Translation, settings);
+            SetupConfig(newSession.Translation, settings);
+            SaveFiles(settings, configPath);
+
+            Logger.Write(session.Translation.GetTranslation(TranslationString.FirstStartSetupCompleted), LogLevel.None);
+
+            return newSession;
+        }
+
+        private static Session SetupTranslationCode(Session session, ITranslation translator, GlobalSettings settings)
+        {
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartLanguagePrompt, "Y", "N"), LogLevel.None);
+            string strInput;
+
+            var boolBreak = false;
+            while (!boolBreak)
+            {
+                strInput = Console.ReadLine().ToLower();
+
+                switch (strInput)
+                {
+                    case "y":
+                        boolBreak = true;
+                        break;
+                    case "n":
+                        return session;
+                    default:
+                        Logger.Write(translator.GetTranslation(TranslationString.PromptError, "y", "n"), LogLevel.Error);
+                        continue;
+                }
+            }
+
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartLanguageCodePrompt));
+            strInput = Console.ReadLine();
+
+            settings.TranslationLanguageCode = strInput;
+            session = new Session(new ClientSettings(settings), new LogicSettings(settings));
+            translator = session.Translation;
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartLanguageConfirm, strInput));
+
+            return session;
+        }
+
+
+        private static void SetupAccountType(ITranslation translator, GlobalSettings settings)
+        {
+            string strInput;
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupAccount), LogLevel.None);
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupTypePrompt, "google", "ptc"));
+
+            while (true)
+            {
+                strInput = Console.ReadLine().ToLower();
+
+                switch (strInput)
+                {
+                    case "google":
+                        settings.Auth.AuthType = AuthType.Google;
+                        Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupTypeConfirm, "GOOGLE"));
+                        return;
+                    case "ptc":
+                        settings.Auth.AuthType = AuthType.Ptc;
+                        Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupTypeConfirm, "PTC"));
+                        return;
+                    default:
+                        Logger.Write(
+                            translator.GetTranslation(TranslationString.FirstStartSetupTypePromptError, "google", "ptc"),
+                            LogLevel.Error);
+                        break;
+                }
+            }
+        }
+
+        private static void SetupUserAccount(ITranslation translator, GlobalSettings settings)
+        {
+            Console.WriteLine("");
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupUsernamePrompt), LogLevel.None);
+            var strInput = Console.ReadLine();
+
+            if (settings.Auth.AuthType == AuthType.Google)
+                settings.Auth.GoogleUsername = strInput;
+            else
+                settings.Auth.PtcUsername = strInput;
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupUsernameConfirm, strInput));
+
+            Console.WriteLine("");
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupPasswordPrompt), LogLevel.None);
+            strInput = Console.ReadLine();
+
+            if (settings.Auth.AuthType == AuthType.Google)
+                settings.Auth.GooglePassword = strInput;
+            else
+                settings.Auth.PtcPassword = strInput;
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupPasswordConfirm, strInput));
+
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartAccountCompleted), LogLevel.None);
+        }
+
+        private static void SetupConfig(ITranslation translator, GlobalSettings settings)
+        {
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartDefaultLocationPrompt, "Y", "N"),
+                LogLevel.None);
+
+            var boolBreak = false;
+            while (!boolBreak)
+            {
+                var strInput = Console.ReadLine().ToLower();
+
+                switch (strInput)
+                {
+                    case "y":
+                        boolBreak = true;
+                        break;
+                    case "n":
+                        Logger.Write(translator.GetTranslation(TranslationString.FirstStartDefaultLocationSet));
+                        return;
+                    default:
+                        // PROMPT ERROR \\
+                        Logger.Write(translator.GetTranslation(TranslationString.PromptError, "y", "n"), LogLevel.Error);
+                        continue;
+                }
+            }
+
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartDefaultLocation), LogLevel.None);
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupDefaultLatPrompt));
+            while (true)
+            {
+                try
+                {
+                    var dblInput = double.Parse(Console.ReadLine());
+                    settings.DefaultLatitude = dblInput;
+                    Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupDefaultLatConfirm, dblInput));
+                    break;
+                }
+                catch (FormatException)
+                {
+                    Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupDefaultLocationError,
+                        settings.DefaultLatitude, LogLevel.Error));
+                }
+            }
+
+            Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupDefaultLongPrompt));
+            while (true)
+            {
+                try
+                {
+                    var dblInput = double.Parse(Console.ReadLine());
+                    settings.DefaultLongitude = dblInput;
+                    Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupDefaultLongConfirm, dblInput));
+                    break;
+                }
+                catch (FormatException)
+                {
+                    Logger.Write(translator.GetTranslation(TranslationString.FirstStartSetupDefaultLocationError,
+                        settings.DefaultLongitude, LogLevel.Error));
+                }
+            }
+        }
+
+        private static void SaveFiles(GlobalSettings settings, string configFile)
+        {
+            settings.Save(configFile);
+            settings.Auth.Load(Path.Combine(settings.ProfileConfigPath, "auth.json"));
+        }
+
+        public void Save(string fullPath)
+        {
+            var jsonSerializeSettings = new JsonSerializerSettings
+            {
+                DefaultValueHandling = DefaultValueHandling.Include,
+                Formatting = Formatting.Indented,
+                Converters = new JsonConverter[] {new StringEnumConverter {CamelCaseText = true}}
+            };
+
+            var output = JsonConvert.SerializeObject(this, jsonSerializeSettings);
+
+            var folder = Path.GetDirectoryName(fullPath);
+            if (folder != null && !Directory.Exists(folder))
+            {
+                Directory.CreateDirectory(folder);
+            }
+
+            File.WriteAllText(fullPath, output);
+        }
+    }
+
+    public class ClientSettings : ISettings
+    {
+        // Never spawn at the same position.
+        private readonly Random _rand = new Random(DateTime.Now.Millisecond);
+        private readonly GlobalSettings _settings;
+
+        public ClientSettings(GlobalSettings settings)
+        {
+            _settings = settings;
+        }
+
+
+        public string GoogleUsername => _settings.Auth.GoogleUsername;
+        public string GooglePassword => _settings.Auth.GooglePassword;
+
+        double ISettings.DefaultLatitude
+        {
+            get
+            {
+                return _settings.DefaultLatitude + _rand.NextDouble()*((double) _settings.MaxSpawnLocationOffset/111111);
+            }
+
+            set { _settings.DefaultLatitude = value; }
+        }
+
+        double ISettings.DefaultLongitude
+        {
+            get
+            {
+                return _settings.DefaultLongitude +
+                       _rand.NextDouble()*
+                       ((double) _settings.MaxSpawnLocationOffset/111111/Math.Cos(_settings.DefaultLatitude));
+            }
+
+            set { _settings.DefaultLongitude = value; }
+        }
+
+        double ISettings.DefaultAltitude
+        {
+            get
+            {
+                return
+                    LocationUtils.getElevation(_settings.DefaultLatitude, _settings.DefaultLongitude) +
+                    _rand.NextDouble()*
+                    (5/Math.Cos(LocationUtils.getElevation(_settings.DefaultLatitude, _settings.DefaultLongitude)));
+            }
+
+
+            set { }
+        }
+
+        #region Auth Config Values
+
+        public bool UseProxy
+        {
+            get { return _settings.Auth.UseProxy; }
+            set { _settings.Auth.UseProxy = value; }
+        }
+
+        public string UseProxyHost
+        {
+            get { return _settings.Auth.UseProxyHost; }
+            set { _settings.Auth.UseProxyHost = value; }
+        }
+
+        public string UseProxyPort
+        {
+            get { return _settings.Auth.UseProxyPort; }
+            set { _settings.Auth.UseProxyPort = value; }
+        }
+
+        public bool UseProxyAuthentication
+        {
+            get { return _settings.Auth.UseProxyAuthentication; }
+            set { _settings.Auth.UseProxyAuthentication = value; }
+        }
+
+        public string UseProxyUsername
+        {
+            get { return _settings.Auth.UseProxyUsername; }
+            set { _settings.Auth.UseProxyUsername = value; }
+        }
+
+        public string UseProxyPassword
+        {
+            get { return _settings.Auth.UseProxyPassword; }
+            set { _settings.Auth.UseProxyPassword = value; }
+        }
+
+        public string GoogleRefreshToken
+        {
+            get { return null; }
+            set { GoogleRefreshToken = null; }
+        }
+
+        AuthType ISettings.AuthType
+        {
+            get { return _settings.Auth.AuthType; }
+
+            set { _settings.Auth.AuthType = value; }
+        }
+
+        string ISettings.GoogleUsername
+        {
+            get { return _settings.Auth.GoogleUsername; }
+
+            set { _settings.Auth.GoogleUsername = value; }
+        }
+
+        string ISettings.GooglePassword
+        {
+            get { return _settings.Auth.GooglePassword; }
+
+            set { _settings.Auth.GooglePassword = value; }
+        }
+
+        string ISettings.PtcUsername
+        {
+            get { return _settings.Auth.PtcUsername; }
+
+            set { _settings.Auth.PtcUsername = value; }
+        }
+
+        string ISettings.PtcPassword
+        {
+            get { return _settings.Auth.PtcPassword; }
+
+            set { _settings.Auth.PtcPassword = value; }
+        }
+
+        #endregion Auth Config Values
+
+        #region Device Config Values
+
+        private string DevicePackageName
+        {
+            get { return _settings.Auth.DevicePackageName; }
+            set { _settings.Auth.DevicePackageName = value; }
+        }
+
+        string ISettings.DeviceId
+        {
+            get { return _settings.Auth.DeviceId; }
+            set { _settings.Auth.DeviceId = value; }
+        }
+
+        string ISettings.AndroidBoardName
+        {
+            get { return _settings.Auth.AndroidBoardName; }
+            set { _settings.Auth.AndroidBoardName = value; }
+        }
+
+        string ISettings.AndroidBootloader
+        {
+            get { return _settings.Auth.AndroidBootloader; }
+            set { _settings.Auth.AndroidBootloader = value; }
+        }
+
+        string ISettings.DeviceBrand
+        {
+            get { return _settings.Auth.DeviceBrand; }
+            set { _settings.Auth.DeviceBrand = value; }
+        }
+
+        string ISettings.DeviceModel
+        {
+            get { return _settings.Auth.DeviceModel; }
+            set { _settings.Auth.DeviceModel = value; }
+        }
+
+        string ISettings.DeviceModelIdentifier
+        {
+            get { return _settings.Auth.DeviceModelIdentifier; }
+            set { _settings.Auth.DeviceModelIdentifier = value; }
+        }
+
+        string ISettings.DeviceModelBoot
+        {
+            get { return _settings.Auth.DeviceModelBoot; }
+            set { _settings.Auth.DeviceModelBoot = value; }
+        }
+
+        string ISettings.HardwareManufacturer
+        {
+            get { return _settings.Auth.HardwareManufacturer; }
+            set { _settings.Auth.HardwareManufacturer = value; }
+        }
+
+        string ISettings.HardwareModel
+        {
+            get { return _settings.Auth.HardwareModel; }
+            set { _settings.Auth.HardwareModel = value; }
+        }
+
+        string ISettings.FirmwareBrand
+        {
+            get { return _settings.Auth.FirmwareBrand; }
+            set { _settings.Auth.FirmwareBrand = value; }
+        }
+
+        string ISettings.FirmwareTags
+        {
+            get { return _settings.Auth.FirmwareTags; }
+            set { _settings.Auth.FirmwareTags = value; }
+        }
+
+        string ISettings.FirmwareType
+        {
+            get { return _settings.Auth.FirmwareType; }
+            set { _settings.Auth.FirmwareType = value; }
+        }
+
+        string ISettings.FirmwareFingerprint
+        {
+            get { return _settings.Auth.FirmwareFingerprint; }
+            set { _settings.Auth.FirmwareFingerprint = value; }
+        }
+
+        #endregion Device Config Values
+    }
+
+    public class LogicSettings : ILogicSettings
+    {
+        private readonly GlobalSettings _settings;
+
+        public LogicSettings(GlobalSettings settings)
+
+        {
+            _settings = settings;
+        }
+
+        public string GoogleApiKey => _settings.Auth.GoogleApiKey;
+        public string ProfilePath => _settings.ProfilePath;
+        public string ProfileConfigPath => _settings.ProfileConfigPath;
+        public string GeneralConfigPath => _settings.GeneralConfigPath;
+        public bool AutoUpdate => _settings.AutoUpdate;
+        public bool TransferConfigAndAuthOnUpdate => _settings.TransferConfigAndAuthOnUpdate;
+        public bool UseWebsocket => _settings.UseWebsocket;
+        public bool CatchPokemon => _settings.CatchPokemon;
+        public bool TransferWeakPokemon => _settings.TransferWeakPokemon;
+        public bool DisableHumanWalking => _settings.DisableHumanWalking;
+        public int MaxBerriesToUsePerPokemon => _settings.MaxBerriesToUsePerPokemon;
+        public float KeepMinIvPercentage => _settings.KeepMinIvPercentage;
+        public string KeepMinOperator => _settings.KeepMinOperator;
+        public int KeepMinCp => _settings.KeepMinCp;
+        public int KeepMinLvl => _settings.KeepMinLvl;
+        public bool UseKeepMinLvl => _settings.UseKeepMinLvl;
+        public bool AutomaticallyLevelUpPokemon => _settings.AutomaticallyLevelUpPokemon;
+        public bool OnlyUpgradeFavorites => _settings.OnlyUpgradeFavorites;
+        public bool UseLevelUpList => _settings.UseLevelUpList;
+        public int AmountOfTimesToUpgradeLoop => _settings.AmountOfTimesToUpgradeLoop;
+        public string LevelUpByCPorIv => _settings.LevelUpByCPorIv;
+        public int GetMinStarDustForLevelUp => _settings.GetMinStarDustForLevelUp;
+        public bool UseLuckyEggConstantly => _settings.UseLuckyEggConstantly;
+        public bool UseIncenseConstantly => _settings.UseIncenseConstantly;
+        public int UseBerriesMinCp => _settings.UseBerriesMinCp;
+        public float UseBerriesMinIv => _settings.UseBerriesMinIv;
+        public double UseBerriesBelowCatchProbability => _settings.UseBerriesBelowCatchProbability;
+        public string UseBerriesOperator => _settings.UseBerriesOperator;
+        public float UpgradePokemonIvMinimum => _settings.UpgradePokemonIvMinimum;
+        public float UpgradePokemonCpMinimum => _settings.UpgradePokemonCpMinimum;
+        public string UpgradePokemonMinimumStatsOperator => _settings.UpgradePokemonMinimumStatsOperator;
+        public double WalkingSpeedInKilometerPerHour => _settings.WalkingSpeedInKilometerPerHour;
+        public bool UseWalkingSpeedVariant => _settings.UseWalkingSpeedVariant;
+        public double WalkingSpeedVariant => _settings.WalkingSpeedVariant;
+        public bool ShowVariantWalking => _settings.ShowVariantWalking;
+        public bool FastSoftBanBypass => _settings.FastSoftBanBypass;
+        public bool EvolveAllPokemonWithEnoughCandy => _settings.EvolveAllPokemonWithEnoughCandy;
+        public bool KeepPokemonsThatCanEvolve => _settings.KeepPokemonsThatCanEvolve;
+        public bool TransferDuplicatePokemon => _settings.TransferDuplicatePokemon;
+        public bool TransferDuplicatePokemonOnCapture => _settings.TransferDuplicatePokemonOnCapture;
+        public bool UseEggIncubators => _settings.UseEggIncubators;
+        public int UseGreatBallAboveCp => _settings.UseGreatBallAboveCp;
+        public int UseUltraBallAboveCp => _settings.UseUltraBallAboveCp;
+        public int UseMasterBallAboveCp => _settings.UseMasterBallAboveCp;
+        public double UseGreatBallAboveIv => _settings.UseGreatBallAboveIv;
+        public double UseUltraBallAboveIv => _settings.UseUltraBallAboveIv;
+        public double UseMasterBallBelowCatchProbability => _settings.UseMasterBallBelowCatchProbability;
+        public double UseUltraBallBelowCatchProbability => _settings.UseUltraBallBelowCatchProbability;
+        public double UseGreatBallBelowCatchProbability => _settings.UseGreatBallBelowCatchProbability;
+        public bool EnableHumanizedThrows => _settings.EnableHumanizedThrows;
+        public int NiceThrowChance => _settings.NiceThrowChance;
+        public int GreatThrowChance => _settings.GreatThrowChance;
+        public int ExcellentThrowChance => _settings.ExcellentThrowChance;
+        public int CurveThrowChance => _settings.CurveThrowChance;
+        public double ForceGreatThrowOverIv => _settings.ForceGreatThrowOverIv;
+        public double ForceExcellentThrowOverIv => _settings.ForceExcellentThrowOverIv;
+        public int ForceGreatThrowOverCp => _settings.ForceGreatThrowOverCp;
+        public int ForceExcellentThrowOverCp => _settings.ForceExcellentThrowOverCp;
+        public int DelayBetweenPokemonCatch => _settings.DelayBetweenPokemonCatch;
+        public int DelayBetweenPlayerActions => _settings.DelayBetweenPlayerActions;
+        public int DelayBetweenRecycle => _settings.DelayBetweenRecycle;
+        public bool UsePokemonToNotCatchFilter => _settings.UsePokemonToNotCatchFilter;
+        public bool UsePokemonSniperFilterOnly => _settings.UsePokemonSniperFilterOnly;
+        public int KeepMinDuplicatePokemon => _settings.KeepMinDuplicatePokemon;
+        public bool PrioritizeIvOverCp => _settings.PrioritizeIvOverCp;
+        public int MaxTravelDistanceInMeters => _settings.MaxTravelDistanceInMeters;
+        public string GpxFile => _settings.GpxFile;
+        public bool UseGpxPathing => _settings.UseGpxPathing;
+        public bool UseLuckyEggsWhileEvolving => _settings.UseLuckyEggsWhileEvolving;
+        public int UseLuckyEggsMinPokemonAmount => _settings.UseLuckyEggsMinPokemonAmount;
+        public bool EvolveAllPokemonAboveIv => _settings.EvolveAllPokemonAboveIv;
+        public float EvolveAboveIvValue => _settings.EvolveAboveIvValue;
+        public bool RenamePokemon => _settings.RenamePokemon;
+        public bool RenameOnlyAboveIv => _settings.RenameOnlyAboveIv;
+        public float FavoriteMinIvPercentage => _settings.FavoriteMinIvPercentage;
+        public bool AutoFavoritePokemon => _settings.AutoFavoritePokemon;
+        public string RenameTemplate => _settings.RenameTemplate;
+        public int AmountOfPokemonToDisplayOnStart => _settings.AmountOfPokemonToDisplayOnStart;
+        public bool DumpPokemonStats => _settings.DumpPokemonStats;
+        public string TranslationLanguageCode => _settings.TranslationLanguageCode;
+        public bool DetailedCountsBeforeRecycling => _settings.DetailedCountsBeforeRecycling;
+        public bool VerboseRecycling => _settings.VerboseRecycling;
+        public double RecycleInventoryAtUsagePercentage => _settings.RecycleInventoryAtUsagePercentage;
+
+        public double EvolveKeptPokemonsAtStorageUsagePercentage => _settings.EvolveKeptPokemonsAtStorageUsagePercentage
+            ;
+
+        public ICollection<KeyValuePair<ItemId, int>> ItemRecycleFilter => _settings.ItemRecycleFilter;
+        public ICollection<PokemonId> PokemonsToEvolve => _settings.PokemonsToEvolve;
+        public ICollection<PokemonId> PokemonsToLevelUp => _settings.PokemonsToLevelUp;
+        public ICollection<PokemonId> PokemonsNotToTransfer => _settings.PokemonsNotToTransfer;
+        public ICollection<PokemonId> PokemonsNotToCatch => _settings.PokemonsToIgnore;
+
+        public ICollection<PokemonId> PokemonToUseMasterball => _settings.PokemonToUseMasterball;
+        public Dictionary<PokemonId, TransferFilter> PokemonsTransferFilter => _settings.PokemonsTransferFilter;
+        public bool StartupWelcomeDelay => _settings.StartupWelcomeDelay;
+        public bool SnipeAtPokestops => _settings.SnipeAtPokestops;
+
+        public bool UseTelegramAPI => _settings.UseTelegramApi;
+        public string TelegramAPIKey => _settings.TelegramApiKey;
+
+        public int MinPokeballsToSnipe => _settings.MinPokeballsToSnipe;
+        public int MinPokeballsWhileSnipe => _settings.MinPokeballsWhileSnipe;
+        public int MaxPokeballsPerPokemon => _settings.MaxPokeballsPerPokemon;
+
+        public SnipeSettings PokemonToSnipe => _settings.PokemonToSnipe;
+        public string SnipeLocationServer => _settings.SnipeLocationServer;
+        public int SnipeLocationServerPort => _settings.SnipeLocationServerPort;
+        public bool GetSniperInfoFromPokezz => _settings.GetSniperInfoFromPokezz;
+        public bool GetOnlyVerifiedSniperInfoFromPokezz => _settings.GetOnlyVerifiedSniperInfoFromPokezz;
+        public bool GetSniperInfoFromPokeSnipers => _settings.GetSniperInfoFromPokeSnipers;
+        public bool GetSniperInfoFromPokeWatchers => _settings.GetSniperInfoFromPokeWatchers;
+        public bool SnipeWithSkiplagged => _settings.SnipeWithSkiplagged;
+        public bool UseSnipeLocationServer => _settings.UseSnipeLocationServer;
+        public bool UseTransferIvForSnipe => _settings.UseTransferIvForSnipe;
+        public bool SnipeIgnoreUnknownIv => _settings.SnipeIgnoreUnknownIv;
+        public int MinDelayBetweenSnipes => _settings.MinDelayBetweenSnipes;
+        public double SnipingScanOffset => _settings.SnipingScanOffset;
+        public bool SnipePokemonNotInPokedex => _settings.SnipePokemonNotInPokedex;
+        public bool RandomizeRecycle => _settings.RandomizeRecycle;
+        public int RandomRecycleValue => _settings.RandomRecycleValue;
+        public int TotalAmountOfPokeballsToKeep => _settings.TotalAmountOfPokeballsToKeep;
+        public int TotalAmountOfPotionsToKeep => _settings.TotalAmountOfPotionsToKeep;
+        public int TotalAmountOfRevivesToKeep => _settings.TotalAmountOfRevivesToKeep;
+        public int TotalAmountOfBerriesToKeep => _settings.TotalAmountOfBerriesToKeep;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/FarmState.cs b/PokemonGo.RocketBot.Logic/State/FarmState.cs
new file mode 100644
index 0000000..61f4686
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/FarmState.cs
@@ -0,0 +1,72 @@
+#region using directives
+
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public class FarmState : IState
+    {
+        public async Task<IState> Execute(ISession session, CancellationToken cancellationToken)
+        {
+            if (session.LogicSettings.EvolveAllPokemonAboveIv || session.LogicSettings.EvolveAllPokemonWithEnoughCandy
+                || session.LogicSettings.UseLuckyEggsWhileEvolving || session.LogicSettings.KeepPokemonsThatCanEvolve)
+            {
+                await EvolvePokemonTask.Execute(session, cancellationToken);
+            }
+
+            if (session.LogicSettings.UseEggIncubators)
+            {
+                await UseIncubatorsTask.Execute(session, cancellationToken);
+            }
+
+            if (session.LogicSettings.TransferDuplicatePokemon)
+            {
+                await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+            }
+
+            if (session.LogicSettings.UseLuckyEggConstantly)
+            {
+                await UseLuckyEggConstantlyTask.Execute(session, cancellationToken);
+            }
+
+            if (session.LogicSettings.UseIncenseConstantly)
+            {
+                await UseIncenseConstantlyTask.Execute(session, cancellationToken);
+            }
+
+            await GetPokeDexCount.Execute(session, cancellationToken);
+
+            if (session.LogicSettings.RenamePokemon)
+            {
+                await RenamePokemonTask.Execute(session, cancellationToken);
+            }
+
+            if (session.LogicSettings.AutoFavoritePokemon)
+            {
+                await FavoritePokemonTask.Execute(session, cancellationToken);
+            }
+
+            await RecycleItemsTask.Execute(session, cancellationToken);
+
+            if (session.LogicSettings.AutomaticallyLevelUpPokemon)
+            {
+                await LevelUpPokemonTask.Execute(session, cancellationToken);
+            }
+
+            if (session.LogicSettings.UseGpxPathing)
+            {
+                await FarmPokestopsGpxTask.Execute(session, cancellationToken);
+            }
+            else
+            {
+                await FarmPokestopsTask.Execute(session, cancellationToken);
+            }
+
+            return this;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/IState.cs b/PokemonGo.RocketBot.Logic/State/IState.cs
new file mode 100644
index 0000000..071c183
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/IState.cs
@@ -0,0 +1,14 @@
+#region using directives
+
+using System.Threading;
+using System.Threading.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public interface IState
+    {
+        Task<IState> Execute(ISession session, CancellationToken cancellationToken);
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/InfoState.cs b/PokemonGo.RocketBot.Logic/State/InfoState.cs
new file mode 100644
index 0000000..dcd12ce
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/InfoState.cs
@@ -0,0 +1,20 @@
+#region using directives
+
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public class InfoState : IState
+    {
+        public async Task<IState> Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+            await DisplayPokemonStatsTask.Execute(session);
+            return new FarmState();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/LoginState.cs b/PokemonGo.RocketBot.Logic/State/LoginState.cs
new file mode 100644
index 0000000..8feb755
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/LoginState.cs
@@ -0,0 +1,199 @@
+#region using directives
+
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+using Google.Protobuf;
+using PokemonGo.RocketAPI.Enums;
+using PokemonGo.RocketAPI.Exceptions;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public class LoginState : IState
+    {
+        public async Task<IState> Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            session.EventDispatcher.Send(new NoticeEvent
+            {
+                Message = session.Translation.GetTranslation(TranslationString.LoggingIn, session.Settings.AuthType)
+            });
+
+            await CheckLogin(session, cancellationToken);
+
+            try
+            {
+                if (session.Settings.AuthType == AuthType.Google || session.Settings.AuthType == AuthType.Ptc)
+                {
+                    await session.Client.Login.DoLogin();
+                }
+                else
+                {
+                    session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = session.Translation.GetTranslation(TranslationString.WrongAuthType)
+                    });
+                }
+            }
+            catch (AggregateException ae)
+            {
+                throw ae.Flatten().InnerException;
+            }
+            catch (LoginFailedException)
+            {
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.LoginInvalid)
+                });
+                await Task.Delay(2000, cancellationToken);
+                Environment.Exit(0);
+            }
+            catch (Exception ex) when (ex is PtcOfflineException || ex is AccessTokenExpiredException)
+            {
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.PtcOffline)
+                });
+                session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.TryingAgainIn, 20)
+                });
+            }
+            catch (AccountNotVerifiedException)
+            {
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.AccountNotVerified)
+                });
+                await Task.Delay(2000, cancellationToken);
+                Environment.Exit(0);
+            }
+            catch (GoogleException e)
+            {
+                if (e.Message.Contains("NeedsBrowser"))
+                {
+                    session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = session.Translation.GetTranslation(TranslationString.GoogleTwoFactorAuth)
+                    });
+                    session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = session.Translation.GetTranslation(TranslationString.GoogleTwoFactorAuthExplanation)
+                    });
+                    await Task.Delay(7000, cancellationToken);
+                    try
+                    {
+                        Process.Start("https://security.google.com/settings/security/apppasswords");
+                    }
+                    catch (Exception)
+                    {
+                        session.EventDispatcher.Send(new ErrorEvent
+                        {
+                            Message = "https://security.google.com/settings/security/apppasswords"
+                        });
+                        throw;
+                    }
+                }
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.GoogleError)
+                });
+                await Task.Delay(2000, cancellationToken);
+                Environment.Exit(0);
+            }
+            catch (InvalidProtocolBufferException ex) when (ex.Message.Contains("SkipLastField"))
+            {
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.IPBannedError)
+                });
+                await Task.Delay(2000, cancellationToken);
+                Environment.Exit(0);
+            }
+            catch (Exception e)
+            {
+                Logger.Write(e.ToString());
+                await Task.Delay(20000, cancellationToken);
+                return this;
+            }
+
+            await DownloadProfile(session);
+            if (session.Profile == null)
+            {
+                await Task.Delay(20000, cancellationToken);
+                Logger.Write(
+                    "Due to login failure your player profile could not be retrieved. Press any key to re-try login.",
+                    LogLevel.Warning);
+                Console.ReadKey();
+            }
+
+            var maxTheoreticalItems = session.LogicSettings.TotalAmountOfPokeballsToKeep +
+                                      session.LogicSettings.TotalAmountOfPotionsToKeep +
+                                      session.LogicSettings.TotalAmountOfRevivesToKeep +
+                                      session.LogicSettings.TotalAmountOfBerriesToKeep;
+
+            if (maxTheoreticalItems > session.Profile.PlayerData.MaxItemStorage)
+            {
+                Logger.Write(
+                    session.Translation.GetTranslation(TranslationString.MaxItemsCombinedOverMaxItemStorage,
+                        maxTheoreticalItems, session.Profile.PlayerData.MaxItemStorage), LogLevel.Error);
+                Logger.Write("Press any key to exit, then fix your configuration and run the bot again.",
+                    LogLevel.Warning);
+                Console.ReadKey();
+                Environment.Exit(1);
+            }
+
+            return new PositionCheckState();
+        }
+
+        private static async Task CheckLogin(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            if (session.Settings.AuthType == AuthType.Google &&
+                (session.Settings.GoogleUsername == null || session.Settings.GooglePassword == null))
+            {
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.MissingCredentialsGoogle)
+                });
+                await Task.Delay(2000, cancellationToken);
+                Environment.Exit(0);
+            }
+            else if (session.Settings.AuthType == AuthType.Ptc &&
+                     (session.Settings.PtcUsername == null || session.Settings.PtcPassword == null))
+            {
+                session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.MissingCredentialsPtc)
+                });
+                await Task.Delay(2000, cancellationToken);
+                Environment.Exit(0);
+            }
+        }
+
+        public async Task DownloadProfile(ISession session)
+        {
+            try
+            {
+                session.Profile = await session.Client.Player.GetPlayer();
+                session.EventDispatcher.Send(new ProfileEvent {Profile = session.Profile});
+            }
+            catch (UriFormatException e)
+            {
+                session.EventDispatcher.Send(new ErrorEvent {Message = e.ToString()});
+            }
+            catch (Exception ex)
+            {
+                session.EventDispatcher.Send(new ErrorEvent {Message = ex.ToString()});
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/PositionCheckState.cs b/PokemonGo.RocketBot.Logic/State/PositionCheckState.cs
new file mode 100644
index 0000000..b843c5a
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/PositionCheckState.cs
@@ -0,0 +1,117 @@
+#region using directives
+
+using System;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Utils;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public class PositionCheckState : IState
+    {
+        public async Task<IState> Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var coordsPath = Path.Combine(session.LogicSettings.ProfileConfigPath, "LastPos.ini");
+            if (File.Exists(coordsPath))
+            {
+                var latLngFromFile = LoadPositionFromDisk(session);
+                if (latLngFromFile != null)
+                {
+                    var distance = LocationUtils.CalculateDistanceInMeters(latLngFromFile.Item1, latLngFromFile.Item2,
+                        session.Settings.DefaultLatitude, session.Settings.DefaultLongitude);
+                    var lastModified = File.Exists(coordsPath) ? (DateTime?) File.GetLastWriteTime(coordsPath) : null;
+                    if (lastModified != null)
+                    {
+                        var hoursSinceModified = (DateTime.Now - lastModified).HasValue
+                            ? (double?) ((DateTime.Now - lastModified).Value.Minutes/60.0)
+                            : null;
+                        if (hoursSinceModified != null && hoursSinceModified != 0)
+                        {
+                            var kmph = distance/1000/(double) hoursSinceModified;
+                            if (kmph < 80) // If speed required to get to the default location is < 80km/hr
+                            {
+                                File.Delete(coordsPath);
+                                session.EventDispatcher.Send(new WarnEvent
+                                {
+                                    Message =
+                                        session.Translation.GetTranslation(TranslationString.RealisticTravelDetected)
+                                });
+                            }
+                            else
+                            {
+                                session.EventDispatcher.Send(new WarnEvent
+                                {
+                                    Message =
+                                        session.Translation.GetTranslation(TranslationString.NotRealisticTravel, kmph)
+                                });
+                            }
+                        }
+                    }
+                }
+            }
+
+            session.EventDispatcher.Send(new UpdatePositionEvent
+            {
+                Latitude = session.Client.CurrentLatitude,
+                Longitude = session.Client.CurrentLongitude
+            });
+
+            session.EventDispatcher.Send(new WarnEvent
+            {
+                Message =
+                    session.Translation.GetTranslation(TranslationString.WelcomeWarning, session.Client.CurrentLatitude,
+                        session.Client.CurrentLongitude),
+                RequireInput = session.LogicSettings.StartupWelcomeDelay
+            });
+            await Task.Delay(100, cancellationToken);
+            return new InfoState();
+        }
+
+        private static Tuple<double, double> LoadPositionFromDisk(ISession session)
+        {
+            if (
+                File.Exists(Path.Combine(session.LogicSettings.ProfileConfigPath, "LastPos.ini")) &&
+                File.ReadAllText(Path.Combine(session.LogicSettings.ProfileConfigPath, "LastPos.ini")).Contains(":"))
+            {
+                var latlngFromFile =
+                    File.ReadAllText(Path.Combine(session.LogicSettings.ProfileConfigPath, "LastPos.ini"));
+                var latlng = latlngFromFile.Split(':');
+                if (latlng[0].Length != 0 && latlng[1].Length != 0)
+                {
+                    try
+                    {
+                        var latitude = Convert.ToDouble(latlng[0]);
+                        var longitude = Convert.ToDouble(latlng[1]);
+
+                        if (Math.Abs(latitude) <= 90 && Math.Abs(longitude) <= 180)
+                        {
+                            return new Tuple<double, double>(latitude, longitude);
+                        }
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.CoordinatesAreInvalid)
+                        });
+                        return null;
+                    }
+                    catch (FormatException)
+                    {
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.CoordinatesAreInvalid)
+                        });
+                        return null;
+                    }
+                }
+            }
+
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/Session.cs b/PokemonGo.RocketBot.Logic/State/Session.cs
new file mode 100644
index 0000000..1cca82b
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/Session.cs
@@ -0,0 +1,64 @@
+#region using directives
+
+using PokemonGo.RocketAPI;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Service;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public interface ISession
+    {
+        ISettings Settings { get; set; }
+        Inventory Inventory { get; }
+        Client Client { get; }
+        GetPlayerResponse Profile { get; set; }
+        Navigation Navigation { get; }
+        ILogicSettings LogicSettings { get; }
+        ITranslation Translation { get; }
+        IEventDispatcher EventDispatcher { get; }
+        TelegramService Telegram { get; set; }
+    }
+
+
+    public class Session : ISession
+    {
+        public Session(ISettings settings, ILogicSettings logicSettings)
+        {
+            Settings = settings;
+            LogicSettings = logicSettings;
+            EventDispatcher = new EventDispatcher();
+            Translation = Common.Translation.Load(logicSettings);
+            Reset(settings, LogicSettings);
+        }
+
+        public ISettings Settings { get; set; }
+
+        public Inventory Inventory { get; private set; }
+
+        public Client Client { get; private set; }
+
+        public GetPlayerResponse Profile { get; set; }
+        public Navigation Navigation { get; private set; }
+
+        public ILogicSettings LogicSettings { get; set; }
+
+        public ITranslation Translation { get; }
+
+        public IEventDispatcher EventDispatcher { get; }
+
+        public TelegramService Telegram { get; set; }
+
+        public void Reset(ISettings settings, ILogicSettings logicSettings)
+        {
+            var _apiStrategy = new ApiFailureStrategy(this);
+            Client = new Client(Settings, _apiStrategy);
+            // ferox wants us to set this manually
+            Inventory = new Inventory(Client, logicSettings);
+            Navigation = new Navigation(Client);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/StateMachine.cs b/PokemonGo.RocketBot.Logic/State/StateMachine.cs
new file mode 100644
index 0000000..848cf99
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/StateMachine.cs
@@ -0,0 +1,85 @@
+#region using directives
+
+using System;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketAPI.Exceptions;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public class StateMachine
+    {
+        private IState _initialState;
+
+        public Task AsyncStart(IState initialState, Session session,
+            CancellationToken cancellationToken = default(CancellationToken))
+        {
+            return Task.Run(() => Start(initialState, session, cancellationToken), cancellationToken);
+        }
+
+        public void SetFailureState(IState state)
+        {
+            _initialState = state;
+        }
+
+        public async Task Start(IState initialState, Session session,
+            CancellationToken cancellationToken = default(CancellationToken))
+        {
+            var state = initialState;
+            var profilePath = Path.Combine(Directory.GetCurrentDirectory(), "");
+            var profileConfigPath = Path.Combine(profilePath, "config");
+
+            var configWatcher = new FileSystemWatcher();
+            configWatcher.Path = profileConfigPath;
+            configWatcher.Filter = "config.json";
+            configWatcher.NotifyFilter = NotifyFilters.LastWrite;
+            configWatcher.EnableRaisingEvents = true;
+            configWatcher.Changed += (sender, e) =>
+            {
+                if (e.ChangeType == WatcherChangeTypes.Changed)
+                {
+                    session.LogicSettings = new LogicSettings(GlobalSettings.Load(""));
+                    configWatcher.EnableRaisingEvents = !configWatcher.EnableRaisingEvents;
+                    configWatcher.EnableRaisingEvents = !configWatcher.EnableRaisingEvents;
+                    Logger.Write(" ##### config.json ##### ", LogLevel.Info);
+                }
+            };
+            do
+            {
+                try
+                {
+                    state = await state.Execute(session, cancellationToken);
+                }
+                catch (InvalidResponseException)
+                {
+                    session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = "Niantic Servers unstable, throttling API Calls."
+                    });
+                }
+                catch (OperationCanceledException)
+                {
+                    session.EventDispatcher.Send(new ErrorEvent {Message = "Current Operation was canceled."});
+                    state = _initialState;
+                }
+                catch (Exception ex)
+                {
+                    session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = "Pokemon Servers might be offline / unstable. Trying again..."
+                    });
+                    Thread.Sleep(1000);
+                    session.EventDispatcher.Send(new ErrorEvent {Message = "Error: " + ex});
+                    state = _initialState;
+                }
+            } while (state != null);
+            configWatcher.EnableRaisingEvents = false;
+            configWatcher.Dispose();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/State/VersionCheckState.cs b/PokemonGo.RocketBot.Logic/State/VersionCheckState.cs
new file mode 100644
index 0000000..f443347
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/State/VersionCheckState.cs
@@ -0,0 +1,18 @@
+#region using directives
+
+using System.Threading;
+using System.Threading.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.State
+{
+    public class VersionCheckState : IState
+    {
+        // reserve for auto updater
+        public async Task<IState> Execute(ISession session, CancellationToken cancellationToken)
+        {
+            return new LoginState();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/StatisticsAggregator.cs b/PokemonGo.RocketBot.Logic/StatisticsAggregator.cs
new file mode 100644
index 0000000..fdb912c
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/StatisticsAggregator.cs
@@ -0,0 +1,108 @@
+#region using directives
+
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic
+{
+    public class StatisticsAggregator
+    {
+        private readonly Statistics _stats;
+
+        public StatisticsAggregator(Statistics stats)
+        {
+            _stats = stats;
+        }
+
+        public void HandleEvent(ProfileEvent evt, ISession session)
+        {
+            _stats.SetUsername(evt.Profile);
+            _stats.Dirty(session.Inventory);
+        }
+
+        public void HandleEvent(ErrorEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(NoticeEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(WarnEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(UseLuckyEggEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(PokemonEvolveEvent evt, ISession session)
+        {
+            _stats.TotalExperience += evt.Exp;
+            _stats.Dirty(session.Inventory);
+        }
+
+        public void HandleEvent(TransferPokemonEvent evt, ISession session)
+        {
+            _stats.TotalPokemonTransferred++;
+            _stats.Dirty(session.Inventory);
+        }
+
+        public void HandleEvent(ItemRecycledEvent evt, ISession session)
+        {
+            _stats.TotalItemsRemoved++;
+            _stats.Dirty(session.Inventory);
+        }
+
+        public void HandleEvent(FortUsedEvent evt, ISession session)
+        {
+            _stats.TotalExperience += evt.Exp;
+            _stats.Dirty(session.Inventory);
+        }
+
+        public void HandleEvent(FortTargetEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(PokemonCaptureEvent evt, ISession session)
+        {
+            if (evt.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess)
+            {
+                _stats.TotalExperience += evt.Exp;
+                _stats.TotalPokemons++;
+                _stats.TotalStardust = evt.Stardust;
+                _stats.Dirty(session.Inventory);
+            }
+        }
+
+        public void HandleEvent(NoPokeballEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(UseBerryEvent evt, ISession session)
+        {
+        }
+
+        public void HandleEvent(DisplayHighestsPokemonEvent evt, ISession session)
+        {
+        }
+
+        public void Listen(IEvent evt, ISession session)
+        {
+            dynamic eve = evt;
+
+            try
+            {
+                HandleEvent(eve, session);
+            }
+            catch
+            {
+                // ignored
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/CatchIncensePokemonsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/CatchIncensePokemonsTask.cs
new file mode 100644
index 0000000..e0a6114
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/CatchIncensePokemonsTask.cs
@@ -0,0 +1,102 @@
+#region using directives
+
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Map.Pokemon;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public delegate void PokemonsEncounterDelegate(List<MapPokemon> pokemons);
+
+    public static class CatchIncensePokemonsTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+            if (!session.LogicSettings.CatchPokemon) return;
+
+            Logger.Write(session.Translation.GetTranslation(TranslationString.LookingForIncensePokemon), LogLevel.Debug);
+
+            var incensePokemon = await session.Client.Map.GetIncensePokemons();
+            if (incensePokemon.Result == GetIncensePokemonResponse.Types.Result.IncenseEncounterAvailable)
+            {
+                var pokemon = new MapPokemon
+                {
+                    EncounterId = incensePokemon.EncounterId,
+                    ExpirationTimestampMs = incensePokemon.DisappearTimestampMs,
+                    Latitude = incensePokemon.Latitude,
+                    Longitude = incensePokemon.Longitude,
+                    PokemonId = incensePokemon.PokemonId,
+                    SpawnPointId = incensePokemon.EncounterLocation
+                };
+
+                OnPokemonEncounterEvent(new List<MapPokemon> {pokemon});
+                if ((session.LogicSettings.UsePokemonSniperFilterOnly &&
+                     !session.LogicSettings.PokemonToSnipe.Pokemon.Contains(pokemon.PokemonId)) ||
+                    (session.LogicSettings.UsePokemonToNotCatchFilter &&
+                     session.LogicSettings.PokemonsNotToCatch.Contains(pokemon.PokemonId)))
+                {
+                    Logger.Write(session.Translation.GetTranslation(TranslationString.PokemonIgnoreFilter,
+                        session.Translation.GetPokemonTranslation(pokemon.PokemonId)));
+                }
+                else
+                {
+                    var distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                        session.Client.CurrentLongitude, pokemon.Latitude, pokemon.Longitude);
+                    await Task.Delay(distance > 100 ? 500 : 100, cancellationToken);
+
+                    var encounter =
+                        await
+                            session.Client.Encounter.EncounterIncensePokemon(pokemon.EncounterId,
+                                pokemon.SpawnPointId);
+
+                    if (encounter.Result == IncenseEncounterResponse.Types.Result.IncenseEncounterSuccess &&
+                        session.LogicSettings.CatchPokemon)
+                    {
+                        await CatchPokemonTask.Execute(session, cancellationToken, encounter, pokemon);
+                    }
+                    else if (encounter.Result == IncenseEncounterResponse.Types.Result.PokemonInventoryFull)
+                    {
+                        if (session.LogicSettings.TransferDuplicatePokemon)
+                        {
+                            session.EventDispatcher.Send(new WarnEvent
+                            {
+                                Message = session.Translation.GetTranslation(TranslationString.InvFullTransferring)
+                            });
+                            await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+                        }
+                        else
+                            session.EventDispatcher.Send(new WarnEvent
+                            {
+                                Message = session.Translation.GetTranslation(TranslationString.InvFullTransferManually)
+                            });
+                    }
+                    else
+                    {
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message =
+                                session.Translation.GetTranslation(TranslationString.EncounterProblem, encounter.Result)
+                        });
+                    }
+                }
+            }
+        }
+
+        public static event PokemonsEncounterDelegate PokemonEncounterEvent;
+
+        private static void OnPokemonEncounterEvent(List<MapPokemon> pokemons)
+        {
+            PokemonEncounterEvent?.Invoke(pokemons);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/CatchLurePokemonsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/CatchLurePokemonsTask.cs
new file mode 100644
index 0000000..8928b59
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/CatchLurePokemonsTask.cs
@@ -0,0 +1,79 @@
+#region using directives
+
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Map.Fort;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public static class CatchLurePokemonsTask
+    {
+        public static async Task Execute(ISession session, FortData currentFortData, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+            if (!session.LogicSettings.CatchPokemon) return;
+
+            Logger.Write(session.Translation.GetTranslation(TranslationString.LookingForLurePokemon), LogLevel.Debug);
+
+            var fortId = currentFortData.Id;
+
+            var pokemonId = currentFortData.LureInfo.ActivePokemonId;
+
+            if ((session.LogicSettings.UsePokemonSniperFilterOnly &&
+                 !session.LogicSettings.PokemonToSnipe.Pokemon.Contains(pokemonId)) ||
+                (session.LogicSettings.UsePokemonToNotCatchFilter &&
+                 session.LogicSettings.PokemonsNotToCatch.Contains(pokemonId)))
+            {
+                session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.PokemonSkipped, pokemonId)
+                });
+            }
+            else
+            {
+                var encounterId = currentFortData.LureInfo.EncounterId;
+                var encounter = await session.Client.Encounter.EncounterLurePokemon(encounterId, fortId);
+
+                if (encounter.Result == DiskEncounterResponse.Types.Result.Success && session.LogicSettings.CatchPokemon)
+                {
+                    await
+                        CatchPokemonTask.Execute(session, cancellationToken, encounter, null, currentFortData,
+                            encounterId);
+                }
+                else if (encounter.Result == DiskEncounterResponse.Types.Result.PokemonInventoryFull)
+                {
+                    if (session.LogicSettings.TransferDuplicatePokemon)
+                    {
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.InvFullTransferring)
+                        });
+                        await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+                    }
+                    else
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.InvFullTransferManually)
+                        });
+                }
+                else
+                {
+                    if (encounter.Result.ToString().Contains("NotAvailable")) return;
+                    session.EventDispatcher.Send(new WarnEvent
+                    {
+                        Message =
+                            session.Translation.GetTranslation(TranslationString.EncounterProblemLurePokemon,
+                                encounter.Result)
+                    });
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/CatchNearbyPokemonsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/CatchNearbyPokemonsTask.cs
new file mode 100644
index 0000000..7588540
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/CatchNearbyPokemonsTask.cs
@@ -0,0 +1,132 @@
+#region using directives
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Map.Pokemon;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public static class CatchNearbyPokemonsTask
+    {
+        public delegate void PokemonsEncounterDelegate(List<MapPokemon> pokemons);
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+            if (!session.LogicSettings.CatchPokemon) return;
+
+            Logger.Write(session.Translation.GetTranslation(TranslationString.LookingForPokemon), LogLevel.Debug);
+
+            var pokemons = await GetNearbyPokemons(session);
+            OnPokemonEncounterEvent(pokemons.ToList());
+            foreach (var pokemon in pokemons)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                var allitems = await session.Inventory.GetItems();
+                var pokeBallsCount = allitems.FirstOrDefault(i => i.ItemId == ItemId.ItemPokeBall)?.Count;
+                var greatBallsCount = allitems.FirstOrDefault(i => i.ItemId == ItemId.ItemGreatBall)?.Count;
+                var ultraBallsCount = allitems.FirstOrDefault(i => i.ItemId == ItemId.ItemUltraBall)?.Count;
+                var masterBallsCount = allitems.FirstOrDefault(i => i.ItemId == ItemId.ItemMasterBall)?.Count;
+
+                /*
+                var pokeBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemPokeBall);
+                var greatBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemGreatBall);
+                var ultraBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemUltraBall);
+                var masterBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemMasterBall);
+                */
+
+                if (pokeBallsCount + greatBallsCount + ultraBallsCount + masterBallsCount == 0)
+                {
+                    Logger.Write(session.Translation.GetTranslation(TranslationString.ZeroPokeballInv));
+                    return;
+                }
+
+                if ((session.LogicSettings.UsePokemonSniperFilterOnly &&
+                     !session.LogicSettings.PokemonToSnipe.Pokemon.Contains(pokemon.PokemonId)) ||
+                    (session.LogicSettings.UsePokemonToNotCatchFilter &&
+                     session.LogicSettings.PokemonsNotToCatch.Contains(pokemon.PokemonId)))
+                {
+                    Logger.Write(session.Translation.GetTranslation(TranslationString.PokemonSkipped,
+                        session.Translation.GetPokemonTranslation(pokemon.PokemonId)));
+                    continue;
+                }
+
+                var distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                    session.Client.CurrentLongitude, pokemon.Latitude, pokemon.Longitude);
+                await Task.Delay(distance > 100 ? 500 : 100, cancellationToken);
+
+                var encounter =
+                    await session.Client.Encounter.EncounterPokemon(pokemon.EncounterId, pokemon.SpawnPointId);
+
+                if (encounter.Status == EncounterResponse.Types.Status.EncounterSuccess &&
+                    session.LogicSettings.CatchPokemon)
+                {
+                    await CatchPokemonTask.Execute(session, cancellationToken, encounter, pokemon);
+                }
+                else if (encounter.Status == EncounterResponse.Types.Status.PokemonInventoryFull)
+                {
+                    if (session.LogicSettings.TransferDuplicatePokemon)
+                    {
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.InvFullTransferring)
+                        });
+                        await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+                    }
+                    else
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.InvFullTransferManually)
+                        });
+                }
+                else
+                {
+                    session.EventDispatcher.Send(new WarnEvent
+                    {
+                        Message =
+                            session.Translation.GetTranslation(TranslationString.EncounterProblem, encounter.Status)
+                    });
+                }
+
+                // If pokemon is not last pokemon in list, create delay between catches, else keep moving.
+                if (!Equals(pokemons.ElementAtOrDefault(pokemons.Count() - 1), pokemon))
+                {
+                    await Task.Delay(session.LogicSettings.DelayBetweenPokemonCatch, cancellationToken);
+                }
+            }
+        }
+
+        private static async Task<IOrderedEnumerable<MapPokemon>> GetNearbyPokemons(ISession session)
+        {
+            var mapObjects = await session.Client.Map.GetMapObjects();
+
+            var pokemons = mapObjects.Item1.MapCells.SelectMany(i => i.CatchablePokemons)
+                .OrderBy(
+                    i =>
+                        LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                            session.Client.CurrentLongitude,
+                            i.Latitude, i.Longitude));
+
+            return pokemons;
+        }
+
+        public static event PokemonsEncounterDelegate PokemonEncounterEvent;
+
+        private static void OnPokemonEncounterEvent(List<MapPokemon> pokemons)
+        {
+            PokemonEncounterEvent?.Invoke(pokemons);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/CatchPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/CatchPokemonTask.cs
new file mode 100644
index 0000000..f12e741
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/CatchPokemonTask.cs
@@ -0,0 +1,328 @@
+#region using directives
+
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Map.Fort;
+using POGOProtos.Map.Pokemon;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public static class CatchPokemonTask
+    {
+        public static int AmountOfBerries;
+        private static Random Random => new Random((int) DateTime.Now.Ticks);
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken, dynamic encounter,
+            MapPokemon pokemon,
+            FortData currentFortData = null, ulong encounterId = 0)
+        {
+            AmountOfBerries = 0;
+            cancellationToken.ThrowIfCancellationRequested();
+
+            // If the encounter is null nothing will work below, so exit now
+            if (encounter == null) return;
+
+            float probability = encounter.CaptureProbability?.CaptureProbability_[0];
+
+            // Check for pokeballs before proceeding
+            var pokeball = await GetBestBall(session, encounter, probability);
+            if (pokeball == ItemId.ItemUnknown) return;
+
+            //Calculate CP and IV
+            var pokemonCp = encounter is EncounterResponse
+                ? encounter.WildPokemon?.PokemonData?.Cp
+                : encounter.PokemonData?.Cp;
+            var pokemonIv = PokemonInfo.CalculatePokemonPerfection(encounter is EncounterResponse
+                ? encounter.WildPokemon?.PokemonData
+                : encounter?.PokemonData);
+
+            // Calculate distance away
+            var distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                session.Client.CurrentLongitude,
+                encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                    ? pokemon.Latitude
+                    : currentFortData.Latitude,
+                encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                    ? pokemon.Longitude
+                    : currentFortData.Longitude);
+
+            CatchPokemonResponse caughtPokemonResponse;
+            var attemptCounter = 1;
+            do
+            {
+                if (session.LogicSettings.MaxPokeballsPerPokemon > 0 &&
+                    attemptCounter > session.LogicSettings.MaxPokeballsPerPokemon)
+                    break;
+
+                pokeball = await GetBestBall(session, encounter, probability);
+                if (pokeball == ItemId.ItemUnknown)
+                {
+                    session.EventDispatcher.Send(new NoPokeballEvent
+                    {
+                        Id = encounter is EncounterResponse ? pokemon.PokemonId : encounter?.PokemonData.PokemonId,
+                        Cp =
+                            (encounter is EncounterResponse
+                                ? encounter.WildPokemon?.PokemonData?.Cp
+                                : encounter?.PokemonData?.Cp) ?? 0
+                    });
+                    return;
+                }
+
+                // Determine whether to use berries or not
+                if ((session.LogicSettings.UseBerriesOperator.ToLower().Equals("and") &&
+                     pokemonIv >= session.LogicSettings.UseBerriesMinIv &&
+                     pokemonCp >= session.LogicSettings.UseBerriesMinCp &&
+                     probability < session.LogicSettings.UseBerriesBelowCatchProbability) ||
+                    (session.LogicSettings.UseBerriesOperator.ToLower().Equals("or") && (
+                        pokemonIv >= session.LogicSettings.UseBerriesMinIv ||
+                        pokemonCp >= session.LogicSettings.UseBerriesMinCp ||
+                        probability < session.LogicSettings.UseBerriesBelowCatchProbability)))
+                {
+                    AmountOfBerries++;
+                    if (AmountOfBerries <= session.LogicSettings.MaxBerriesToUsePerPokemon)
+                    {
+                        await
+                            UseBerry(session,
+                                encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                                    ? pokemon.EncounterId
+                                    : encounterId,
+                                encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                                    ? pokemon.SpawnPointId
+                                    : currentFortData?.Id);
+                    }
+                }
+
+                //default to excellent throw
+                var normalizedRecticleSize = 1.95;
+                //default spin
+                var spinModifier = 1.0;
+
+                //Humanized throws
+                if (session.LogicSettings.EnableHumanizedThrows)
+                {
+                    //thresholds: https://gist.github.com/anonymous/077d6dea82d58b8febde54ae9729b1bf
+                    var spinTxt = "Curve";
+                    var hitTxt = "Excellent";
+                    if (pokemonCp > session.LogicSettings.ForceExcellentThrowOverCp ||
+                        pokemonIv > session.LogicSettings.ForceExcellentThrowOverIv)
+                    {
+                        normalizedRecticleSize = Random.NextDouble()*(1.95 - 1.7) + 1.7;
+                    }
+                    else if (pokemonCp >= session.LogicSettings.ForceGreatThrowOverCp ||
+                             pokemonIv >= session.LogicSettings.ForceGreatThrowOverIv)
+                    {
+                        normalizedRecticleSize = Random.NextDouble()*(1.95 - 1.3) + 1.3;
+                        hitTxt = "Great";
+                    }
+                    else
+                    {
+                        var regularThrow = 100 - (session.LogicSettings.ExcellentThrowChance +
+                                                  session.LogicSettings.GreatThrowChance +
+                                                  session.LogicSettings.NiceThrowChance);
+                        var rnd = Random.Next(1, 101);
+
+                        if (rnd <= regularThrow)
+                        {
+                            normalizedRecticleSize = Random.NextDouble()*(1 - 0.1) + 0.1;
+                            hitTxt = "Ordinary";
+                        }
+                        else if (rnd <= regularThrow + session.LogicSettings.NiceThrowChance)
+                        {
+                            normalizedRecticleSize = Random.NextDouble()*(1.3 - 1) + 1;
+                            hitTxt = "Nice";
+                        }
+                        else if (rnd <=
+                                 regularThrow + session.LogicSettings.NiceThrowChance +
+                                 session.LogicSettings.GreatThrowChance)
+                        {
+                            normalizedRecticleSize = Random.NextDouble()*(1.7 - 1.3) + 1.3;
+                            hitTxt = "Great";
+                        }
+
+                        if (Random.NextDouble()*100 > session.LogicSettings.CurveThrowChance)
+                        {
+                            spinModifier = 0.0;
+                            spinTxt = "Straight";
+                        }
+                    }
+
+                    //round to 2 decimals
+                    normalizedRecticleSize = Math.Round(normalizedRecticleSize, 2);
+
+                    Logger.Write($"(Threw ball) {hitTxt} hit. {spinTxt}-ball...", LogLevel.Debug);
+                }
+
+                caughtPokemonResponse =
+                    await session.Client.Encounter.CatchPokemon(
+                        encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                            ? pokemon.EncounterId
+                            : encounterId,
+                        encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                            ? pokemon.SpawnPointId
+                            : currentFortData.Id, pokeball, normalizedRecticleSize, spinModifier);
+
+                var lat = encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                    ? pokemon.Latitude
+                    : currentFortData.Latitude;
+                var lng = encounter is EncounterResponse || encounter is IncenseEncounterResponse
+                    ? pokemon.Longitude
+                    : currentFortData.Longitude;
+                var evt = new PokemonCaptureEvent
+                {
+                    Status = caughtPokemonResponse.Status,
+                    Latitude = lat,
+                    Longitude = lng
+                };
+
+                if (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess)
+                {
+                    var totalExp = 0;
+
+                    foreach (var xp in caughtPokemonResponse.CaptureAward.Xp)
+                    {
+                        totalExp += xp;
+                    }
+                    var profile = await session.Client.Player.GetPlayer();
+
+                    evt.Exp = totalExp;
+                    evt.Stardust = profile.PlayerData.Currencies.ToArray()[1].Amount;
+
+                    var pokemonSettings = await session.Inventory.GetPokemonSettings();
+                    var pokemonFamilies = await session.Inventory.GetPokemonFamilies();
+
+                    var setting =
+                        pokemonSettings.FirstOrDefault(q => pokemon != null && q.PokemonId == pokemon.PokemonId);
+                    var family = pokemonFamilies.FirstOrDefault(q => setting != null && q.FamilyId == setting.FamilyId);
+
+                    if (family != null)
+                    {
+                        family.Candy_ += caughtPokemonResponse.CaptureAward.Candy.Sum();
+
+                        evt.FamilyCandies = family.Candy_;
+                    }
+                    else
+                    {
+                        evt.FamilyCandies = caughtPokemonResponse.CaptureAward.Candy.Sum();
+                    }
+
+                    if (session.LogicSettings.TransferDuplicatePokemonOnCapture &&
+                        session.LogicSettings.TransferDuplicatePokemon)
+                        await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+                }
+
+                evt.CatchType = encounter is EncounterResponse
+                    ? session.Translation.GetTranslation(TranslationString.CatchTypeNormal)
+                    : encounter is DiskEncounterResponse
+                        ? session.Translation.GetTranslation(TranslationString.CatchTypeLure)
+                        : session.Translation.GetTranslation(TranslationString.CatchTypeIncense);
+                evt.Id = encounter is EncounterResponse ? pokemon.PokemonId : encounter?.PokemonData.PokemonId;
+                evt.Level =
+                    PokemonInfo.GetLevel(encounter is EncounterResponse
+                        ? encounter.WildPokemon?.PokemonData
+                        : encounter?.PokemonData);
+                evt.Cp = encounter is EncounterResponse
+                    ? encounter.WildPokemon?.PokemonData?.Cp
+                    : encounter?.PokemonData?.Cp ?? 0;
+                evt.MaxCp =
+                    PokemonInfo.CalculateMaxCp(encounter is EncounterResponse
+                        ? encounter.WildPokemon?.PokemonData
+                        : encounter?.PokemonData);
+                evt.Perfection =
+                    Math.Round(
+                        PokemonInfo.CalculatePokemonPerfection(encounter is EncounterResponse
+                            ? encounter.WildPokemon?.PokemonData
+                            : encounter?.PokemonData));
+                evt.Probability =
+                    Math.Round(probability*100, 2);
+                evt.Distance = distance;
+                evt.Pokeball = pokeball;
+                evt.Attempt = attemptCounter;
+                await session.Inventory.RefreshCachedInventory();
+                evt.BallAmount = await session.Inventory.GetItemAmountByType(pokeball);
+
+                session.EventDispatcher.Send(evt);
+
+                attemptCounter++;
+
+                DelayingUtils.Delay(session.LogicSettings.DelayBetweenPokemonCatch, 0);
+            } while (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchMissed ||
+                     caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchEscape);
+        }
+
+        private static async Task<ItemId> GetBestBall(ISession session, dynamic encounter, float probability)
+        {
+            var pokemonCp = encounter is EncounterResponse
+                ? encounter.WildPokemon?.PokemonData?.Cp
+                : encounter?.PokemonData?.Cp;
+            var pokemonId = encounter is EncounterResponse
+                ? encounter.WildPokemon?.PokemonData?.PokemonId
+                : encounter?.PokemonData?.PokemonId;
+            var iV =
+                Math.Round(
+                    PokemonInfo.CalculatePokemonPerfection(encounter is EncounterResponse
+                        ? encounter.WildPokemon?.PokemonData
+                        : encounter?.PokemonData), 2);
+
+            var pokeBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemPokeBall);
+            var greatBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemGreatBall);
+            var ultraBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemUltraBall);
+            var masterBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemMasterBall);
+
+            if (masterBallsCount > 0 && (
+                (!session.LogicSettings.PokemonToUseMasterball.Any() && (
+                    pokemonCp >= session.LogicSettings.UseMasterBallAboveCp ||
+                    probability < session.LogicSettings.UseMasterBallBelowCatchProbability)) ||
+                session.LogicSettings.PokemonToUseMasterball.Contains(pokemonId)))
+                return ItemId.ItemMasterBall;
+
+            if (ultraBallsCount > 0 && (
+                pokemonCp >= session.LogicSettings.UseUltraBallAboveCp ||
+                iV >= session.LogicSettings.UseUltraBallAboveIv ||
+                probability < session.LogicSettings.UseUltraBallBelowCatchProbability))
+                return ItemId.ItemUltraBall;
+
+            if (greatBallsCount > 0 && (
+                pokemonCp >= session.LogicSettings.UseGreatBallAboveCp ||
+                iV >= session.LogicSettings.UseGreatBallAboveIv ||
+                probability < session.LogicSettings.UseGreatBallBelowCatchProbability))
+                return ItemId.ItemGreatBall;
+
+            if (pokeBallsCount > 0)
+                return ItemId.ItemPokeBall;
+            if (greatBallsCount > 0)
+                return ItemId.ItemGreatBall;
+            if (ultraBallsCount > 0)
+                return ItemId.ItemUltraBall;
+            if (masterBallsCount > 0 && !session.LogicSettings.PokemonToUseMasterball.Any())
+                return ItemId.ItemMasterBall;
+
+            return ItemId.ItemUnknown;
+        }
+
+        private static async Task UseBerry(ISession session, ulong encounterId, string spawnPointId)
+        {
+            var inventoryBalls = await session.Inventory.GetItems();
+            var berries = inventoryBalls.Where(p => p.ItemId == ItemId.ItemRazzBerry);
+            var berry = berries.FirstOrDefault();
+
+            if (berry == null || berry.Count <= 0)
+                return;
+
+            await session.Client.Encounter.UseCaptureItem(encounterId, ItemId.ItemRazzBerry, spawnPointId);
+            berry.Count -= 1;
+            session.EventDispatcher.Send(new UseBerryEvent {BerryType = ItemId.ItemRazzBerry, Count = berry.Count});
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/DisplayPokemonStatsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/DisplayPokemonStatsTask.cs
new file mode 100644
index 0000000..5c077f6
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/DisplayPokemonStatsTask.cs
@@ -0,0 +1,90 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.DataDumper;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class DisplayPokemonStatsTask
+    {
+        public static List<ulong> PokemonId = new List<ulong>();
+
+        public static List<ulong> PokemonIdcp = new List<ulong>();
+
+        public static async Task Execute(ISession session)
+        {
+            var myPokemonFamilies = await session.Inventory.GetPokemonFamilies();
+            var myPokeSettings = await session.Inventory.GetPokemonSettings();
+
+            var highestsPokemonCp =
+                await session.Inventory.GetHighestsCp(session.LogicSettings.AmountOfPokemonToDisplayOnStart);
+
+            var pokemonPairedWithStatsCp =
+                highestsPokemonCp.Select(
+                    pokemon =>
+                        Tuple.Create(pokemon, PokemonInfo.CalculateMaxCp(pokemon),
+                            PokemonInfo.CalculatePokemonPerfection(pokemon), PokemonInfo.GetLevel(pokemon),
+                            PokemonInfo.GetPokemonMove1(pokemon), PokemonInfo.GetPokemonMove2(pokemon),
+                            PokemonInfo.GetCandy(pokemon, myPokemonFamilies, myPokeSettings))).ToList();
+
+            var highestsPokemonPerfect =
+                await session.Inventory.GetHighestsPerfect(session.LogicSettings.AmountOfPokemonToDisplayOnStart);
+
+            var pokemonPairedWithStatsIv =
+                highestsPokemonPerfect.Select(
+                    pokemon =>
+                        Tuple.Create(pokemon, PokemonInfo.CalculateMaxCp(pokemon),
+                            PokemonInfo.CalculatePokemonPerfection(pokemon), PokemonInfo.GetLevel(pokemon),
+                            PokemonInfo.GetPokemonMove1(pokemon), PokemonInfo.GetPokemonMove2(pokemon),
+                            PokemonInfo.GetCandy(pokemon, myPokemonFamilies, myPokeSettings))).ToList();
+
+            session.EventDispatcher.Send(
+                new DisplayHighestsPokemonEvent
+                {
+                    SortedBy = "CP",
+                    PokemonList = pokemonPairedWithStatsCp
+                });
+
+            session.EventDispatcher.Send(
+                new DisplayHighestsPokemonEvent
+                {
+                    SortedBy = "IV",
+                    PokemonList = pokemonPairedWithStatsIv
+                });
+
+            var allPokemonInBag = session.LogicSettings.PrioritizeIvOverCp
+                ? await session.Inventory.GetHighestsPerfect(1000)
+                : await session.Inventory.GetHighestsCp(1000);
+            if (session.LogicSettings.DumpPokemonStats)
+            {
+                const string dumpFileName = "PokeBagStats";
+                try
+                {
+                    Dumper.ClearDumpFile(session, dumpFileName);
+                    Dumper.Dump(session,
+                        "pokemonid,pokemonlevel,cp,perfection,stamina,staminamax,move1,move2,candy,ownername,origin,heightm,weightkg,individualattack,individualdefense,individualstamina,cpmultiplier,battlesattacked,battlesdefended,creationtimems,numupgrades,additionalcpmultiplier,favorite,nickname",
+                        dumpFileName);
+                    foreach (var pokemon in allPokemonInBag)
+                    {
+                        Dumper.Dump(session,
+                            $"{session.Translation.GetPokemonTranslation(pokemon.PokemonId)},{PokemonInfo.GetLevel(pokemon)},{pokemon.Cp},{PokemonInfo.CalculatePokemonPerfection(pokemon)},{pokemon.Stamina},{pokemon.StaminaMax},{pokemon.Move1},{pokemon.Move2},{PokemonInfo.GetCandy(pokemon, myPokemonFamilies, myPokeSettings)},{pokemon.OwnerName},{pokemon.Origin},{pokemon.HeightM},{pokemon.WeightKg},{pokemon.IndividualAttack},{pokemon.IndividualDefense},{pokemon.IndividualStamina},{pokemon.CpMultiplier},{pokemon.BattlesAttacked},{pokemon.BattlesDefended},{pokemon.CreationTimeMs},{pokemon.NumUpgrades},{pokemon.AdditionalCpMultiplier},{pokemon.Favorite},{pokemon.Nickname}",
+                            dumpFileName);
+                    }
+                }
+                catch (IOException)
+                {
+                    session.EventDispatcher.Send(new ErrorEvent {Message = $"Could not write {dumpFileName} dump file."});
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/EggsListTask.cs b/PokemonGo.RocketBot.Logic/Tasks/EggsListTask.cs
new file mode 100644
index 0000000..e9ea610
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/EggsListTask.cs
@@ -0,0 +1,48 @@
+#region using directives
+
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class EggsListTask
+    {
+        public static async Task Execute(ISession session)
+        {
+            // Refresh inventory so that the player stats are fresh
+            await session.Inventory.RefreshCachedInventory();
+
+            var playerStats = (await session.Inventory.GetPlayerStats()).FirstOrDefault();
+            if (playerStats == null)
+                return;
+
+            var kmWalked = playerStats.KmWalked;
+
+            var incubators = (await session.Inventory.GetEggIncubators())
+                .Where(x => x.UsesRemaining > 0 || x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
+                .OrderByDescending(x => x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
+                .ToList();
+
+            var unusedEggs = (await session.Inventory.GetEggs())
+                .Where(x => string.IsNullOrEmpty(x.EggIncubatorId))
+                .OrderBy(x => x.EggKmWalkedTarget - x.EggKmWalkedStart)
+                .ToList();
+
+            session.EventDispatcher.Send(
+                new EggsListEvent
+                {
+                    PlayerKmWalked = kmWalked,
+                    Incubators = incubators,
+                    UnusedEggs = unusedEggs
+                });
+
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/EvolvePokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/EvolvePokemonTask.cs
new file mode 100644
index 0000000..7f36ca8
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/EvolvePokemonTask.cs
@@ -0,0 +1,179 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Data;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class EvolvePokemonTask
+    {
+        private static DateTime _lastLuckyEggTime;
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            await session.Inventory.RefreshCachedInventory();
+            var pokemonToEvolveTask = await session.Inventory.GetPokemonToEvolve(session.LogicSettings.PokemonsToEvolve);
+            var pokemonToEvolve = pokemonToEvolveTask.Where(p => p != null).ToList();
+
+            session.EventDispatcher.Send(new EvolveCountEvent
+            {
+                Evolves = pokemonToEvolve.Count()
+            });
+
+            if (pokemonToEvolve.Any())
+            {
+                if (session.LogicSettings.KeepPokemonsThatCanEvolve)
+                {
+                    var luckyEggMin = session.LogicSettings.UseLuckyEggsMinPokemonAmount;
+                    var maxStorage = session.Profile.PlayerData.MaxPokemonStorage;
+                    var totalPokemon = await session.Inventory.GetPokemons();
+                    var totalEggs = await session.Inventory.GetEggs();
+
+                    var pokemonNeededInInventory = (maxStorage - totalEggs.Count())*
+                                                   session.LogicSettings.EvolveKeptPokemonsAtStorageUsagePercentage/
+                                                   100.0f;
+                    var needPokemonToStartEvolve = Math.Round(
+                        Math.Max(0,
+                            Math.Min(pokemonNeededInInventory, session.Profile.PlayerData.MaxPokemonStorage)));
+
+                    var deltaCount = needPokemonToStartEvolve - totalPokemon.Count();
+                    if (session.LogicSettings.UseLuckyEggsWhileEvolving)
+                    {
+                        if (luckyEggMin > maxStorage)
+                        {
+                            session.EventDispatcher.Send(new WarnEvent
+                            {
+                                Message =
+                                    session.Translation.GetTranslation(
+                                        TranslationString.UseLuckyEggsMinPokemonAmountTooHigh,
+                                        luckyEggMin, maxStorage)
+                            });
+                            return;
+                        }
+                    }
+
+                    if (deltaCount > 0)
+                    {
+                        session.EventDispatcher.Send(new UpdateEvent
+                        {
+                            Message =
+                                session.Translation.GetTranslation(TranslationString.WaitingForMorePokemonToEvolve,
+                                    pokemonToEvolve.Count, deltaCount, totalPokemon.Count(), needPokemonToStartEvolve,
+                                    session.LogicSettings.EvolveKeptPokemonsAtStorageUsagePercentage)
+                        });
+                    }
+                    else
+                    {
+                        if (await shouldUseLuckyEgg(session, pokemonToEvolve))
+                        {
+                            await UseLuckyEgg(session);
+                        }
+                        await evolve(session, pokemonToEvolve);
+                    }
+                }
+                else if (session.LogicSettings.EvolveAllPokemonWithEnoughCandy ||
+                         session.LogicSettings.EvolveAllPokemonAboveIv)
+                {
+                    if (await shouldUseLuckyEgg(session, pokemonToEvolve))
+                    {
+                        await UseLuckyEgg(session);
+                    }
+                    await evolve(session, pokemonToEvolve);
+                }
+            }
+        }
+
+        public static async Task UseLuckyEgg(ISession session)
+        {
+            var inventoryContent = await session.Inventory.GetItems();
+
+            var luckyEggs = inventoryContent.Where(p => p.ItemId == ItemId.ItemLuckyEgg);
+            var luckyEgg = luckyEggs.FirstOrDefault();
+
+            if (_lastLuckyEggTime.AddMinutes(30).Ticks > DateTime.Now.Ticks)
+                return;
+
+            _lastLuckyEggTime = DateTime.Now;
+            await session.Client.Inventory.UseItemXpBoost();
+            await session.Inventory.RefreshCachedInventory();
+            if (luckyEgg != null) session.EventDispatcher.Send(new UseLuckyEggEvent {Count = luckyEgg.Count});
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+
+        private static async Task evolve(ISession session, List<PokemonData> pokemonToEvolve)
+        {
+            foreach (var pokemon in pokemonToEvolve)
+            {
+                // no cancellationToken.ThrowIfCancellationRequested here, otherwise the lucky egg would be wasted.
+                var evolveResponse = await session.Client.Inventory.EvolvePokemon(pokemon.Id);
+
+                session.EventDispatcher.Send(new PokemonEvolveEvent
+                {
+                    Id = pokemon.PokemonId,
+                    Exp = evolveResponse.ExperienceAwarded,
+                    Result = evolveResponse.Result
+                });
+                if (!pokemonToEvolve.Last().Equals(pokemon))
+                {
+                    DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+                }
+            }
+        }
+
+        private static async Task<bool> shouldUseLuckyEgg(ISession session, List<PokemonData> pokemonToEvolve)
+        {
+            var inventoryContent = await session.Inventory.GetItems();
+
+            var luckyEggs = inventoryContent.Where(p => p.ItemId == ItemId.ItemLuckyEgg);
+            var luckyEgg = luckyEggs.FirstOrDefault();
+
+            if (session.LogicSettings.UseLuckyEggsWhileEvolving && luckyEgg != null && luckyEgg.Count > 0)
+            {
+                if (pokemonToEvolve.Count >= session.LogicSettings.UseLuckyEggsMinPokemonAmount)
+                {
+                    return true;
+                }
+                var evolvablePokemon = await session.Inventory.GetPokemons();
+
+                var deltaPokemonToUseLuckyEgg = session.LogicSettings.UseLuckyEggsMinPokemonAmount -
+                                                pokemonToEvolve.Count;
+
+                var availableSpace = session.Profile.PlayerData.MaxPokemonStorage - evolvablePokemon.Count();
+
+                if (deltaPokemonToUseLuckyEgg > availableSpace)
+                {
+                    var possibleLimitInThisIteration = pokemonToEvolve.Count + availableSpace;
+
+                    session.EventDispatcher.Send(new NoticeEvent
+                    {
+                        Message =
+                            session.Translation.GetTranslation(TranslationString.UseLuckyEggsMinPokemonAmountTooHigh,
+                                session.LogicSettings.UseLuckyEggsMinPokemonAmount, possibleLimitInThisIteration)
+                    });
+                }
+                else
+                {
+                    session.EventDispatcher.Send(new NoticeEvent
+                    {
+                        Message = session.Translation.GetTranslation(TranslationString.CatchMorePokemonToUseLuckyEgg,
+                            deltaPokemonToUseLuckyEgg)
+                    });
+                }
+            }
+            return false;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/EvolveSpecificPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/EvolveSpecificPokemonTask.cs
new file mode 100644
index 0000000..e101684
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/EvolveSpecificPokemonTask.cs
@@ -0,0 +1,34 @@
+#region using directives
+
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class EvolveSpecificPokemonTask
+    {
+        public static async Task Execute(ISession session, ulong pokemonId)
+        {
+            var all = await session.Inventory.GetPokemons();
+            var pokemons = all.OrderByDescending(x => x.Cp).ThenBy(n => n.StaminaMax);
+            var pokemon = pokemons.FirstOrDefault(p => p.Id == pokemonId);
+
+            if (pokemon == null) return;
+
+            var evolveResponse = await session.Client.Inventory.EvolvePokemon(pokemon.Id);
+
+            session.EventDispatcher.Send(new PokemonEvolveEvent
+            {
+                Id = pokemon.PokemonId,
+                Exp = evolveResponse.ExperienceAwarded,
+                Result = evolveResponse.Result
+            });
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/Farm.cs b/PokemonGo.RocketBot.Logic/Tasks/Farm.cs
new file mode 100644
index 0000000..d04d257
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/Farm.cs
@@ -0,0 +1,83 @@
+#region using directives
+
+using System.Threading;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public interface IFarm
+    {
+        void Run(CancellationToken cancellationToken);
+    }
+
+    public class Farm : IFarm
+    {
+        private readonly ISession _session;
+
+        public Farm(ISession session)
+        {
+            _session = session;
+        }
+
+        public void Run(CancellationToken cancellationToken)
+        {
+            if (_session.LogicSettings.EvolveAllPokemonAboveIv || _session.LogicSettings.EvolveAllPokemonWithEnoughCandy
+                || _session.LogicSettings.UseLuckyEggsWhileEvolving || _session.LogicSettings.KeepPokemonsThatCanEvolve)
+            {
+                EvolvePokemonTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+            if (_session.LogicSettings.AutomaticallyLevelUpPokemon)
+            {
+                LevelUpPokemonTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+            if (_session.LogicSettings.UseLuckyEggConstantly)
+            {
+                UseLuckyEggConstantlyTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+            if (_session.LogicSettings.UseIncenseConstantly)
+            {
+                UseIncenseConstantlyTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            if (_session.LogicSettings.TransferDuplicatePokemon)
+            {
+                TransferDuplicatePokemonTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            if (_session.LogicSettings.TransferWeakPokemon)
+            {
+                TransferWeakPokemonTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            if (_session.LogicSettings.RenamePokemon)
+            {
+                RenamePokemonTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            if (_session.LogicSettings.AutoFavoritePokemon)
+            {
+                FavoritePokemonTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            RecycleItemsTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+
+            if (_session.LogicSettings.UseEggIncubators)
+            {
+                UseIncubatorsTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            if (_session.LogicSettings.UseGpxPathing)
+            {
+                FarmPokestopsGpxTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+            else
+            {
+                FarmPokestopsTask.Execute(_session, cancellationToken).Wait(cancellationToken);
+            }
+
+            GetPokeDexCount.Execute(_session, cancellationToken).Wait(cancellationToken);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsGPXTask.cs b/PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsGPXTask.cs
new file mode 100644
index 0000000..74b1580
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsGPXTask.cs
@@ -0,0 +1,217 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketAPI.Extensions;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Map.Fort;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public static class FarmPokestopsGpxTask
+    {
+        private static DateTime _lastTasksCall = DateTime.Now;
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            var tracks = GetGpxTracks(session);
+            var eggWalker = new EggWalker(1000, session);
+
+            for (var curTrk = 0; curTrk < tracks.Count; curTrk++)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                var track = tracks.ElementAt(curTrk);
+                var trackSegments = track.Segments;
+                for (var curTrkSeg = 0; curTrkSeg < trackSegments.Count; curTrkSeg++)
+                {
+                    cancellationToken.ThrowIfCancellationRequested();
+
+                    var trackPoints = track.Segments.ElementAt(curTrkSeg).TrackPoints;
+                    for (var curTrkPt = 0; curTrkPt < trackPoints.Count; curTrkPt++)
+                    {
+                        cancellationToken.ThrowIfCancellationRequested();
+
+                        var nextPoint = trackPoints.ElementAt(curTrkPt);
+                        var distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                            session.Client.CurrentLongitude,
+                            Convert.ToDouble(nextPoint.Lat, CultureInfo.InvariantCulture),
+                            Convert.ToDouble(nextPoint.Lon, CultureInfo.InvariantCulture));
+
+                        if (distance > 5000)
+                        {
+                            session.EventDispatcher.Send(new ErrorEvent
+                            {
+                                Message =
+                                    session.Translation.GetTranslation(TranslationString.DesiredDestTooFar,
+                                        nextPoint.Lat, nextPoint.Lon, session.Client.CurrentLatitude,
+                                        session.Client.CurrentLongitude)
+                            });
+                            break;
+                        }
+
+                        var pokestopList = await GetPokeStops(session);
+                        session.EventDispatcher.Send(new PokeStopListEvent {Forts = pokestopList});
+
+                        while (pokestopList.Any())
+                            // warning: this is never entered due to ps cooldowns from UseNearbyPokestopsTask
+                        {
+                            cancellationToken.ThrowIfCancellationRequested();
+
+                            pokestopList =
+                                pokestopList.OrderBy(
+                                    i =>
+                                        LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                                            session.Client.CurrentLongitude, i.Latitude, i.Longitude)).ToList();
+                            var pokeStop = pokestopList[0];
+                            pokestopList.RemoveAt(0);
+
+                            var fortInfo =
+                                await session.Client.Fort.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+
+                            if (pokeStop.LureInfo != null)
+                            {
+                                await CatchLurePokemonsTask.Execute(session, pokeStop, cancellationToken);
+                            }
+
+                            var fortSearch =
+                                await session.Client.Fort.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+
+                            if (fortSearch.ExperienceAwarded > 0)
+                            {
+                                session.EventDispatcher.Send(new FortUsedEvent
+                                {
+                                    Id = pokeStop.Id,
+                                    Name = fortInfo.Name,
+                                    Exp = fortSearch.ExperienceAwarded,
+                                    Gems = fortSearch.GemsAwarded,
+                                    Items = StringUtils.GetSummedFriendlyNameOfItemAwardList(fortSearch.ItemsAwarded),
+                                    Latitude = pokeStop.Latitude,
+                                    Longitude = pokeStop.Longitude
+                                });
+                            }
+                            else
+                            {
+                                await RecycleItemsTask.Execute(session, cancellationToken);
+                            }
+
+                            if (fortSearch.ItemsAwarded.Count > 0)
+                            {
+                                await session.Inventory.RefreshCachedInventory();
+                            }
+                        }
+
+                        if (DateTime.Now > _lastTasksCall)
+                        {
+                            _lastTasksCall =
+                                DateTime.Now.AddMilliseconds(Math.Min(session.LogicSettings.DelayBetweenPlayerActions,
+                                    3000));
+
+                            await RecycleItemsTask.Execute(session, cancellationToken);
+
+                            if (session.LogicSettings.EvolveAllPokemonWithEnoughCandy ||
+                                session.LogicSettings.EvolveAllPokemonAboveIv ||
+                                session.LogicSettings.UseLuckyEggsWhileEvolving ||
+                                session.LogicSettings.KeepPokemonsThatCanEvolve)
+                            {
+                                await EvolvePokemonTask.Execute(session, cancellationToken);
+                            }
+                            await GetPokeDexCount.Execute(session, cancellationToken);
+
+                            if (session.LogicSettings.AutomaticallyLevelUpPokemon)
+                            {
+                                await LevelUpPokemonTask.Execute(session, cancellationToken);
+                            }
+                            if (session.LogicSettings.UseLuckyEggConstantly)
+                            {
+                                await UseLuckyEggConstantlyTask.Execute(session, cancellationToken);
+                            }
+                            if (session.LogicSettings.UseIncenseConstantly)
+                            {
+                                await UseIncenseConstantlyTask.Execute(session, cancellationToken);
+                            }
+                            if (session.LogicSettings.TransferDuplicatePokemon)
+                            {
+                                await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+                            }
+                            if (session.LogicSettings.TransferWeakPokemon)
+                            {
+                                await TransferWeakPokemonTask.Execute(session, cancellationToken);
+                            }
+                            if (session.LogicSettings.RenamePokemon)
+                            {
+                                await RenamePokemonTask.Execute(session, cancellationToken);
+                            }
+
+                            if (session.LogicSettings.AutoFavoritePokemon)
+                            {
+                                await FavoritePokemonTask.Execute(session, cancellationToken);
+                            }
+
+                            if (session.LogicSettings.SnipeAtPokestops || session.LogicSettings.UseSnipeLocationServer)
+                            {
+                                await SnipePokemonTask.Execute(session, cancellationToken);
+                            }
+                        }
+
+                        await session.Navigation.HumanPathWalking(
+                            trackPoints.ElementAt(curTrkPt),
+                            async () =>
+                            {
+                                await CatchNearbyPokemonsTask.Execute(session, cancellationToken);
+                                //Catch Incense Pokemon
+                                await CatchIncensePokemonsTask.Execute(session, cancellationToken);
+                                await UseNearbyPokestopsTask.Execute(session, cancellationToken);
+                                return true;
+                            },
+                            session,
+                            cancellationToken);
+
+                        await eggWalker.ApplyDistance(distance, cancellationToken);
+                    } //end trkpts
+                } //end trksegs
+            } //end tracks
+        }
+
+        private static List<GpxReader.Trk> GetGpxTracks(ISession session)
+        {
+            var xmlString = File.ReadAllText(session.LogicSettings.GpxFile);
+            var readgpx = new GpxReader(xmlString, session);
+            return readgpx.Tracks;
+        }
+
+        //Please do not change GetPokeStops() in this file, it's specifically set
+        //to only find stops within 40 meters
+        //this is for gpx pathing, we are not going to the pokestops,
+        //so do not make it more than 40 because it will never get close to those stops.
+        private static async Task<List<FortData>> GetPokeStops(ISession session)
+        {
+            var mapObjects = await session.Client.Map.GetMapObjects();
+
+            // Wasn't sure how to make this pretty. Edit as needed.
+            var pokeStops = mapObjects.Item1.MapCells.SelectMany(i => i.Forts)
+                .Where(
+                    i =>
+                        i.Type == FortType.Checkpoint &&
+                        i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime() &&
+                        ( // Make sure PokeStop is within 40 meters or else it is pointless to hit it
+                            LocationUtils.CalculateDistanceInMeters(
+                                session.Client.CurrentLatitude, session.Client.CurrentLongitude,
+                                i.Latitude, i.Longitude) < 40) ||
+                        session.LogicSettings.MaxTravelDistanceInMeters == 0
+                );
+
+            return pokeStops.ToList();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsTask.cs
new file mode 100644
index 0000000..a8ac497
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/FarmPokestopsTask.cs
@@ -0,0 +1,263 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using GeoCoordinatePortable;
+using PokemonGo.RocketAPI.Extensions;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Map.Fort;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public static class FarmPokestopsTask
+    {
+        public delegate void LootPokestopDelegate(FortData pokestop);
+
+        public static int TimesZeroXPawarded;
+        private static int _storeRi;
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var distanceFromStart = LocationUtils.CalculateDistanceInMeters(
+                session.Settings.DefaultLatitude, session.Settings.DefaultLongitude,
+                session.Client.CurrentLatitude, session.Client.CurrentLongitude);
+
+            // Edge case for when the client somehow ends up outside the defined radius
+            if (session.LogicSettings.MaxTravelDistanceInMeters != 0 &&
+                distanceFromStart > session.LogicSettings.MaxTravelDistanceInMeters)
+            {
+                Logger.Write(
+                    session.Translation.GetTranslation(TranslationString.FarmPokestopsOutsideRadius, distanceFromStart),
+                    LogLevel.Warning);
+
+                await session.Navigation.Move(new GeoCoordinate(
+                    session.Settings.DefaultLatitude,
+                    session.Settings.DefaultLongitude,
+                    LocationUtils.getElevation(session.Settings.DefaultLatitude,
+                        session.Settings.DefaultLongitude)),
+                    null,
+                    session,
+                    cancellationToken);
+            }
+
+            var pokestopList = await GetPokeStops(session);
+
+            //get optimized route
+            var pokeStops = RouteOptimizeUtil.Optimize(pokestopList.ToArray(), session.Client.CurrentLatitude,
+                session.Client.CurrentLongitude);
+
+            var stopsHit = 0;
+            var rc = new Random(); //initialize pokestop random cleanup counter first time
+            _storeRi = rc.Next(8, 15);
+            var eggWalker = new EggWalker(1000, session);
+
+            if (pokestopList.Count <= 0)
+            {
+                session.EventDispatcher.Send(new WarnEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.FarmPokestopsNoUsableFound)
+                });
+            }
+
+            session.EventDispatcher.Send(new PokeStopListEvent {Forts = pokestopList});
+
+            foreach (var pokeStop in pokeStops)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                var distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                    session.Client.CurrentLongitude, pokeStop.Latitude, pokeStop.Longitude);
+                var fortInfo = await session.Client.Fort.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+
+                session.EventDispatcher.Send(new FortTargetEvent {Name = fortInfo.Name, Distance = distance});
+
+                var targetLocation = new GeoCoordinate(pokeStop.Latitude, pokeStop.Longitude,
+                    LocationUtils.getElevation(pokeStop.Latitude, pokeStop.Longitude));
+                await session.Navigation.Move(targetLocation,
+                    async () =>
+                    {
+                        // Catch normal map Pokemon
+                        await CatchNearbyPokemonsTask.Execute(session, cancellationToken);
+                        //Catch Incense Pokemon
+                        await CatchIncensePokemonsTask.Execute(session, cancellationToken);
+                        return true;
+                    },
+                    session,
+                    cancellationToken);
+
+                //Check if pokestop is in range, if not, move to pokestop without google routing
+                if (
+                    LocationUtils.CalculateDistanceInMeters(targetLocation,
+                        new GeoCoordinate(session.Client.CurrentLatitude, session.Client.CurrentLongitude)) >= 30)
+                    await session.Navigation.Move(targetLocation, null, session, cancellationToken, true);
+
+                //Catch Lure Pokemon
+                if (pokeStop.LureInfo != null)
+                {
+                    await CatchLurePokemonsTask.Execute(session, pokeStop, cancellationToken);
+                }
+
+                FortSearchResponse fortSearch;
+                var timesZeroXPawarded = 0;
+                var fortTry = 0; //Current check
+                const int retryNumber = 50; //How many times it needs to check to clear softban
+                const int zeroCheck = 5; //How many times it checks fort before it thinks it's softban
+                do
+                {
+                    cancellationToken.ThrowIfCancellationRequested();
+
+                    fortSearch =
+                        await session.Client.Fort.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+                    if (fortSearch.ExperienceAwarded > 0 && timesZeroXPawarded > 0) timesZeroXPawarded = 0;
+                    if (fortSearch.ExperienceAwarded == 0)
+                    {
+                        timesZeroXPawarded++;
+
+                        if (timesZeroXPawarded > zeroCheck)
+                        {
+                            if ((int) fortSearch.CooldownCompleteTimestampMs != 0)
+                            {
+                                break;
+                                // Check if successfully looted, if so program can continue as this was "false alarm".
+                            }
+
+                            fortTry += 1;
+
+                            session.EventDispatcher.Send(new FortFailedEvent
+                            {
+                                Name = fortInfo.Name,
+                                Try = fortTry,
+                                Max = retryNumber - zeroCheck,
+                                Looted = false
+                            });
+
+                            if (!session.LogicSettings.FastSoftBanBypass)
+                            {
+                                DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        if (fortTry != 0)
+                        {
+                            session.EventDispatcher.Send(new FortFailedEvent
+                            {
+                                Name = fortInfo.Name,
+                                Try = fortTry + 1,
+                                Max = retryNumber - zeroCheck,
+                                Looted = true
+                            });
+                        }
+
+                        session.EventDispatcher.Send(new FortUsedEvent
+                        {
+                            Id = pokeStop.Id,
+                            Name = fortInfo.Name,
+                            Exp = fortSearch.ExperienceAwarded,
+                            Gems = fortSearch.GemsAwarded,
+                            Items = StringUtils.GetSummedFriendlyNameOfItemAwardList(fortSearch.ItemsAwarded),
+                            Latitude = pokeStop.Latitude,
+                            Longitude = pokeStop.Longitude,
+                            InventoryFull = fortSearch.Result == FortSearchResponse.Types.Result.InventoryFull
+                        });
+
+                        if (fortSearch.Result == FortSearchResponse.Types.Result.InventoryFull)
+                            _storeRi = 1;
+
+                        OnLootPokestopEvent(pokeStop);
+                        break; //Continue with program as loot was succesfull.
+                    }
+                } while (fortTry < retryNumber - zeroCheck);
+                //Stop trying if softban is cleaned earlier or if 40 times fort looting failed.
+
+                await eggWalker.ApplyDistance(distance, cancellationToken);
+
+                if (++stopsHit >= _storeRi)
+                    //TODO: OR item/pokemon bag is full //check stopsHit against storeRI random without dividing.
+                {
+                    _storeRi = rc.Next(6, 12); //set new storeRI for new random value
+                    stopsHit = 0;
+
+                    await RecycleItemsTask.Execute(session, cancellationToken);
+
+                    if (fortSearch.ItemsAwarded.Count > 0)
+                        await session.Inventory.RefreshCachedInventory();
+
+                    if (session.LogicSettings.EvolveAllPokemonWithEnoughCandy ||
+                        session.LogicSettings.EvolveAllPokemonAboveIv ||
+                        session.LogicSettings.UseLuckyEggsWhileEvolving ||
+                        session.LogicSettings.KeepPokemonsThatCanEvolve)
+                    {
+                        await EvolvePokemonTask.Execute(session, cancellationToken);
+                    }
+
+                    if (session.LogicSettings.UseLuckyEggConstantly)
+                        await UseLuckyEggConstantlyTask.Execute(session, cancellationToken);
+
+                    if (session.LogicSettings.UseIncenseConstantly)
+                        await UseIncenseConstantlyTask.Execute(session, cancellationToken);
+
+                    if (session.LogicSettings.TransferDuplicatePokemon)
+                        await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+
+                    if (session.LogicSettings.TransferWeakPokemon)
+                        await TransferWeakPokemonTask.Execute(session, cancellationToken);
+
+                    if (session.LogicSettings.RenamePokemon)
+                        await RenamePokemonTask.Execute(session, cancellationToken);
+
+                    if (session.LogicSettings.AutoFavoritePokemon)
+                        await FavoritePokemonTask.Execute(session, cancellationToken);
+
+                    if (session.LogicSettings.AutomaticallyLevelUpPokemon)
+                        await LevelUpPokemonTask.Execute(session, cancellationToken);
+
+                    await GetPokeDexCount.Execute(session, cancellationToken);
+                }
+
+                if (session.LogicSettings.SnipeAtPokestops || session.LogicSettings.UseSnipeLocationServer)
+                    await SnipePokemonTask.Execute(session, cancellationToken);
+            }
+        }
+
+        private static async Task<List<FortData>> GetPokeStops(ISession session)
+        {
+            var mapObjects = await session.Client.Map.GetMapObjects();
+
+            // Wasn't sure how to make this pretty. Edit as needed.
+            var pokeStops = mapObjects.Item1.MapCells.SelectMany(i => i.Forts)
+                .Where(
+                    i =>
+                        i.Type == FortType.Checkpoint &&
+                        i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime() &&
+                        ( // Make sure PokeStop is within max travel distance, unless it's set to 0.
+                            LocationUtils.CalculateDistanceInMeters(
+                                session.Settings.DefaultLatitude, session.Settings.DefaultLongitude,
+                                i.Latitude, i.Longitude) < session.LogicSettings.MaxTravelDistanceInMeters ||
+                            session.LogicSettings.MaxTravelDistanceInMeters == 0)
+                );
+
+            return pokeStops.ToList();
+        }
+
+        private static void OnLootPokestopEvent(FortData pokestop)
+        {
+            LootPokestopEvent?.Invoke(pokestop);
+        }
+
+        public static event LootPokestopDelegate LootPokestopEvent;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/FavoritePokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/FavoritePokemonTask.cs
new file mode 100644
index 0000000..ea0172b
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/FavoritePokemonTask.cs
@@ -0,0 +1,44 @@
+#region using directives
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class FavoritePokemonTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var pokemons = await session.Inventory.GetPokemons();
+
+            foreach (var pokemon in pokemons)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                var perfection = Math.Round(PokemonInfo.CalculatePokemonPerfection(pokemon));
+
+                if (session.LogicSettings.AutoFavoritePokemon &&
+                    perfection >= session.LogicSettings.FavoriteMinIvPercentage && pokemon.Favorite != 1)
+                {
+                    await session.Client.Inventory.SetFavoritePokemon(pokemon.Id, true);
+
+                    session.EventDispatcher.Send(new NoticeEvent
+                    {
+                        Message =
+                            session.Translation.GetTranslation(TranslationString.PokemonFavorite, perfection,
+                                session.Translation.GetPokemonTranslation(pokemon.PokemonId), pokemon.Cp)
+                    });
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/GetPokeDexCount.cs b/PokemonGo.RocketBot.Logic/Tasks/GetPokeDexCount.cs
new file mode 100644
index 0000000..d309301
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/GetPokeDexCount.cs
@@ -0,0 +1,30 @@
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class GetPokeDexCount
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            var PokeDex = await session.Inventory.GetPokeDexItems();
+            var _totalUniqueEncounters =
+                PokeDex.Select(
+                    i =>
+                        new
+                        {
+                            Pokemon = i.InventoryItemData.PokedexEntry.PokemonId,
+                            Captures = i.InventoryItemData.PokedexEntry.TimesCaptured
+                        });
+            var _totalCaptures = _totalUniqueEncounters.Count(i => i.Captures > 0);
+            var _totalData = PokeDex.Count();
+
+            Logger.Write(session.Translation.GetTranslation(TranslationString.AmountPkmSeenCaught, _totalData,
+                _totalCaptures));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/InventoryListTask.cs b/PokemonGo.RocketBot.Logic/Tasks/InventoryListTask.cs
new file mode 100644
index 0000000..8b93bcc
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/InventoryListTask.cs
@@ -0,0 +1,27 @@
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class InventoryListTask
+    {
+        public static async Task Execute(ISession session)
+        {
+            // Refresh inventory so that the player stats are fresh
+            await session.Inventory.RefreshCachedInventory();
+
+            var inventory = await session.Inventory.GetItems();
+
+            session.EventDispatcher.Send(
+                new InventoryListEvent
+                {
+                    Items = inventory.ToList()
+                });
+
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/LevelUpPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/LevelUpPokemonTask.cs
new file mode 100644
index 0000000..3c57c81
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/LevelUpPokemonTask.cs
@@ -0,0 +1,106 @@
+#region using directives
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Data;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class LevelUpPokemonTask
+    {
+        public static List<PokemonData> Upgrade = new List<PokemonData>();
+        private static IEnumerable<PokemonData> upgradablePokemon;
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            if (session.Inventory.GetStarDust() <= session.LogicSettings.GetMinStarDustForLevelUp)
+                return;
+            upgradablePokemon = await session.Inventory.GetPokemonToUpgrade();
+            if (session.LogicSettings.OnlyUpgradeFavorites)
+            {
+                var fave = upgradablePokemon.Where(i => i.Favorite == 1);
+                upgradablePokemon = fave;
+            }
+
+
+            if (upgradablePokemon.Count() == 0)
+                return;
+
+            var myPokemonSettings = await session.Inventory.GetPokemonSettings();
+            var pokemonSettings = myPokemonSettings.ToList();
+
+            var myPokemonFamilies = await session.Inventory.GetPokemonFamilies();
+            var pokemonFamilies = myPokemonFamilies.ToArray();
+
+            var upgradedNumber = 0;
+            var PokemonToLevel = session.LogicSettings.PokemonsToLevelUp;
+
+            foreach (var pokemon in upgradablePokemon)
+            {
+                if (session.LogicSettings.UseLevelUpList && PokemonToLevel != null)
+                {
+                    for (var i = 0; i < PokemonToLevel.Count; i++)
+                    {
+                        if (PokemonToLevel.Contains(pokemon.PokemonId))
+                        {
+                            if (PokemonInfo.GetLevel(pokemon) >=
+                                session.Inventory.GetPlayerStats().Result.FirstOrDefault().Level + 1) break;
+
+                            var settings = pokemonSettings.Single(x => x.PokemonId == pokemon.PokemonId);
+                            var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId);
+
+                            if (familyCandy.Candy_ <= 0) continue;
+
+                            var upgradeResult = await session.Inventory.UpgradePokemon(pokemon.Id);
+                            if (upgradeResult.Result.ToString().ToLower().Contains("success"))
+                            {
+                                Logger.Write("Pokemon Upgraded:" +
+                                             session.Translation.GetPokemonTranslation(
+                                                 upgradeResult.UpgradedPokemon.PokemonId) + ":" +
+                                             upgradeResult.UpgradedPokemon.Cp, LogLevel.LevelUp);
+                                upgradedNumber++;
+                            }
+
+                            if (upgradedNumber >= session.LogicSettings.AmountOfTimesToUpgradeLoop)
+                                break;
+                        }
+                        else
+                        {
+                            break;
+                        }
+                    }
+                }
+                else
+                {
+                    if (PokemonInfo.GetLevel(pokemon) >=
+                        session.Inventory.GetPlayerStats().Result.FirstOrDefault().Level + 1) break;
+
+                    var settings = pokemonSettings.Single(x => x.PokemonId == pokemon.PokemonId);
+                    var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId);
+
+                    if (familyCandy.Candy_ <= 0) continue;
+
+                    var upgradeResult = await session.Inventory.UpgradePokemon(pokemon.Id);
+                    if (upgradeResult.Result.ToString().ToLower().Contains("success"))
+                    {
+                        Logger.Write(
+                            "Pokemon Upgraded:" +
+                            session.Translation.GetPokemonTranslation(upgradeResult.UpgradedPokemon.PokemonId) + ":" +
+                            upgradeResult.UpgradedPokemon.Cp, LogLevel.LevelUp);
+                        upgradedNumber++;
+                    }
+
+                    if (upgradedNumber >= session.LogicSettings.AmountOfTimesToUpgradeLoop)
+                        break;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/LevelUpSpecificPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/LevelUpSpecificPokemonTask.cs
new file mode 100644
index 0000000..f895871
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/LevelUpSpecificPokemonTask.cs
@@ -0,0 +1,29 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class LevelUpSpecificPokemonTask
+    {
+        public static async Task Execute(ISession session, ulong pokemonId)
+        {
+            var upgradeResult = await session.Inventory.UpgradePokemon(pokemonId);
+            if (upgradeResult.Result == UpgradePokemonResponse.Types.Result.Success)
+            {
+                Logger.Write("Pokemon Upgraded: " +
+                             session.Translation.GetPokemonTranslation(
+                                 upgradeResult.UpgradedPokemon.PokemonId) + ": " +
+                             upgradeResult.UpgradedPokemon.Cp, LogLevel.LevelUp);
+            }
+            else
+            {
+                Logger.Write("Pokemon Upgrade Failed.", LogLevel.Warning);
+            }
+
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/Login.cs b/PokemonGo.RocketBot.Logic/Tasks/Login.cs
new file mode 100644
index 0000000..5106b77
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/Login.cs
@@ -0,0 +1,86 @@
+#region using directives
+
+using System;
+using PokemonGo.RocketAPI.Enums;
+using PokemonGo.RocketAPI.Exceptions;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public interface ILogin
+    {
+        void DoLogin();
+    }
+
+    public class Login : ILogin
+    {
+        private readonly ISession _session;
+
+        public Login(ISession session)
+        {
+            _session = session;
+        }
+
+        public async void DoLogin()
+        {
+            try
+            {
+                if (_session.Settings.AuthType != AuthType.Google || _session.Settings.AuthType != AuthType.Ptc)
+                {
+                    await _session.Client.Login.DoLogin();
+                }
+                else
+                {
+                    _session.EventDispatcher.Send(new ErrorEvent
+                    {
+                        Message = _session.Translation.GetTranslation(TranslationString.WrongAuthType)
+                    });
+                }
+            }
+            catch (AggregateException ae)
+            {
+                throw ae.Flatten().InnerException;
+            }
+            catch (LoginFailedException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.LoginInvalid)
+                });
+            }
+            catch (Exception ex) when (ex is PtcOfflineException || ex is AccessTokenExpiredException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.PtcOffline)
+                });
+                _session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 20)
+                });
+            }
+            catch (PtcOfflineException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.PtcOffline)
+                });
+                _session.EventDispatcher.Send(new NoticeEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.TryingAgainIn, 20)
+                });
+            }
+            catch (AccountNotVerifiedException)
+            {
+                _session.EventDispatcher.Send(new ErrorEvent
+                {
+                    Message = _session.Translation.GetTranslation(TranslationString.AccountNotVerified)
+                });
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/PokemonListTask.cs b/PokemonGo.RocketBot.Logic/Tasks/PokemonListTask.cs
new file mode 100644
index 0000000..9eb2307
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/PokemonListTask.cs
@@ -0,0 +1,49 @@
+#region using directives
+
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class PokemonListTask
+    {
+        public static async Task Execute(ISession session)
+        {
+            // Refresh inventory so that the player stats are fresh
+            await session.Inventory.RefreshCachedInventory();
+
+            var myPokemonSettings = await session.Inventory.GetPokemonSettings();
+            var pokemonSettings = myPokemonSettings.ToList();
+
+            var myPokemonFamilies = await session.Inventory.GetPokemonFamilies();
+            var pokemonFamilies = myPokemonFamilies.ToArray();
+
+            var allPokemonInBag = await session.Inventory.GetHighestsCp(1000);
+
+            var pkmWithIv = allPokemonInBag.Select(p =>
+            {
+                var settings = pokemonSettings.Single(x => x.PokemonId == p.PokemonId);
+                return Tuple.Create(
+                    p,
+                    PokemonInfo.CalculatePokemonPerfection(p),
+                    pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId).Candy_
+                    );
+            });
+
+            session.EventDispatcher.Send(
+                new PokemonListEvent
+                {
+                    PokemonList = pkmWithIv.ToList()
+                });
+
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/RecycleItemsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/RecycleItemsTask.cs
new file mode 100644
index 0000000..960b562
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/RecycleItemsTask.cs
@@ -0,0 +1,296 @@
+#region using directives
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class RecycleItemsTask
+    {
+        private static int _diff;
+        private static readonly Random rnd = new Random();
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var currentTotalItems = await session.Inventory.GetTotalItemCount();
+            if (session.Profile.PlayerData.MaxItemStorage * session.LogicSettings.RecycleInventoryAtUsagePercentage / 100.0f >
+                currentTotalItems)
+                return;
+
+            var currentAmountOfPokeballs = await session.Inventory.GetItemAmountByType(ItemId.ItemPokeBall);
+            var currentAmountOfGreatballs = await session.Inventory.GetItemAmountByType(ItemId.ItemGreatBall);
+            var currentAmountOfUltraballs = await session.Inventory.GetItemAmountByType(ItemId.ItemUltraBall);
+            var currentAmountOfMasterballs = await session.Inventory.GetItemAmountByType(ItemId.ItemMasterBall);
+
+            if (session.LogicSettings.DetailedCountsBeforeRecycling)
+                Logger.Write(session.Translation.GetTranslation(TranslationString.CurrentPokeballInv,
+                    currentAmountOfPokeballs, currentAmountOfGreatballs, currentAmountOfUltraballs,
+                    currentAmountOfMasterballs));
+
+            var currentPotions = await session.Inventory.GetItemAmountByType(ItemId.ItemPotion);
+            var currentSuperPotions = await session.Inventory.GetItemAmountByType(ItemId.ItemSuperPotion);
+            var currentHyperPotions = await session.Inventory.GetItemAmountByType(ItemId.ItemHyperPotion);
+            var currentMaxPotions = await session.Inventory.GetItemAmountByType(ItemId.ItemMaxPotion);
+
+            var currentAmountOfPotions = currentPotions + currentSuperPotions + currentHyperPotions + currentMaxPotions;
+
+            if (session.LogicSettings.DetailedCountsBeforeRecycling)
+                Logger.Write(session.Translation.GetTranslation(TranslationString.CurrentPotionInv,
+                    currentPotions, currentSuperPotions, currentHyperPotions, currentMaxPotions));
+
+            var currentRevives = await session.Inventory.GetItemAmountByType(ItemId.ItemRevive);
+            var currentMaxRevives = await session.Inventory.GetItemAmountByType(ItemId.ItemMaxRevive);
+
+            var currentAmountOfRevives = currentRevives + currentMaxRevives;
+
+            if (session.LogicSettings.DetailedCountsBeforeRecycling)
+                Logger.Write(session.Translation.GetTranslation(TranslationString.CurrentReviveInv,
+                    currentRevives, currentMaxRevives));
+
+            var currentAmountOfBerries = await session.Inventory.GetItemAmountByType(ItemId.ItemRazzBerry) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemBlukBerry) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemNanabBerry) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemWeparBerry) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemPinapBerry);
+            var currentAmountOfIncense = await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseOrdinary) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseSpicy) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseCool) +
+                                         await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseFloral);
+            var currentAmountOfLuckyEggs = await session.Inventory.GetItemAmountByType(ItemId.ItemLuckyEgg);
+            var currentAmountOfLures = await session.Inventory.GetItemAmountByType(ItemId.ItemTroyDisk);
+
+            if (session.LogicSettings.DetailedCountsBeforeRecycling)
+                Logger.Write(session.Translation.GetTranslation(TranslationString.CurrentMiscItemInv,
+                    currentAmountOfBerries, currentAmountOfIncense, currentAmountOfLuckyEggs, currentAmountOfLures));
+
+            if (session.LogicSettings.TotalAmountOfPokeballsToKeep != 0)
+                await OptimizedRecycleBalls(session, cancellationToken);
+
+            if (!session.LogicSettings.VerboseRecycling)
+                Logger.Write(session.Translation.GetTranslation(TranslationString.RecyclingQuietly), LogLevel.Recycling);
+
+            if (session.LogicSettings.TotalAmountOfPotionsToKeep >= 0)
+                await OptimizedRecyclePotions(session, cancellationToken);
+
+            if (session.LogicSettings.TotalAmountOfRevivesToKeep >= 0)
+                await OptimizedRecycleRevives(session, cancellationToken);
+
+            if (session.LogicSettings.TotalAmountOfBerriesToKeep >= 0)
+                await OptimizedRecycleBerries(session, cancellationToken);
+
+            await session.Inventory.RefreshCachedInventory();
+            currentTotalItems = await session.Inventory.GetTotalItemCount();
+            if (session.Profile.PlayerData.MaxItemStorage * session.LogicSettings.RecycleInventoryAtUsagePercentage / 100.0f >
+                currentTotalItems)
+                return;
+
+            var items = await session.Inventory.GetItemsToRecycle(session);
+
+            foreach (var item in items)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                await session.Client.Inventory.RecycleItem(item.ItemId, item.Count);
+
+                if (session.LogicSettings.VerboseRecycling)
+                    session.EventDispatcher.Send(new ItemRecycledEvent { Id = item.ItemId, Count = item.Count });
+                DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 500);
+            }
+
+            await session.Inventory.RefreshCachedInventory();
+        }
+
+        private static async Task RecycleItems(ISession session, CancellationToken cancellationToken, int itemCount,
+            ItemId item)
+        {
+            var itemsToRecycle = 0;
+            var itemsToKeep = itemCount - _diff;
+            if (itemsToKeep < 0)
+                itemsToKeep = 0;
+            itemsToRecycle = itemCount - itemsToKeep;
+            if (itemsToRecycle != 0)
+            {
+                _diff -= itemsToRecycle;
+                cancellationToken.ThrowIfCancellationRequested();
+                await session.Client.Inventory.RecycleItem(item, itemsToRecycle);
+                if (session.LogicSettings.VerboseRecycling)
+                    session.EventDispatcher.Send(new ItemRecycledEvent { Id = item, Count = itemsToRecycle });
+                DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 500);
+            }
+        }
+
+        private static async Task OptimizedRecycleBalls(ISession session, CancellationToken cancellationToken)
+        {
+            var pokeBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemPokeBall);
+            var greatBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemGreatBall);
+            var ultraBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemUltraBall);
+            var masterBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemMasterBall);
+
+            var totalBallsCount = pokeBallsCount + greatBallsCount + ultraBallsCount + masterBallsCount;
+            var random = rnd.Next(-1 * session.LogicSettings.RandomRecycleValue,
+                session.LogicSettings.RandomRecycleValue + 1);
+
+            if (totalBallsCount > session.LogicSettings.TotalAmountOfPokeballsToKeep)
+            {
+                if (session.LogicSettings.RandomizeRecycle)
+                {
+                    _diff = totalBallsCount - session.LogicSettings.TotalAmountOfPokeballsToKeep + random;
+                }
+                else
+                {
+                    _diff = totalBallsCount - session.LogicSettings.TotalAmountOfPokeballsToKeep;
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, pokeBallsCount, ItemId.ItemPokeBall);
+                }
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, greatBallsCount, ItemId.ItemGreatBall);
+                }
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, ultraBallsCount, ItemId.ItemUltraBall);
+                }
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, masterBallsCount, ItemId.ItemMasterBall);
+                }
+            }
+        }
+
+        private static async Task OptimizedRecyclePotions(ISession session, CancellationToken cancellationToken)
+        {
+            var potionCount = await session.Inventory.GetItemAmountByType(ItemId.ItemPotion);
+            var superPotionCount = await session.Inventory.GetItemAmountByType(ItemId.ItemSuperPotion);
+            var hyperPotionsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemHyperPotion);
+            var maxPotionCount = await session.Inventory.GetItemAmountByType(ItemId.ItemMaxPotion);
+
+            var totalPotionsCount = potionCount + superPotionCount + hyperPotionsCount + maxPotionCount;
+            var random = rnd.Next(-1 * session.LogicSettings.RandomRecycleValue,
+                session.LogicSettings.RandomRecycleValue + 1);
+            if (totalPotionsCount > session.LogicSettings.TotalAmountOfPotionsToKeep)
+            {
+                if (session.LogicSettings.RandomizeRecycle)
+                {
+                    _diff = totalPotionsCount - session.LogicSettings.TotalAmountOfPotionsToKeep + random;
+                }
+                else
+                {
+                    _diff = totalPotionsCount - session.LogicSettings.TotalAmountOfPotionsToKeep;
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, potionCount, ItemId.ItemPotion);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, superPotionCount, ItemId.ItemSuperPotion);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, hyperPotionsCount, ItemId.ItemHyperPotion);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, maxPotionCount, ItemId.ItemMaxPotion);
+                }
+            }
+        }
+
+        private static async Task OptimizedRecycleRevives(ISession session, CancellationToken cancellationToken)
+        {
+            var reviveCount = await session.Inventory.GetItemAmountByType(ItemId.ItemRevive);
+            var maxReviveCount = await session.Inventory.GetItemAmountByType(ItemId.ItemMaxRevive);
+
+            var totalRevivesCount = reviveCount + maxReviveCount;
+            var random = rnd.Next(-1 * session.LogicSettings.RandomRecycleValue,
+                session.LogicSettings.RandomRecycleValue + 1);
+            if (totalRevivesCount > session.LogicSettings.TotalAmountOfRevivesToKeep)
+            {
+                if (session.LogicSettings.RandomizeRecycle)
+                {
+                    _diff = totalRevivesCount - session.LogicSettings.TotalAmountOfRevivesToKeep + random;
+                }
+                else
+                {
+                    _diff = totalRevivesCount - session.LogicSettings.TotalAmountOfRevivesToKeep;
+                }
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, reviveCount, ItemId.ItemRevive);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, maxReviveCount, ItemId.ItemMaxRevive);
+                }
+            }
+        }
+
+        private static async Task OptimizedRecycleBerries(ISession session, CancellationToken cancellationToken)
+        {
+            var razz = await session.Inventory.GetItemAmountByType(ItemId.ItemRazzBerry);
+            var bluk = await session.Inventory.GetItemAmountByType(ItemId.ItemBlukBerry);
+            var nanab = await session.Inventory.GetItemAmountByType(ItemId.ItemNanabBerry);
+            var pinap = await session.Inventory.GetItemAmountByType(ItemId.ItemPinapBerry);
+            var wepar = await session.Inventory.GetItemAmountByType(ItemId.ItemWeparBerry);
+
+            var totalBerryCount = razz + bluk + nanab + pinap + wepar;
+            var random = rnd.Next(-1 * session.LogicSettings.RandomRecycleValue,
+                session.LogicSettings.RandomRecycleValue + 1);
+            if (totalBerryCount > session.LogicSettings.TotalAmountOfBerriesToKeep)
+            {
+                if (session.LogicSettings.RandomizeRecycle)
+                {
+                    _diff = totalBerryCount - session.LogicSettings.TotalAmountOfBerriesToKeep + random;
+                }
+                else
+                {
+                    _diff = totalBerryCount - session.LogicSettings.TotalAmountOfBerriesToKeep;
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, razz, ItemId.ItemRazzBerry);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, bluk, ItemId.ItemBlukBerry);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, nanab, ItemId.ItemNanabBerry);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, pinap, ItemId.ItemPinapBerry);
+                }
+
+                if (_diff > 0)
+                {
+                    await RecycleItems(session, cancellationToken, wepar, ItemId.ItemWeparBerry);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/RecycleSpecificItemTask.cs b/PokemonGo.RocketBot.Logic/Tasks/RecycleSpecificItemTask.cs
new file mode 100644
index 0000000..fa334db
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/RecycleSpecificItemTask.cs
@@ -0,0 +1,30 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+using PokemonGo.RocketBot.Logic.Utils;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class RecycleSpecificItemTask
+    {
+        public static async Task Execute(Session session, ItemId itemId, int count)
+        {
+            var response = await session.Client.Inventory.RecycleItem(itemId, count);
+            if (response.Result == RecycleInventoryItemResponse.Types.Result.Success)
+            {
+                Logger.Write(
+                    $"Recycled {count}x {itemId.ToString().Substring(4)}",
+                    LogLevel.Recycling);
+            }
+            else
+            {
+                Logger.Write(
+                    $"Unable to recycle {count}x {itemId.ToString().Substring(4)}",
+                    LogLevel.Error);
+            }
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 500);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/RenamePokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/RenamePokemonTask.cs
new file mode 100644
index 0000000..954ec93
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/RenamePokemonTask.cs
@@ -0,0 +1,59 @@
+#region using directives
+
+using System;
+using System.Globalization;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class RenamePokemonTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var pokemons = await session.Inventory.GetPokemons();
+
+            foreach (var pokemon in pokemons)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                var perfection = Math.Round(PokemonInfo.CalculatePokemonPerfection(pokemon));
+                var pokemonName = session.Translation.GetPokemonTranslation(pokemon.PokemonId);
+                // iv number + templating part + pokemonName <= 12
+                var nameLength = 12 -
+                                 (perfection.ToString(CultureInfo.InvariantCulture).Length +
+                                  session.LogicSettings.RenameTemplate.Length - 6);
+                if (pokemonName.Length > nameLength)
+                {
+                    pokemonName = pokemonName.Substring(0, nameLength);
+                }
+                var newNickname = string.Format(session.LogicSettings.RenameTemplate, pokemonName, perfection);
+                var oldNickname = pokemon.Nickname.Length != 0 ? pokemon.Nickname : pokemon.PokemonId.ToString();
+
+                // If "RenameOnlyAboveIv" = true only rename pokemon with IV over "KeepMinIvPercentage"
+                // Favorites will be skipped
+                if ((!session.LogicSettings.RenameOnlyAboveIv || perfection >= session.LogicSettings.KeepMinIvPercentage) &&
+                    newNickname != oldNickname && pokemon.Favorite == 0)
+                {
+                    await session.Client.Inventory.NicknamePokemon(pokemon.Id, newNickname);
+
+                    session.EventDispatcher.Send(new NoticeEvent
+                    {
+                        Message =
+                            session.Translation.GetTranslation(TranslationString.PokemonRename,
+                                session.Translation.GetPokemonTranslation(pokemon.PokemonId),
+                                pokemon.Id, oldNickname, newNickname)
+                    });
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/RenameSpecificPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/RenameSpecificPokemonTask.cs
new file mode 100644
index 0000000..2dfa195
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/RenameSpecificPokemonTask.cs
@@ -0,0 +1,29 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Data;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class RenameSpecificPokemonTask
+    {
+        public static async Task Execute(Session session, PokemonData pokemon, string newNickname)
+        {
+            //var pkm = pokemon;
+            var response = await session.Client.Inventory.NicknamePokemon(pokemon.Id, newNickname);
+            Logger.Write(response.Result == NicknamePokemonResponse.Types.Result.Success
+                ? $"Successfully renamed {pokemon.PokemonId} to \"{newNickname}\""
+                : $"Failed renaming {pokemon.PokemonId} to \"{newNickname}\"");
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+            //session.EventDispatcher.Send(new NoticeEvent
+            //{
+            //    Message =
+            //        session.Translation.GetTranslation(TranslationString.PokemonRename,
+            //            session.Translation.GetPokemonTranslation(pokemon.PokemonId),
+            //            pokemon.PokemonId, pkm.Nickname, newNickname)
+            //});
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/SnipePokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/SnipePokemonTask.cs
new file mode 100644
index 0000000..8dc1459
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/SnipePokemonTask.cs
@@ -0,0 +1,883 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Net.Sockets;
+using System.Threading;
+using System.Threading.Tasks;
+using CloudFlareUtilities;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Enums;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Map.Pokemon;
+using POGOProtos.Networking.Responses;
+using Quobject.Collections.Immutable;
+using Quobject.SocketIoClientDotNet.Client;
+using Socket = Quobject.SocketIoClientDotNet.Client.Socket;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class SniperInfo
+    {
+        public ulong EncounterId { get; set; }
+        public DateTime ExpirationTimestamp { get; set; }
+        public double Latitude { get; set; }
+        public double Longitude { get; set; }
+        public PokemonId Id { get; set; }
+        public string SpawnPointId { get; set; }
+        public PokemonMove Move1 { get; set; }
+        public PokemonMove Move2 { get; set; }
+        public double IV { get; set; }
+
+        [JsonIgnore]
+        public DateTime TimeStampAdded { get; set; } = DateTime.Now;
+    }
+
+    public class PokemonLocation
+    {
+        public PokemonLocation(double lat, double lon)
+        {
+            latitude = lat;
+            longitude = lon;
+        }
+
+        public long Id { get; set; }
+        public double expires { get; set; }
+        public double latitude { get; set; }
+        public double longitude { get; set; }
+        public int pokemon_id { get; set; }
+        public PokemonId pokemon_name { get; set; }
+
+        [JsonIgnore]
+        public DateTime TimeStampAdded { get; set; } = DateTime.Now;
+
+        public bool Equals(PokemonLocation obj)
+        {
+            return Math.Abs(latitude - obj.latitude) < 0.0001 && Math.Abs(longitude - obj.longitude) < 0.0001;
+        }
+
+        public override bool Equals(object obj) // contains calls this here
+        {
+            var p = obj as PokemonLocation;
+            if (p == null) // no cast available
+            {
+                return false;
+            }
+
+            return Math.Abs(latitude - p.latitude) < 0.0001 && Math.Abs(longitude - p.longitude) < 0.0001;
+        }
+
+        public override int GetHashCode()
+        {
+            return ToString().GetHashCode();
+        }
+
+        public override string ToString()
+        {
+            return latitude.ToString("0.00000000000") + ", " + longitude.ToString("0.00000000000");
+        }
+    }
+
+    public class PokemonLocation_pokezz
+    {
+        public double time { get; set; }
+        public double lat { get; set; }
+        public double lng { get; set; }
+        public string iv { get; set; }
+
+        public double _iv
+        {
+            get
+            {
+                try
+                {
+                    return Convert.ToDouble(iv, CultureInfo.InvariantCulture);
+                }
+                catch
+                {
+                    return 0;
+                }
+            }
+        }
+
+        public PokemonId name { get; set; }
+        public bool verified { get; set; }
+    }
+
+    public class PokemonLocation_pokesnipers
+    {
+        public int id { get; set; }
+        public double iv { get; set; }
+        public PokemonId name { get; set; }
+        public string until { get; set; }
+        public string coords { get; set; }
+    }
+
+    public class PokemonLocation_pokewatchers
+    {
+        public PokemonId pokemon { get; set; }
+        public double timeadded { get; set; }
+        public double timeend { get; set; }
+        public string cords { get; set; }
+    }
+
+    public class ScanResult
+    {
+        public string Status { get; set; }
+        public List<PokemonLocation> pokemons { get; set; }
+    }
+
+    public class ScanResult_pokesnipers
+    {
+        public string Status { get; set; }
+
+        [JsonProperty("results")]
+        public List<PokemonLocation_pokesnipers> pokemons { get; set; }
+    }
+
+    public class ScanResult_pokewatchers
+    {
+        public string Status { get; set; }
+        public List<PokemonLocation_pokewatchers> pokemons { get; set; }
+    }
+
+    public static class SnipePokemonTask
+    {
+        public static List<PokemonLocation> LocsVisited = new List<PokemonLocation>();
+        private static readonly List<SniperInfo> SnipeLocations = new List<SniperInfo>();
+        private static DateTime _lastSnipe = DateTime.MinValue;
+
+        public static Task AsyncStart(Session session, CancellationToken cancellationToken = default(CancellationToken))
+        {
+            return Task.Run(() => Start(session, cancellationToken), cancellationToken);
+        }
+
+        public static async Task<bool> CheckPokeballsToSnipe(int minPokeballs, ISession session,
+            CancellationToken cancellationToken)
+        {
+            var pokeBallsCount = await session.Inventory.GetItemAmountByType(ItemId.ItemPokeBall);
+            pokeBallsCount += await session.Inventory.GetItemAmountByType(ItemId.ItemGreatBall);
+            pokeBallsCount += await session.Inventory.GetItemAmountByType(ItemId.ItemUltraBall);
+            pokeBallsCount += await session.Inventory.GetItemAmountByType(ItemId.ItemMasterBall);
+
+            if (pokeBallsCount < minPokeballs)
+            {
+                session.EventDispatcher.Send(new SnipeEvent
+                {
+                    Message =
+                        session.Translation.GetTranslation(TranslationString.NotEnoughPokeballsToSnipe, pokeBallsCount,
+                            minPokeballs)
+                });
+                return false;
+            }
+
+            return true;
+        }
+
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            if (_lastSnipe.AddMilliseconds(session.LogicSettings.MinDelayBetweenSnipes) > DateTime.Now)
+                return;
+
+            LocsVisited.RemoveAll(q => DateTime.Now > q.TimeStampAdded.AddMinutes(15));
+            SnipeLocations.RemoveAll(x => DateTime.Now > x.TimeStampAdded.AddMinutes(15));
+
+            if (await CheckPokeballsToSnipe(session.LogicSettings.MinPokeballsToSnipe, session, cancellationToken))
+            {
+                if (session.LogicSettings.PokemonToSnipe != null)
+                {
+                    var pokemonIds = new List<PokemonId>();
+                    if (session.LogicSettings.SnipePokemonNotInPokedex)
+                    {
+                        var PokeDex = await session.Inventory.GetPokeDexItems();
+                        var pokemonOnlyList = session.LogicSettings.PokemonToSnipe.Pokemon;
+                        var capturedPokemon =
+                            PokeDex.Where(i => i.InventoryItemData.PokedexEntry.TimesCaptured >= 1)
+                                .Select(i => i.InventoryItemData.PokedexEntry.PokemonId);
+                        var pokemonToCapture =
+                            Enum.GetValues(typeof(PokemonId)).Cast<PokemonId>().Except(capturedPokemon);
+                        pokemonIds = pokemonOnlyList.Union(pokemonToCapture).ToList();
+                    }
+                    else
+                    {
+                        pokemonIds = session.LogicSettings.PokemonToSnipe.Pokemon;
+                    }
+
+                    if (session.LogicSettings.UseSnipeLocationServer)
+                    {
+                        var locationsToSnipe = SnipeLocations?.Where(q =>
+                            (!session.LogicSettings.UseTransferIvForSnipe ||
+                             (q.IV == 0 && !session.LogicSettings.SnipeIgnoreUnknownIv) ||
+                             (q.IV >= session.Inventory.GetPokemonTransferFilter(q.Id).KeepMinIvPercentage)) &&
+                            !LocsVisited.Contains(new PokemonLocation(q.Latitude, q.Longitude))
+                            && !(q.ExpirationTimestamp != default(DateTime) &&
+                                 q.ExpirationTimestamp > new DateTime(2016) &&
+                                 // make absolutely sure that the server sent a correct datetime
+                                 q.ExpirationTimestamp < DateTime.Now) &&
+                            (q.Id == PokemonId.Missingno || pokemonIds.Contains(q.Id))).ToList() ??
+                                               new List<SniperInfo>();
+
+                        var _locationsToSnipe = locationsToSnipe.OrderBy(q => q.ExpirationTimestamp).ToList();
+
+                        if (_locationsToSnipe.Any())
+                        {
+                            foreach (var location in _locationsToSnipe)
+                            {
+                                if ((location.ExpirationTimestamp > DateTime.Now.AddSeconds(10)) &&
+                                    !LocsVisited.Contains(new PokemonLocation(location.Latitude, location.Longitude)))
+                                {
+                                    session.EventDispatcher.Send(new SnipeScanEvent
+                                    {
+                                        Bounds = new Location(location.Latitude, location.Longitude),
+                                        PokemonId = location.Id,
+                                        Source = session.LogicSettings.SnipeLocationServer,
+                                        Iv = location.IV
+                                    });
+
+                                    if (
+                                        !await
+                                            CheckPokeballsToSnipe(session.LogicSettings.MinPokeballsWhileSnipe + 1,
+                                                session, cancellationToken))
+                                        return;
+
+                                    await
+                                        Snipe(session, pokemonIds, location.Latitude, location.Longitude,
+                                            cancellationToken);
+                                }
+                            }
+                        }
+                    }
+
+                    if (session.LogicSettings.GetSniperInfoFromPokezz)
+                    {
+                        var _locationsToSnipe = GetSniperInfoFrom_pokezz(session, pokemonIds);
+                        if (_locationsToSnipe.Any())
+                        {
+                            foreach (var location in _locationsToSnipe)
+                            {
+                                if ((location.ExpirationTimestamp > DateTime.Now.AddSeconds(10)) &&
+                                    !LocsVisited.Contains(new PokemonLocation(location.Latitude, location.Longitude)))
+                                {
+                                    session.EventDispatcher.Send(new SnipeScanEvent
+                                    {
+                                        Bounds = new Location(location.Latitude, location.Longitude),
+                                        PokemonId = location.Id,
+                                        Source = "Pokezz.com",
+                                        Iv = location.IV
+                                    });
+
+                                    if (
+                                        !await
+                                            CheckPokeballsToSnipe(session.LogicSettings.MinPokeballsWhileSnipe + 1,
+                                                session, cancellationToken))
+                                        return;
+
+                                    await
+                                        Snipe(session, pokemonIds, location.Latitude, location.Longitude,
+                                            cancellationToken);
+                                }
+                            }
+                        }
+                    }
+
+                    if (session.LogicSettings.GetSniperInfoFromPokeSnipers)
+                    {
+                        var _locationsToSnipe = GetSniperInfoFrom_pokesnipers(session, pokemonIds);
+                        if (_locationsToSnipe.Any())
+                        {
+                            foreach (var location in _locationsToSnipe)
+                            {
+                                if ((location.ExpirationTimestamp > DateTime.Now.AddSeconds(10)) &&
+                                    !LocsVisited.Contains(new PokemonLocation(location.Latitude, location.Longitude)))
+                                {
+                                    session.EventDispatcher.Send(new SnipeScanEvent
+                                    {
+                                        Bounds = new Location(location.Latitude, location.Longitude),
+                                        PokemonId = location.Id,
+                                        Source = "PokeSnipers.com",
+                                        Iv = location.IV
+                                    });
+
+                                    if (
+                                        !await
+                                            CheckPokeballsToSnipe(session.LogicSettings.MinPokeballsWhileSnipe + 1,
+                                                session, cancellationToken))
+                                        return;
+
+                                    await
+                                        Snipe(session, pokemonIds, location.Latitude, location.Longitude,
+                                            cancellationToken);
+                                }
+                            }
+                        }
+                    }
+
+                    if (session.LogicSettings.GetSniperInfoFromPokeWatchers)
+                    {
+                        var _locationsToSnipe = GetSniperInfoFrom_pokewatchers(session, pokemonIds);
+                        if (_locationsToSnipe.Any())
+                        {
+                            foreach (var location in _locationsToSnipe)
+                            {
+                                if ((location.ExpirationTimestamp > DateTime.Now.AddSeconds(10)) &&
+                                    !LocsVisited.Contains(new PokemonLocation(location.Latitude, location.Longitude)))
+                                {
+                                    session.EventDispatcher.Send(new SnipeScanEvent
+                                    {
+                                        Bounds = new Location(location.Latitude, location.Longitude),
+                                        PokemonId = location.Id,
+                                        Source = "PokeWatchers.com",
+                                        Iv = location.IV
+                                    });
+
+                                    if (
+                                        !await
+                                            CheckPokeballsToSnipe(session.LogicSettings.MinPokeballsWhileSnipe + 1,
+                                                session, cancellationToken))
+                                        return;
+
+                                    await
+                                        Snipe(session, pokemonIds, location.Latitude, location.Longitude,
+                                            cancellationToken);
+                                }
+                            }
+                        }
+                    }
+
+                    if (session.LogicSettings.SnipeWithSkiplagged)
+                    {
+                        foreach (var location in session.LogicSettings.PokemonToSnipe.Locations)
+                        {
+                            session.EventDispatcher.Send(new SnipeScanEvent
+                            {
+                                Bounds = location,
+                                PokemonId = PokemonId.Missingno,
+                                Source = "Skiplagged.com"
+                            });
+
+                            var scanResult = SnipeScanForPokemon(session, location);
+
+                            var locationsToSnipe = new List<PokemonLocation>();
+                            if (scanResult.pokemons != null)
+                            {
+                                var filteredPokemon = scanResult.pokemons.Where(q => pokemonIds.Contains(q.pokemon_name));
+                                var notVisitedPokemon = filteredPokemon.Where(q => !LocsVisited.Contains(q));
+                                var notExpiredPokemon =
+                                    notVisitedPokemon.Where(
+                                        q =>
+                                            q.expires <
+                                            (DateTime.Now.ToUniversalTime() -
+                                             new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds);
+
+                                if (notExpiredPokemon.Any())
+                                    locationsToSnipe.AddRange(notExpiredPokemon);
+                            }
+
+                            var _locationsToSnipe = locationsToSnipe.OrderBy(q => q.expires).ToList();
+
+                            if (_locationsToSnipe.Any())
+                            {
+                                foreach (var pokemonLocation in _locationsToSnipe)
+                                {
+                                    if ((pokemonLocation.expires >
+                                         (DateTime.Now.ToUniversalTime() -
+                                          new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds + 10000) &&
+                                        !LocsVisited.Contains(new PokemonLocation(pokemonLocation.latitude,
+                                            pokemonLocation.longitude)))
+                                    {
+                                        if (
+                                            !await
+                                                CheckPokeballsToSnipe(session.LogicSettings.MinPokeballsWhileSnipe + 1,
+                                                    session, cancellationToken))
+                                            return;
+
+                                        await
+                                            Snipe(session, pokemonIds, location.Latitude, location.Longitude,
+                                                cancellationToken);
+                                    }
+                                }
+                            }
+                            else if (session.LogicSettings.UseSnipeLocationServer &&
+                                     !string.IsNullOrEmpty(scanResult.Status) && scanResult.Status.Contains("fail"))
+                                session.EventDispatcher.Send(new SnipeEvent
+                                {
+                                    Message =
+                                        session.Translation.GetTranslation(TranslationString.SnipeServerOffline)
+                                });
+                            else
+                                session.EventDispatcher.Send(new SnipeEvent
+                                {
+                                    Message = session.Translation.GetTranslation(TranslationString.NoPokemonToSnipe)
+                                });
+                        }
+                    }
+                }
+            }
+        }
+
+        private static async Task Snipe(ISession session, IEnumerable<PokemonId> pokemonIds, double latitude,
+            double longitude, CancellationToken cancellationToken)
+        {
+            if (LocsVisited.Contains(new PokemonLocation(latitude, longitude)))
+                return;
+
+            var CurrentLatitude = session.Client.CurrentLatitude;
+            var CurrentLongitude = session.Client.CurrentLongitude;
+            var catchedPokemon = false;
+
+            session.EventDispatcher.Send(new SnipeModeEvent {Active = true});
+
+            List<MapPokemon> catchablePokemon;
+            try
+            {
+                await session.Client.Player.UpdatePlayerLocation(latitude, longitude, session.Client.CurrentAltitude);
+
+                session.EventDispatcher.Send(new UpdatePositionEvent
+                {
+                    Longitude = longitude,
+                    Latitude = latitude
+                });
+
+                var mapObjects = session.Client.Map.GetMapObjects().Result;
+                catchablePokemon =
+                    mapObjects.Item1.MapCells.SelectMany(q => q.CatchablePokemons)
+                        .Where(q => pokemonIds.Contains(q.PokemonId))
+                        .OrderByDescending(pokemon => PokemonInfo.CalculateMaxCpMultiplier(pokemon.PokemonId))
+                        .ToList();
+            }
+            finally
+            {
+                await
+                    session.Client.Player.UpdatePlayerLocation(CurrentLatitude, CurrentLongitude,
+                        session.Client.CurrentAltitude);
+            }
+
+            if (catchablePokemon.Count == 0)
+            {
+                // Pokemon not found but we still add to the locations visited, so we don't keep sniping
+                // locations with no pokemon.
+                if (!LocsVisited.Contains(new PokemonLocation(latitude, longitude)))
+                    LocsVisited.Add(new PokemonLocation(latitude, longitude));
+            }
+
+            foreach (var pokemon in catchablePokemon)
+            {
+                EncounterResponse encounter;
+                try
+                {
+                    await
+                        session.Client.Player.UpdatePlayerLocation(latitude, longitude, session.Client.CurrentAltitude);
+
+                    encounter =
+                        session.Client.Encounter.EncounterPokemon(pokemon.EncounterId, pokemon.SpawnPointId).Result;
+                }
+                finally
+                {
+                    await
+                        session.Client.Player.UpdatePlayerLocation(CurrentLatitude, CurrentLongitude,
+                            session.Client.CurrentAltitude);
+                }
+
+                if (encounter.Status == EncounterResponse.Types.Status.EncounterSuccess)
+                {
+                    if (!LocsVisited.Contains(new PokemonLocation(latitude, longitude)))
+                        LocsVisited.Add(new PokemonLocation(latitude, longitude));
+                    //Also add exact pokemon location to LocsVisited, some times the server one differ a little.
+                    if (!LocsVisited.Contains(new PokemonLocation(pokemon.Latitude, pokemon.Longitude)))
+                        LocsVisited.Add(new PokemonLocation(pokemon.Latitude, pokemon.Longitude));
+
+                    session.EventDispatcher.Send(new UpdatePositionEvent
+                    {
+                        Latitude = CurrentLatitude,
+                        Longitude = CurrentLongitude
+                    });
+
+                    await CatchPokemonTask.Execute(session, cancellationToken, encounter, pokemon);
+                    catchedPokemon = true;
+                }
+                else if (encounter.Status == EncounterResponse.Types.Status.PokemonInventoryFull)
+                {
+                    if (session.LogicSettings.EvolveAllPokemonAboveIv ||
+                        session.LogicSettings.EvolveAllPokemonWithEnoughCandy ||
+                        session.LogicSettings.UseLuckyEggsWhileEvolving ||
+                        session.LogicSettings.KeepPokemonsThatCanEvolve)
+                    {
+                        await EvolvePokemonTask.Execute(session, cancellationToken);
+                    }
+
+                    if (session.LogicSettings.TransferDuplicatePokemon)
+                    {
+                        await TransferDuplicatePokemonTask.Execute(session, cancellationToken);
+                    }
+                    else
+                    {
+                        session.EventDispatcher.Send(new WarnEvent
+                        {
+                            Message = session.Translation.GetTranslation(TranslationString.InvFullTransferManually)
+                        });
+                    }
+                }
+                else
+                {
+                    session.EventDispatcher.Send(new WarnEvent
+                    {
+                        Message =
+                            session.Translation.GetTranslation(
+                                TranslationString.EncounterProblem, encounter.Status)
+                    });
+                }
+
+                if (!Equals(catchablePokemon.ElementAtOrDefault(catchablePokemon.Count - 1), pokemon))
+                    await Task.Delay(session.LogicSettings.DelayBetweenPokemonCatch, cancellationToken);
+            }
+
+            if (!catchedPokemon)
+            {
+                session.EventDispatcher.Send(new SnipeEvent
+                {
+                    Message = session.Translation.GetTranslation(TranslationString.NoPokemonToSnipe)
+                });
+            }
+
+            _lastSnipe = DateTime.Now;
+
+            session.EventDispatcher.Send(new SnipeModeEvent {Active = false});
+            await Task.Delay(session.LogicSettings.DelayBetweenPlayerActions, cancellationToken);
+        }
+
+        private static ScanResult SnipeScanForPokemon(ISession session, Location location)
+        {
+            var formatter = new NumberFormatInfo {NumberDecimalSeparator = "."};
+
+            var offset = session.LogicSettings.SnipingScanOffset;
+            // 0.003 = half a mile; maximum 0.06 is 10 miles
+            if (offset < 0.001) offset = 0.003;
+            if (offset > 0.06) offset = 0.06;
+
+            var boundLowerLeftLat = location.Latitude - offset;
+            var boundLowerLeftLng = location.Longitude - offset;
+            var boundUpperRightLat = location.Latitude + offset;
+            var boundUpperRightLng = location.Longitude + offset;
+
+            var uri =
+                $"http://skiplagged.com/api/pokemon.php?bounds={boundLowerLeftLat.ToString(formatter)},{boundLowerLeftLng.ToString(formatter)},{boundUpperRightLat.ToString(formatter)},{boundUpperRightLng.ToString(formatter)}";
+
+            ScanResult scanResult;
+            try
+            {
+                var request = WebRequest.CreateHttp(uri);
+                request.Accept = "application/json";
+                request.UserAgent =
+                    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36\r\n";
+                request.Method = "GET";
+                request.Timeout = 15000;
+                request.ReadWriteTimeout = 32000;
+
+                var resp = request.GetResponse();
+                var reader = new StreamReader(resp.GetResponseStream());
+                var fullresp =
+                    reader.ReadToEnd()
+                        .Replace(" M", "Male")
+                        .Replace(" F", "Female")
+                        .Replace("Farfetch'd", "Farfetchd")
+                        .Replace("Mr.Maleime", "MrMime");
+
+                scanResult = JsonConvert.DeserializeObject<ScanResult>(fullresp);
+            }
+            catch (Exception ex)
+            {
+                // most likely System.IO.IOException
+                session.EventDispatcher.Send(new ErrorEvent {Message = ex.Message});
+                scanResult = new ScanResult
+                {
+                    Status = "fail",
+                    pokemons = new List<PokemonLocation>()
+                };
+            }
+            return scanResult;
+        }
+
+        private static List<SniperInfo> GetSniperInfoFrom_pokezz(ISession session, List<PokemonId> pokemonIds)
+        {
+            var options = new IO.Options();
+            options.Transports = ImmutableList.Create("websocket");
+
+            var socket = IO.Socket("http://pokezz.com", options);
+
+            var hasError = false;
+
+            var waitforbroadcast = new ManualResetEventSlim(false);
+
+            var pokemons = new List<PokemonLocation_pokezz>();
+
+            socket.On("pokemons", msg =>
+            {
+                socket.Close();
+                var data = JArray.FromObject(msg);
+
+                foreach (var pokeToken in data.Children())
+                {
+                    var Token =
+                        pokeToken.ToString()
+                            .Replace(" M", "Male")
+                            .Replace(" F", "Female")
+                            .Replace("Farfetch'd", "Farfetchd")
+                            .Replace("Mr.Maleime", "MrMime");
+                    pokemons.Add(JToken.Parse(Token).ToObject<PokemonLocation_pokezz>());
+                }
+
+                waitforbroadcast.Set();
+            });
+
+            socket.On(Socket.EVENT_ERROR, () =>
+            {
+                socket.Close();
+                hasError = true;
+                waitforbroadcast.Set();
+            });
+
+            socket.On(Socket.EVENT_CONNECT_ERROR, () =>
+            {
+                socket.Close();
+                hasError = true;
+                waitforbroadcast.Set();
+            });
+
+            waitforbroadcast.Wait();
+            if (!hasError)
+            {
+                foreach (var pokemon in pokemons)
+                {
+                    var SnipInfo = new SniperInfo();
+                    SnipInfo.Id = pokemon.name;
+                    SnipInfo.Latitude = pokemon.lat;
+                    SnipInfo.Longitude = pokemon.lng;
+                    SnipInfo.TimeStampAdded = DateTime.Now;
+                    SnipInfo.ExpirationTimestamp =
+                        new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(pokemon.time/1000d)).ToLocalTime();
+                    SnipInfo.IV = pokemon._iv;
+                    if (pokemon.verified || !session.LogicSettings.GetOnlyVerifiedSniperInfoFromPokezz)
+                        SnipeLocations.Add(SnipInfo);
+                }
+
+                var locationsToSnipe = SnipeLocations?.Where(q =>
+                    (!session.LogicSettings.UseTransferIvForSnipe ||
+                     (q.IV == 0 && !session.LogicSettings.SnipeIgnoreUnknownIv) ||
+                     (q.IV >= session.Inventory.GetPokemonTransferFilter(q.Id).KeepMinIvPercentage)) &&
+                    !LocsVisited.Contains(new PokemonLocation(q.Latitude, q.Longitude))
+                    && !(q.ExpirationTimestamp != default(DateTime) &&
+                         q.ExpirationTimestamp > new DateTime(2016) &&
+                         // make absolutely sure that the server sent a correct datetime
+                         q.ExpirationTimestamp < DateTime.Now) &&
+                    (q.Id == PokemonId.Missingno || pokemonIds.Contains(q.Id))).ToList() ??
+                                       new List<SniperInfo>();
+
+                return locationsToSnipe.OrderBy(q => q.ExpirationTimestamp).ToList();
+            }
+            session.EventDispatcher.Send(new ErrorEvent {Message = "(Pokezz.com) Connection Error"});
+            return new List<SniperInfo>();
+        }
+
+        private static List<SniperInfo> GetSniperInfoFrom_pokesnipers(ISession session, List<PokemonId> pokemonIds)
+        {
+            var uri = $"http://pokesnipers.com/api/v1/pokemon.json";
+
+            ScanResult_pokesnipers scanResult_pokesnipers;
+            try
+            {
+                var handler = new ClearanceHandler();
+
+                // Create a HttpClient that uses the handler.
+                var client = new HttpClient(handler);
+
+                // Use the HttpClient as usual. Any JS challenge will be solved automatically for you.
+                var fullresp =
+                    client.GetStringAsync(uri)
+                        .Result.Replace(" M", "Male")
+                        .Replace(" F", "Female")
+                        .Replace("Farfetch'd", "Farfetchd")
+                        .Replace("Mr.Maleime", "MrMime");
+
+                scanResult_pokesnipers = JsonConvert.DeserializeObject<ScanResult_pokesnipers>(fullresp);
+            }
+            catch (Exception ex)
+            {
+                // most likely System.IO.IOException
+                session.EventDispatcher.Send(new ErrorEvent {Message = "(PokeSnipers.com) " + ex.Message});
+                return new List<SniperInfo>();
+            }
+            if (scanResult_pokesnipers.pokemons != null)
+            {
+                foreach (var pokemon in scanResult_pokesnipers.pokemons)
+                {
+                    try
+                    {
+                        var SnipInfo = new SniperInfo();
+                        SnipInfo.Id = pokemon.name;
+                        var coordsArray = pokemon.coords.Split(',');
+                        SnipInfo.Latitude = Convert.ToDouble(coordsArray[0], CultureInfo.InvariantCulture);
+                        SnipInfo.Longitude = Convert.ToDouble(coordsArray[1], CultureInfo.InvariantCulture);
+                        SnipInfo.TimeStampAdded = DateTime.Now;
+                        SnipInfo.ExpirationTimestamp = Convert.ToDateTime(pokemon.until);
+                        SnipInfo.IV = pokemon.iv;
+                        SnipeLocations.Add(SnipInfo);
+                    }
+                    catch (Exception)
+                    {
+                        // ignored
+                    }
+                }
+                var locationsToSnipe = SnipeLocations?.Where(q =>
+                    (!session.LogicSettings.UseTransferIvForSnipe ||
+                     (q.IV == 0 && !session.LogicSettings.SnipeIgnoreUnknownIv) ||
+                     (q.IV >= session.Inventory.GetPokemonTransferFilter(q.Id).KeepMinIvPercentage)) &&
+                    !LocsVisited.Contains(new PokemonLocation(q.Latitude, q.Longitude))
+                    && !(q.ExpirationTimestamp != default(DateTime) &&
+                         q.ExpirationTimestamp > new DateTime(2016) &&
+                         // make absolutely sure that the server sent a correct datetime
+                         q.ExpirationTimestamp < DateTime.Now) &&
+                    (q.Id == PokemonId.Missingno || pokemonIds.Contains(q.Id))).ToList() ??
+                                       new List<SniperInfo>();
+
+                return locationsToSnipe.OrderBy(q => q.ExpirationTimestamp).ToList();
+            }
+            return new List<SniperInfo>();
+        }
+
+        private static List<SniperInfo> GetSniperInfoFrom_pokewatchers(ISession session, List<PokemonId> pokemonIds)
+        {
+            var uri = $"http://pokewatchers.com/api.php?act=grab";
+
+            ScanResult_pokewatchers scanResult_pokewatchers;
+            try
+            {
+                var handler = new ClearanceHandler();
+
+                // Create a HttpClient that uses the handler.
+                var client = new HttpClient(handler);
+
+                // Use the HttpClient as usual. Any JS challenge will be solved automatically for you.
+                var fullresp = "{ \"pokemons\":" +
+                               client.GetStringAsync(uri)
+                                   .Result.Replace(" M", "Male")
+                                   .Replace(" F", "Female")
+                                   .Replace("Farfetch'd", "Farfetchd")
+                                   .Replace("Mr.Maleime", "MrMime") + "}";
+
+                scanResult_pokewatchers = JsonConvert.DeserializeObject<ScanResult_pokewatchers>(fullresp);
+            }
+            catch (Exception ex)
+            {
+                // most likely System.IO.IOException
+                session.EventDispatcher.Send(new ErrorEvent {Message = "(PokeWatchers.com) " + ex.Message});
+                return new List<SniperInfo>();
+            }
+            if (scanResult_pokewatchers.pokemons != null)
+            {
+                foreach (var pokemon in scanResult_pokewatchers.pokemons)
+                {
+                    try
+                    {
+                        var SnipInfo = new SniperInfo();
+                        SnipInfo.Id = pokemon.pokemon;
+                        var coordsArray = pokemon.cords.Split(',');
+                        SnipInfo.Latitude = Convert.ToDouble(coordsArray[0], CultureInfo.InvariantCulture);
+                        SnipInfo.Longitude = Convert.ToDouble(coordsArray[1], CultureInfo.InvariantCulture);
+                        SnipInfo.TimeStampAdded =
+                            new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(pokemon.timeadded/1000d))
+                                .ToLocalTime();
+                        SnipInfo.ExpirationTimestamp =
+                            new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(pokemon.timeend/1000d))
+                                .ToLocalTime();
+                        SnipeLocations.Add(SnipInfo);
+                    }
+                    catch
+                    {
+                    }
+                }
+                var locationsToSnipe = SnipeLocations?.Where(q =>
+                    (!session.LogicSettings.UseTransferIvForSnipe ||
+                     (q.IV == 0 && !session.LogicSettings.SnipeIgnoreUnknownIv) ||
+                     (q.IV >= session.Inventory.GetPokemonTransferFilter(q.Id).KeepMinIvPercentage)) &&
+                    !LocsVisited.Contains(new PokemonLocation(q.Latitude, q.Longitude))
+                    && !(q.ExpirationTimestamp != default(DateTime) &&
+                         q.ExpirationTimestamp > new DateTime(2016) &&
+                         // make absolutely sure that the server sent a correct datetime
+                         q.ExpirationTimestamp < DateTime.Now) &&
+                    (q.Id == PokemonId.Missingno || pokemonIds.Contains(q.Id))).ToList() ??
+                                       new List<SniperInfo>();
+
+                return locationsToSnipe.OrderBy(q => q.ExpirationTimestamp).ToList();
+            }
+            return new List<SniperInfo>();
+        }
+
+        public static async Task Start(Session session, CancellationToken cancellationToken)
+        {
+            while (true)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                try
+                {
+                    var lClient = new TcpClient();
+                    lClient.Connect(session.LogicSettings.SnipeLocationServer,
+                        session.LogicSettings.SnipeLocationServerPort);
+
+                    var sr = new StreamReader(lClient.GetStream());
+
+                    while (lClient.Connected)
+                    {
+                        try
+                        {
+                            var line = sr.ReadLine();
+                            if (line == null)
+                                throw new Exception("Unable to ReadLine from sniper socket");
+
+                            var info = JsonConvert.DeserializeObject<SniperInfo>(line);
+
+                            if (SnipeLocations.Any(x =>
+                                Math.Abs(x.Latitude - info.Latitude) < 0.0001 &&
+                                Math.Abs(x.Longitude - info.Longitude) < 0.0001))
+                                // we might have different precisions from other sources
+                                continue;
+
+                            SnipeLocations.RemoveAll(x => _lastSnipe > x.TimeStampAdded);
+                            SnipeLocations.RemoveAll(x => DateTime.Now > x.TimeStampAdded.AddMinutes(15));
+                            SnipeLocations.Add(info);
+                        }
+                        catch (IOException)
+                        {
+                            session.EventDispatcher.Send(new ErrorEvent
+                            {
+                                Message = "The connection to the sniping location server was lost."
+                            });
+                        }
+                    }
+                }
+                catch (SocketException)
+                {
+                    // this is spammed to often. Maybe add it to debug log later
+                }
+                catch (Exception ex)
+                {
+                    // most likely System.IO.IOException
+                    session.EventDispatcher.Send(new ErrorEvent {Message = ex.ToString()});
+                }
+                await Task.Delay(100, cancellationToken);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/TransferDuplicatePokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/TransferDuplicatePokemonTask.cs
new file mode 100644
index 0000000..996470c
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/TransferDuplicatePokemonTask.cs
@@ -0,0 +1,64 @@
+#region using directives
+
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class TransferDuplicatePokemonTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var duplicatePokemons =
+                await
+                    session.Inventory.GetDuplicatePokemonToTransfer(
+                        session.LogicSettings.PokemonsNotToTransfer,
+                        session.LogicSettings.PokemonsToEvolve,
+                        session.LogicSettings.KeepPokemonsThatCanEvolve,
+                        session.LogicSettings.PrioritizeIvOverCp);
+
+            var orderedPokemon = duplicatePokemons.OrderBy(poke => poke.Cp);
+
+            var pokemonSettings = await session.Inventory.GetPokemonSettings();
+            var pokemonFamilies = await session.Inventory.GetPokemonFamilies();
+
+            foreach (var duplicatePokemon in orderedPokemon)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                await session.Client.Inventory.TransferPokemon(duplicatePokemon.Id);
+                await session.Inventory.DeletePokemonFromInvById(duplicatePokemon.Id);
+
+                var bestPokemonOfType = (session.LogicSettings.PrioritizeIvOverCp
+                    ? await session.Inventory.GetHighestPokemonOfTypeByIv(duplicatePokemon)
+                    : await session.Inventory.GetHighestPokemonOfTypeByCp(duplicatePokemon)) ?? duplicatePokemon;
+
+                var setting = pokemonSettings.SingleOrDefault(q => q.PokemonId == duplicatePokemon.PokemonId);
+                var family = pokemonFamilies.FirstOrDefault(q => q.FamilyId == setting.FamilyId);
+
+                family.Candy_++;
+
+                session.EventDispatcher.Send(new TransferPokemonEvent
+                {
+                    Id = duplicatePokemon.PokemonId,
+                    Perfection = PokemonInfo.CalculatePokemonPerfection(duplicatePokemon),
+                    Cp = duplicatePokemon.Cp,
+                    BestCp = bestPokemonOfType.Cp,
+                    BestPerfection = PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType),
+                    FamilyCandies = family.Candy_
+                });
+
+                DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/TransferSpecificPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/TransferSpecificPokemonTask.cs
new file mode 100644
index 0000000..0480845
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/TransferSpecificPokemonTask.cs
@@ -0,0 +1,53 @@
+#region using directives
+
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class TransferSpecificPokemonTask
+    {
+        public static async Task Execute(ISession session, ulong pokemonId)
+        {
+            var all = await session.Inventory.GetPokemons();
+            var pokemons = all.OrderBy(x => x.Cp).ThenBy(n => n.StaminaMax);
+            var pokemon = pokemons.FirstOrDefault(p => p.Id == pokemonId);
+
+            if (pokemon == null) return;
+
+            var pokemonSettings = await session.Inventory.GetPokemonSettings();
+            var pokemonFamilies = await session.Inventory.GetPokemonFamilies();
+
+            await session.Client.Inventory.TransferPokemon(pokemonId);
+            await session.Inventory.DeletePokemonFromInvById(pokemonId);
+
+            var bestPokemonOfType = (session.LogicSettings.PrioritizeIvOverCp
+                ? await session.Inventory.GetHighestPokemonOfTypeByIv(pokemon)
+                : await session.Inventory.GetHighestPokemonOfTypeByCp(pokemon)) ?? pokemon;
+
+            var setting = pokemonSettings.Single(q => q.PokemonId == pokemon.PokemonId);
+            var family = pokemonFamilies.First(q => q.FamilyId == setting.FamilyId);
+
+            family.Candy_++;
+
+            // Broadcast event as everyone would benefit
+            session.EventDispatcher.Send(new TransferPokemonEvent
+            {
+                Id = pokemon.PokemonId,
+                Perfection = PokemonInfo.CalculatePokemonPerfection(pokemon),
+                Cp = pokemon.Cp,
+                BestCp = bestPokemonOfType.Cp,
+                BestPerfection = PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType),
+                FamilyCandies = family.Candy_
+            });
+
+            DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/TransferWeakPokemonTask.cs b/PokemonGo.RocketBot.Logic/Tasks/TransferWeakPokemonTask.cs
new file mode 100644
index 0000000..9142885
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/TransferWeakPokemonTask.cs
@@ -0,0 +1,73 @@
+#region using directives
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Data;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class TransferWeakPokemonTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var pokemons = await session.Inventory.GetPokemons();
+            var pokemonDatas = pokemons as IList<PokemonData> ?? pokemons.ToList();
+            var pokemonsFiltered =
+                pokemonDatas.Where(pokemon => !session.LogicSettings.PokemonsNotToTransfer.Contains(pokemon.PokemonId))
+                    .ToList().OrderBy(poke => poke.Cp);
+
+            if (session.LogicSettings.KeepPokemonsThatCanEvolve)
+                pokemonsFiltered =
+                    pokemonDatas.Where(pokemon => !session.LogicSettings.PokemonsToEvolve.Contains(pokemon.PokemonId))
+                        .ToList().OrderBy(poke => poke.Cp);
+
+            var orderedPokemon = pokemonsFiltered.OrderBy(poke => poke.Cp);
+
+            foreach (var pokemon in orderedPokemon)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+                if ((pokemon.Cp >= session.LogicSettings.KeepMinCp) ||
+                    (PokemonInfo.CalculatePokemonPerfection(pokemon) >= session.LogicSettings.KeepMinIvPercentage &&
+                     session.LogicSettings.PrioritizeIvOverCp) ||
+                    (PokemonInfo.GetLevel(pokemon) >= session.LogicSettings.KeepMinLvl &&
+                     session.LogicSettings.UseKeepMinLvl) ||
+                    pokemon.Favorite == 1)
+                    continue;
+
+                await session.Client.Inventory.TransferPokemon(pokemon.Id);
+                await session.Inventory.DeletePokemonFromInvById(pokemon.Id);
+                var bestPokemonOfType = (session.LogicSettings.PrioritizeIvOverCp
+                    ? await session.Inventory.GetHighestPokemonOfTypeByIv(pokemon)
+                    : await session.Inventory.GetHighestPokemonOfTypeByCp(pokemon)) ?? pokemon;
+
+                var setting = session.Inventory.GetPokemonSettings()
+                    .Result.Single(q => q.PokemonId == pokemon.PokemonId);
+                var family = session.Inventory.GetPokemonFamilies().Result.First(q => q.FamilyId == setting.FamilyId);
+
+                family.Candy_++;
+
+                session.EventDispatcher.Send(new TransferPokemonEvent
+                {
+                    Id = pokemon.PokemonId,
+                    Perfection = PokemonInfo.CalculatePokemonPerfection(pokemon),
+                    Cp = pokemon.Cp,
+                    BestCp = bestPokemonOfType.Cp,
+                    BestPerfection = PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType),
+                    FamilyCandies = family.Candy_
+                });
+
+                DelayingUtils.Delay(session.LogicSettings.DelayBetweenPlayerActions, 0);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/UseIncenseConstantlyTask.cs b/PokemonGo.RocketBot.Logic/Tasks/UseIncenseConstantlyTask.cs
new file mode 100644
index 0000000..1de7609
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/UseIncenseConstantlyTask.cs
@@ -0,0 +1,43 @@
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class UseIncenseConstantlyTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            if (!session.LogicSettings.UseIncenseConstantly)
+                return;
+
+            var currentAmountOfIncense = await session.Inventory.GetItemAmountByType(ItemId.ItemIncenseOrdinary);
+            if (currentAmountOfIncense == 0)
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.NoIncenseAvailable));
+                return;
+            }
+            Logger.Write(session.Translation.GetTranslation(TranslationString.UseIncenseAmount, currentAmountOfIncense));
+
+            var UseIncense = await session.Inventory.UseIncenseConstantly();
+
+            if (UseIncense.Result == UseIncenseResponse.Types.Result.Success)
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.UsedIncense));
+            }
+            else if (UseIncense.Result == UseIncenseResponse.Types.Result.NoneInInventory)
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.NoIncenseAvailable));
+            }
+            else if (UseIncense.Result == UseIncenseResponse.Types.Result.IncenseAlreadyActive ||
+                     (UseIncense.AppliedIncense == null))
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.UseIncenseActive));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/UseIncenseTask.cs b/PokemonGo.RocketBot.Logic/Tasks/UseIncenseTask.cs
new file mode 100644
index 0000000..6f46467
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/UseIncenseTask.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class UseIncenseTask
+    {
+        public static async Task Execute(Session session)
+        {
+            var response = await session.Client.Inventory.UseIncense(ItemId.ItemIncenseOrdinary);
+            switch (response.Result)
+            {
+                case UseIncenseResponse.Types.Result.Success:
+                    Logger.Write($"Incense valid until: {DateTime.Now.AddMinutes(30)}");
+                    break;
+                case UseIncenseResponse.Types.Result.IncenseAlreadyActive:
+                    Logger.Write($"An incense is already active!", LogLevel.Warning);
+                    break;
+                case UseIncenseResponse.Types.Result.LocationUnset:
+                    Logger.Write($"Bot must be running first!", LogLevel.Error);
+                    break;
+                case UseIncenseResponse.Types.Result.Unknown:
+                    break;
+                case UseIncenseResponse.Types.Result.NoneInInventory:
+                    break;
+                default:
+                    Logger.Write($"Failed using an incense!", LogLevel.Error);
+                    break;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/UseIncubatorsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/UseIncubatorsTask.cs
new file mode 100644
index 0000000..8cb9021
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/UseIncubatorsTask.cs
@@ -0,0 +1,148 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class UseIncubatorsTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            // Refresh inventory so that the player stats are fresh
+            await session.Inventory.RefreshCachedInventory();
+
+            var playerStats = (await session.Inventory.GetPlayerStats()).FirstOrDefault();
+            if (playerStats == null)
+                return;
+
+            var kmWalked = playerStats.KmWalked;
+
+            var incubators = (await session.Inventory.GetEggIncubators())
+                .Where(x => x.UsesRemaining > 0 || x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
+                .OrderByDescending(x => x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
+                .ToList();
+
+            var unusedEggs = (await session.Inventory.GetEggs())
+                .Where(x => string.IsNullOrEmpty(x.EggIncubatorId))
+                .OrderBy(x => x.EggKmWalkedTarget - x.EggKmWalkedStart)
+                .ToList();
+
+            var rememberedIncubatorsFilePath = Path.Combine(session.LogicSettings.ProfilePath, "temp", "incubators.json");
+            var rememberedIncubators = GetRememberedIncubators(rememberedIncubatorsFilePath);
+            var pokemons = (await session.Inventory.GetPokemons()).ToList();
+
+            // Check if eggs in remembered incubator usages have since hatched
+            // (instead of calling session.Client.Inventory.GetHatchedEgg(), which doesn't seem to work properly)
+            foreach (var incubator in rememberedIncubators)
+            {
+                var hatched = pokemons.FirstOrDefault(x => !x.IsEgg && x.Id == incubator.PokemonId);
+                if (hatched == null) continue;
+
+                session.EventDispatcher.Send(new EggHatchedEvent
+                {
+                    Id = hatched.Id,
+                    PokemonId = hatched.PokemonId,
+                    Level = PokemonInfo.GetLevel(hatched),
+                    Cp = hatched.Cp,
+                    MaxCp = PokemonInfo.CalculateMaxCp(hatched),
+                    Perfection = Math.Round(PokemonInfo.CalculatePokemonPerfection(hatched), 2)
+                });
+            }
+
+            var newRememberedIncubators = new List<IncubatorUsage>();
+
+            foreach (var incubator in incubators)
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                if (incubator.PokemonId == 0)
+                {
+                    // Unlimited incubators prefer short eggs, limited incubators prefer long eggs
+                    // Special case: If only one incubator is available at all, it will prefer long eggs
+                    var egg = incubator.ItemId == ItemId.ItemIncubatorBasicUnlimited && incubators.Count > 1
+                        ? unusedEggs.FirstOrDefault()
+                        : unusedEggs.LastOrDefault();
+
+                    if (egg == null)
+                        continue;
+
+                    var response = await session.Client.Inventory.UseItemEggIncubator(incubator.Id, egg.Id);
+                    unusedEggs.Remove(egg);
+
+                    newRememberedIncubators.Add(new IncubatorUsage {IncubatorId = incubator.Id, PokemonId = egg.Id});
+
+                    session.EventDispatcher.Send(new EggIncubatorStatusEvent
+                    {
+                        IncubatorId = incubator.Id,
+                        WasAddedNow = true,
+                        PokemonId = egg.Id,
+                        KmToWalk = egg.EggKmWalkedTarget,
+                        KmRemaining = response.EggIncubator.TargetKmWalked - kmWalked
+                    });
+                }
+                else
+                {
+                    newRememberedIncubators.Add(new IncubatorUsage
+                    {
+                        IncubatorId = incubator.Id,
+                        PokemonId = incubator.PokemonId
+                    });
+
+                    session.EventDispatcher.Send(new EggIncubatorStatusEvent
+                    {
+                        IncubatorId = incubator.Id,
+                        PokemonId = incubator.PokemonId,
+                        KmToWalk = incubator.TargetKmWalked - incubator.StartKmWalked,
+                        KmRemaining = incubator.TargetKmWalked - kmWalked
+                    });
+                }
+            }
+
+            if (!newRememberedIncubators.SequenceEqual(rememberedIncubators))
+                SaveRememberedIncubators(newRememberedIncubators, rememberedIncubatorsFilePath);
+        }
+
+        private static List<IncubatorUsage> GetRememberedIncubators(string filePath)
+        {
+            Directory.CreateDirectory(Path.GetDirectoryName(filePath));
+
+            if (File.Exists(filePath))
+                return JsonConvert.DeserializeObject<List<IncubatorUsage>>(File.ReadAllText(filePath, Encoding.UTF8));
+
+            return new List<IncubatorUsage>(0);
+        }
+
+        private static void SaveRememberedIncubators(List<IncubatorUsage> incubators, string filePath)
+        {
+            Directory.CreateDirectory(Path.GetDirectoryName(filePath));
+
+            File.WriteAllText(filePath, JsonConvert.SerializeObject(incubators), Encoding.UTF8);
+        }
+
+        private class IncubatorUsage : IEquatable<IncubatorUsage>
+        {
+            public string IncubatorId;
+            public ulong PokemonId;
+
+            public bool Equals(IncubatorUsage other)
+            {
+                return other != null && other.IncubatorId == IncubatorId && other.PokemonId == PokemonId;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggConstantlyTask.cs b/PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggConstantlyTask.cs
new file mode 100644
index 0000000..426f4bb
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggConstantlyTask.cs
@@ -0,0 +1,44 @@
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class UseLuckyEggConstantlyTask
+    {
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            if (!session.LogicSettings.UseLuckyEggConstantly)
+                return;
+
+            var currentAmountOfLuckyEggs = await session.Inventory.GetItemAmountByType(ItemId.ItemLuckyEgg);
+            if (currentAmountOfLuckyEggs == 0)
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.NoEggsAvailable));
+                return;
+            }
+            Logger.Write(session.Translation.GetTranslation(TranslationString.UseLuckyEggAmount,
+                currentAmountOfLuckyEggs));
+
+            var UseEgg = await session.Inventory.UseLuckyEggConstantly();
+
+            if (UseEgg.Result == UseItemXpBoostResponse.Types.Result.Success)
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.UsedLuckyEgg));
+            }
+            else if (UseEgg.Result == UseItemXpBoostResponse.Types.Result.ErrorNoItemsRemaining)
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.NoEggsAvailable));
+            }
+            else if (UseEgg.Result == UseItemXpBoostResponse.Types.Result.ErrorXpBoostAlreadyActive ||
+                     (UseEgg.AppliedItems == null))
+            {
+                Logger.Write(session.Translation.GetTranslation(TranslationString.UseLuckyEggActive));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggTask.cs b/PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggTask.cs
new file mode 100644
index 0000000..257182c
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/UseLuckyEggTask.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    public class UseLuckyEggTask
+    {
+        public static async Task Execute(Session session)
+        {
+            var response = await session.Client.Inventory.UseItemXpBoost();
+            switch (response.Result)
+            {
+                case UseItemXpBoostResponse.Types.Result.Success:
+                    Logger.Write($"Using a Lucky Egg");
+                    Logger.Write($"Lucky Egg valid until: {DateTime.Now.AddMinutes(30)}");
+                    break;
+                case UseItemXpBoostResponse.Types.Result.ErrorXpBoostAlreadyActive:
+                    Logger.Write($"A Lucky Egg is already active!", LogLevel.Warning);
+                    break;
+                case UseItemXpBoostResponse.Types.Result.ErrorLocationUnset:
+                    Logger.Write($"Bot must be running first!", LogLevel.Error);
+                    break;
+                case UseItemXpBoostResponse.Types.Result.Unset:
+                    break;
+                case UseItemXpBoostResponse.Types.Result.ErrorInvalidItemType:
+                    break;
+                case UseItemXpBoostResponse.Types.Result.ErrorNoItemsRemaining:
+                    break;
+                default:
+                    Logger.Write($"Failed using a Lucky Egg!", LogLevel.Error);
+                    break;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Tasks/UseNearbyPokestopsTask.cs b/PokemonGo.RocketBot.Logic/Tasks/UseNearbyPokestopsTask.cs
new file mode 100644
index 0000000..1c3a563
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Tasks/UseNearbyPokestopsTask.cs
@@ -0,0 +1,84 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketAPI.Extensions;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+using POGOProtos.Map.Fort;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Tasks
+{
+    internal class UseNearbyPokestopsTask
+    {
+        //Please do not change GetPokeStops() in this file, it's specifically set
+        //to only find stops within 40 meters
+        //this is for gpx pathing, we are not going to the pokestops,
+        //so do not make it more than 40 because it will never get close to those stops.
+        public static async Task Execute(ISession session, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            var pokestopList = await GetPokeStops(session);
+
+            while (pokestopList.Any())
+            {
+                cancellationToken.ThrowIfCancellationRequested();
+
+                pokestopList =
+                    pokestopList.OrderBy(
+                        i =>
+                            LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude,
+                                session.Client.CurrentLongitude, i.Latitude, i.Longitude)).ToList();
+                var pokeStop = pokestopList[0];
+                pokestopList.RemoveAt(0);
+
+                var fortInfo = await session.Client.Fort.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+
+                var fortSearch =
+                    await session.Client.Fort.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
+
+                if (fortSearch.ExperienceAwarded > 0)
+                {
+                    session.EventDispatcher.Send(new FortUsedEvent
+                    {
+                        Id = pokeStop.Id,
+                        Name = fortInfo.Name,
+                        Exp = fortSearch.ExperienceAwarded,
+                        Gems = fortSearch.GemsAwarded,
+                        Items = StringUtils.GetSummedFriendlyNameOfItemAwardList(fortSearch.ItemsAwarded),
+                        Latitude = pokeStop.Latitude,
+                        Longitude = pokeStop.Longitude
+                    });
+                }
+            }
+        }
+
+
+        private static async Task<List<FortData>> GetPokeStops(ISession session)
+        {
+            var mapObjects = await session.Client.Map.GetMapObjects();
+
+            // Wasn't sure how to make this pretty. Edit as needed.
+            var pokeStops = mapObjects.Item1.MapCells.SelectMany(i => i.Forts)
+                .Where(
+                    i =>
+                        i.Type == FortType.Checkpoint &&
+                        i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime() &&
+                        ( // Make sure PokeStop is within 40 meters or else it is pointless to hit it
+                            LocationUtils.CalculateDistanceInMeters(
+                                session.Client.CurrentLatitude, session.Client.CurrentLongitude,
+                                i.Latitude, i.Longitude) < 40) ||
+                        session.LogicSettings.MaxTravelDistanceInMeters == 0
+                );
+
+            return pokeStops.ToList();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/DelayingUtils.cs b/PokemonGo.RocketBot.Logic/Utils/DelayingUtils.cs
new file mode 100644
index 0000000..b0ac51e
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/DelayingUtils.cs
@@ -0,0 +1,31 @@
+#region using directives
+
+using System;
+using System.Threading;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class DelayingUtils
+    {
+        private static readonly Random RandomDevice = new Random();
+
+        public static void Delay(int delay, int defdelay)
+        {
+            if (delay > defdelay)
+            {
+                var randomFactor = 0.3f;
+                var randomMin = (int) (delay*(1 - randomFactor));
+                var randomMax = (int) (delay*(1 + randomFactor));
+                var randomizedDelay = RandomDevice.Next(randomMin, randomMax);
+
+                Thread.Sleep(randomizedDelay);
+            }
+            else if (defdelay > 0)
+            {
+                Thread.Sleep(defdelay);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/DeviceInfoHelper.cs b/PokemonGo.RocketBot.Logic/Utils/DeviceInfoHelper.cs
new file mode 100644
index 0000000..17a374c
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/DeviceInfoHelper.cs
@@ -0,0 +1,512 @@
+using System.Collections.Generic;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class DeviceInfoHelper
+    {
+        public static Dictionary<string, Dictionary<string, string>> DeviceInfoSets = new Dictionary
+            <string, Dictionary<string, string>>
+        {
+            {
+                "lg-optimus-g",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "geehrc"},
+                    {"AndroidBootloader", "MAKOZ10f"},
+                    {"DeviceBrand", "LGE"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "LG-LS970"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "cm_ls970"},
+                    {"FirmwareBrand", "cm_ls970"},
+                    {"FirmwareFingerprint", "google/occam/mako:4.2.2/JDQ39/573038:user/release-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "userdebug"},
+                    {"HardwareManufacturer", "LGE"},
+                    {"HardwareModel", "LG-LS970"}
+                }
+            },
+            {
+                "nexus7gen2",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "flo"},
+                    {"AndroidBootloader", "FLO-04.07"},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Nexus 7"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "razor"},
+                    {"FirmwareBrand", "razor"},
+                    {"FirmwareFingerprint", "google/razor/flo:6.0.1/MOB30P/2960889:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "asus"},
+                    {"HardwareModel", "Nexus 7"}
+                }
+            },
+            {
+                "nexus7gen1",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "grouper"},
+                    {"AndroidBootloader", "4.23"},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Nexus 7"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "nakasi"},
+                    {"FirmwareBrand", "nakasi"},
+                    {"FirmwareFingerprint", "google/nakasi/grouper:5.1.1/LMY47V/1836172:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "asus"},
+                    {"HardwareModel", "Nexus 7"}
+                }
+            },
+            {
+                "htc10",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "msm8996"},
+                    {"AndroidBootloader", "1.0.0.0000"},
+                    {"DeviceBrand", "HTC"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "HTC 10"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "pmewl_00531"},
+                    {"FirmwareBrand", "pmewl_00531"},
+                    {"FirmwareFingerprint", "htc/pmewl_00531/htc_pmewl:6.0.1/MMB29M/770927.1:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "HTC"},
+                    {"HardwareModel", "HTC 10"}
+                }
+            },
+            {
+                "galaxy6",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "universal7420"},
+                    {"AndroidBootloader", "G920FXXU3DPEK"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "zeroflte"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "SM-G920F"},
+                    {"FirmwareBrand", "zerofltexx"},
+                    {"FirmwareFingerprint", "samsung/zerofltexx/zeroflte:6.0.1/MMB29K/G920FXXU3DPEK:user/release-keys"},
+                    {"FirmwareTags", "dev-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "samsungexynos7420"}
+                }
+            },
+            {
+                "galaxy-s5-gold",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MSM8974"},
+                    {"AndroidBootloader", "G900FXXU1CPEH"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SM-G900F"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "kltexx"},
+                    {"FirmwareBrand", "kltexx"},
+                    {"FirmwareFingerprint", "samsung/kltexx/klte:6.0.1/MMB29M/G900FXXU1CPEH:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SM-G900F"}
+                }
+            },
+            {
+                "lg-optimus-f6",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "f6t"},
+                    {"AndroidBootloader", "1.0.0.0000"},
+                    {"DeviceBrand", "lge"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "LG-D500"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "f6_tmo_us"},
+                    {"FirmwareBrand", "f6_tmo_us"},
+                    {"FirmwareFingerprint", "lge/f6_tmo_us/f6:4.1.2/JZO54K/D50010h.1384764249:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "LGE"},
+                    {"HardwareModel", "LG-D500"}
+                }
+            },
+            {
+                "nexus-5x",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "bullhead"},
+                    {"AndroidBootloader", "BHZ10k"},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Nexus 5X"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "bullhead"},
+                    {"FirmwareBrand", "bullhead"},
+                    {"FirmwareFingerprint", "google/bullhead/bullhead:6.0.1/MTC19T/2741993:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "LGE"},
+                    {"HardwareModel", "Nexus 5X"}
+                }
+            },
+            {
+                "galaxy-s7-edge",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "msm8996"},
+                    {"AndroidBootloader", "G935TUVU3APG1"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SM-G935T"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "hero2qltetmo"},
+                    {"FirmwareBrand", "hero2qltetmo"},
+                    {
+                        "FirmwareFingerprint",
+                        "samsung/hero2qltetmo/hero2qltetmo:6.0.1/MMB29M/G935TUVU3APG1:user/release-keys"
+                    },
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SM-G935T"}
+                }
+            },
+            {
+                "asus-zenfone2",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "moorefield"},
+                    {"AndroidBootloader", ""},
+                    {"DeviceBrand", "asus"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "ASUS_Z00AD"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "WW_Z00A"},
+                    {"FirmwareBrand", "WW_Z00A"},
+                    {
+                        "FirmwareFingerprint",
+                        "asus/WW_Z00A/Z00A_1:5.0/LRX21V/2.20.40.194_20160713_6971_user:user/release-keys"
+                    },
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "asus"},
+                    {"HardwareModel", "ASUS_Z00AD"}
+                }
+            },
+            {
+                "xperia-z5",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "msm8994"},
+                    {"AndroidBootloader", "s1"},
+                    {"DeviceBrand", "Sony"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "E6653"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "E6653"},
+                    {"FirmwareBrand", "E6653"},
+                    {"FirmwareFingerprint", "Sony/E6653/E6653:6.0.1/32.2.A.0.224/456768306:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "Sony"},
+                    {"HardwareModel", "E6653"}
+                }
+            },
+            {
+                "galaxy-s4",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MSM8960"},
+                    {"AndroidBootloader", "I337MVLUGOH1"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SGH-I337M"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "jfltevl"},
+                    {"FirmwareBrand", "jfltevl"},
+                    {"FirmwareFingerprint", "samsung/jfltevl/jfltecan:5.0.1/LRX22C/I337MVLUGOH1:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SGH-I337M"}
+                }
+            },
+            {
+                "nexus-6p",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "angler"},
+                    {"AndroidBootloader", "angler-03.52"},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Nexus 6P"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "angler"},
+                    {"FirmwareBrand", "angler"},
+                    {"FirmwareFingerprint", "google/angler/angler:6.0.1/MTC19X/2960136:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "Huawei"},
+                    {"HardwareModel", "Nexus 6P"}
+                }
+            },
+            {
+                "sony-z3-compact",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MSM8974"},
+                    {"AndroidBootloader", "s1"},
+                    {"DeviceBrand", "docomo"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SO-02G"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "SO-02G"},
+                    {"FirmwareBrand", "SO-02G"},
+                    {"FirmwareFingerprint", "docomo/SO-02G/SO-02G:5.0.2/23.1.B.1.317/2161656255:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "Sony"},
+                    {"HardwareModel", "SO-02G"}
+                }
+            },
+            {
+                "lg-v10",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MSM8992"},
+                    {"AndroidBootloader", ""},
+                    {"DeviceBrand", "LG"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "V10"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "pplus"},
+                    {"FirmwareBrand", "pplus"},
+                    {"FirmwareFingerprint", "LG/pplus/pplus:5.1.1/LYZ28J/kasp3rd02071120:eng/test-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "eng"},
+                    {"HardwareManufacturer", "LG"},
+                    {"HardwareModel", "V10"}
+                }
+            },
+            {
+                "galaxy-tab3",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "smdk4x12"},
+                    {"AndroidBootloader", "T310UEUCOI1"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SM-T310"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "lt01wifiue"},
+                    {"FirmwareBrand", "lt01wifiue"},
+                    {"FirmwareFingerprint", "samsung/lt01wifiue/lt01wifi:4.4.2/KOT49H/T310UEUCOI1:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SM-T310"}
+                }
+            },
+            {
+                "lg-g4",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "msm8992"},
+                    {"AndroidBootloader", ""},
+                    {"DeviceBrand", "lge"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "VS986"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "p1_vzw"},
+                    {"FirmwareBrand", "p1_vzw"},
+                    {"FirmwareFingerprint", "lge/p1_vzw/p1:5.1/LMY47D/151541507ff1b:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "LGE"},
+                    {"HardwareModel", "VS986"}
+                }
+            },
+            {
+                "nexus5",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "hammerhead"},
+                    {"AndroidBootloader", "HHZ20b"},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Nexus 5"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "hammerhead"},
+                    {"FirmwareBrand", "hammerhead"},
+                    {"FirmwareFingerprint", "google/hammerhead/hammerhead:6.0.1/MOB30M/2862625:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "LGE"},
+                    {"HardwareModel", "Nexus 5"}
+                }
+            },
+            {
+                "xoom",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", ""},
+                    {"AndroidBootloader", "1050"},
+                    {"DeviceBrand", "motorola"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Xoom"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "tervigon"},
+                    {"FirmwareBrand", "tervigon"},
+                    {"FirmwareFingerprint", "motorola/tervigon/wingray:4.1.2/JZO54K/485486:user/release-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "userdebug"},
+                    {"HardwareManufacturer", "Motorola"},
+                    {"HardwareModel", "Xoom"}
+                }
+            },
+            {
+                "galaxy-note-edge",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "APQ8084"},
+                    {"AndroidBootloader", "N915W8VLU1CPE2"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SM-N915W8"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "tbltecan"},
+                    {"FirmwareBrand", "tbltecan"},
+                    {"FirmwareFingerprint", "samsung/tbltecan/tbltecan:6.0.1/MMB29M/N915W8VLU1CPE2:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SM-N915W8"}
+                }
+            },
+            {
+                "amazon-fire-cm12",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "ford"},
+                    {"AndroidBootloader", ""},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "KFFOWI"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "cm_ford"},
+                    {"FirmwareBrand", "cm_ford"},
+                    {"FirmwareFingerprint", "google/cm_ford/ford:5.1.1/LMY48Y/ba503d5e70:userdebug/test-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "userdebug"},
+                    {"HardwareManufacturer", "amzn"},
+                    {"HardwareModel", "KFFOWI"}
+                }
+            },
+            {
+                "nexus4-chroma",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MAKO"},
+                    {"AndroidBootloader", "MAKOZ30f"},
+                    {"DeviceBrand", "google"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Nexus 4"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "occam"},
+                    {"FirmwareBrand", "occam"},
+                    {"FirmwareFingerprint", "google/occam/mako:6.0.1/MOB30Y/3067468:user/release-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "userdebug"},
+                    {"HardwareManufacturer", "LGE"},
+                    {"HardwareModel", "Nexus 4"}
+                }
+            },
+            {
+                "melrose-s9",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "g15"},
+                    {"AndroidBootloader", ""},
+                    {"DeviceBrand", "alps"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "MELROSE S9"},
+                    {"DeviceModelBoot", "mtk"},
+                    {"DeviceModelIdentifier", "g15"},
+                    {"FirmwareBrand", "g15"},
+                    {"FirmwareFingerprint", "alps/g15/g15:4.4.2/KOT49H/:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "alps"},
+                    {"HardwareModel", "MELROSE S9"}
+                }
+            },
+            {
+                "yureka",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MSM8916"},
+                    {"AndroidBootloader", "tomato-12-gf7e8024"},
+                    {"DeviceBrand", "YU"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "AO5510"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "YUREKA"},
+                    {"FirmwareBrand", "YUREKA"},
+                    {"FirmwareFingerprint", "YU/YUREKA/YUREKA:5.0.2/LRX22G/YNG1TAS1K0:user/release-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "userdebug"},
+                    {"HardwareManufacturer", "YU"},
+                    {"HardwareModel", "AO5510"}
+                }
+            },
+            {
+                "note3",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "MSM8974"},
+                    {"AndroidBootloader", "N900PVPUEOK2"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "SM-N900P"},
+                    {"DeviceModelBoot", "qcom"},
+                    {"DeviceModelIdentifier", "cm_hltespr"},
+                    {"FirmwareBrand", "cm_hltespr"},
+                    {"FirmwareFingerprint", "samsung/hltespr/hltespr:5.0/LRX21V/N900PVPUEOH1:user/release-keys"},
+                    {"FirmwareTags", "test-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SM-N900P"}
+                }
+            },
+            {
+                "galaxy-tab-s84",
+                new Dictionary<string, string>
+                {
+                    {"AndroidBoardName", "universal5420"},
+                    {"AndroidBootloader", "T705XXU1BOL2"},
+                    {"DeviceBrand", "samsung"},
+                    {"DeviceId", "8525f5d8201f78b5"},
+                    {"DeviceModel", "Samsung Galaxy Tab S 8.4 LTE"},
+                    {"DeviceModelBoot", "universal5420"},
+                    {"DeviceModelIdentifier", "LRX22G.T705XXU1BOL2"},
+                    {"FirmwareBrand", "Samsung Galaxy Tab S 8.4 LTE"},
+                    {"FirmwareFingerprint", "samsung/klimtltexx/klimtlte:5.0.2/LRX22G/T705XXU1BOL2:user/release-keys"},
+                    {"FirmwareTags", "release-keys"},
+                    {"FirmwareType", "user"},
+                    {"HardwareManufacturer", "samsung"},
+                    {"HardwareModel", "SM-T705"}
+                }
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/EggWalker.cs b/PokemonGo.RocketBot.Logic/Utils/EggWalker.cs
new file mode 100644
index 0000000..126ee6e
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/EggWalker.cs
@@ -0,0 +1,40 @@
+#region using directives
+
+using System.Threading;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    internal class EggWalker
+    {
+        private readonly double _checkInterval;
+        private readonly ISession _session;
+
+        private double _distanceTraveled;
+
+        public EggWalker(double checkIncubatorsIntervalMeters, ISession session)
+        {
+            _checkInterval = checkIncubatorsIntervalMeters;
+            _session = session;
+        }
+
+        public async Task ApplyDistance(double distanceTraveled, CancellationToken cancellationToken)
+        {
+            cancellationToken.ThrowIfCancellationRequested();
+
+            if (!_session.LogicSettings.UseEggIncubators)
+                return;
+
+            _distanceTraveled += distanceTraveled;
+            if (_distanceTraveled > _checkInterval)
+            {
+                await UseIncubatorsTask.Execute(_session, cancellationToken);
+                _distanceTraveled = 0;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/ErrorHandler.cs b/PokemonGo.RocketBot.Logic/Utils/ErrorHandler.cs
new file mode 100644
index 0000000..7ee197f
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/ErrorHandler.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Diagnostics;
+using System.Reflection;
+using System.Threading;
+using PokemonGo.RocketBot.Logic.Logging;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    internal class ErrorHandler
+    {
+        /// <summary>
+        ///     Alerts that a fatal error has occurred, displaying a message and exiting the application
+        /// </summary>
+        /// <param name="strMessage">Optional message to display - Leave NULL to exclude message</param>
+        /// <param name="timeout">The total seconds the messag will display before shutting down</param>
+        public static void ThrowFatalError(string strMessage, int timeout, LogLevel level, bool boolRestart = false)
+        {
+            if (strMessage != null)
+                Logger.Write(strMessage, level);
+
+            Console.Write("Ending Application... ");
+
+            for (var i = timeout; i > 0; i--)
+            {
+                Console.Write("\b" + i);
+                Thread.Sleep(1000);
+            }
+
+            if (boolRestart)
+                Process.Start(Assembly.GetEntryAssembly().Location);
+
+            Environment.Exit(-1);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/GPXReader.cs b/PokemonGo.RocketBot.Logic/Utils/GPXReader.cs
new file mode 100644
index 0000000..ab1fed1
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/GPXReader.cs
@@ -0,0 +1,727 @@
+#region using directives
+
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Xml;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+
+#endregion
+
+// ReSharper disable All
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public class GpxReader
+    {
+        private readonly XmlDocument _gpx = new XmlDocument();
+
+        private ISession _ctx;
+
+        public string Author = "";
+        public GpsBoundary Bounds = new GpsBoundary();
+
+        public string Description = "";
+        public string EMail = "";
+        public string KeyWords = "";
+        public List<Rte> Routes = new List<Rte>();
+        public string Time = "";
+        public List<Trk> Tracks = new List<Trk>();
+        public string Url = "";
+        public string UrlName = "";
+        public List<Wpt> WayPoints = new List<Wpt>();
+
+        public GpxReader(string xml, ISession session)
+        {
+            _ctx = session;
+            if (xml.Equals("")) return;
+            _gpx.LoadXml(xml);
+            if (_gpx.DocumentElement == null || !_gpx.DocumentElement.Name.Equals("gpx")) return;
+            var gpxNodes = _gpx.GetElementsByTagName("gpx")[0].ChildNodes;
+            foreach (XmlNode node in gpxNodes)
+            {
+                switch (node.Name)
+                {
+                    case "name":
+                        Name = node.InnerText;
+                        break;
+                    case "desc":
+                        Description = node.InnerText;
+                        break;
+                    case "author":
+                        Author = node.InnerText;
+                        break;
+                    case "email":
+                        EMail = node.InnerText;
+                        break;
+                    case "time":
+                        Time = node.InnerText;
+                        break;
+                    case "keywords":
+                        KeyWords = node.InnerText;
+                        break;
+                    case "bounds":
+                        Bounds = new GpsBoundary();
+                        if (node.Attributes != null)
+                            foreach (XmlAttribute att in node.Attributes)
+                            {
+                                switch (att.Name)
+                                {
+                                    case "minlat":
+                                        Bounds.Min.Lat = att.Value;
+                                        break;
+                                    case "minlon":
+                                        Bounds.Min.Lon = att.Value;
+                                        break;
+                                    case "maxlat":
+                                        Bounds.Max.Lat = att.Value;
+                                        break;
+                                    case "maxlon":
+                                        Bounds.Max.Lon = att.Value;
+                                        break;
+                                }
+                            }
+                        break;
+                    case "wpt":
+                        var newWayPoint = new Wpt(node);
+                        WayPoints.Add(newWayPoint);
+                        break;
+                    case "rte":
+                        var newRoute = new Rte(node);
+                        Routes.Add(newRoute);
+                        break;
+                    case "trk":
+                        var track = new Trk(node);
+                        Tracks.Add(track);
+                        break;
+                    case "url":
+                        Url = node.InnerText;
+                        break;
+                    case "urlname":
+                        UrlName = node.InnerText;
+                        break;
+                    case "topografix:active_point":
+                    case "topografix:map":
+                        break;
+                    default:
+                        Logger.Write(session.Translation.GetTranslation(TranslationString.UnhandledGpxData),
+                            LogLevel.Info);
+                        break;
+                }
+            }
+        }
+
+        public string Name { get; set; } = "";
+
+        public class Travelbug
+        {
+            public string GroundspeakName = "";
+            public string Id;
+            public string Reference;
+
+            public Travelbug(XmlNode travelBugNode)
+            {
+                Id = travelBugNode.Attributes?["id"].Value;
+                Reference = travelBugNode.Attributes?["ref"].Value;
+                foreach (XmlNode tbChildNode in travelBugNode.ChildNodes)
+                {
+                    switch (tbChildNode.Name)
+                    {
+                        case "groundspeak:name":
+                            GroundspeakName = tbChildNode.InnerText;
+                            break;
+                        default:
+                            throw new Exception("Unhandled Child Node: " + tbChildNode.Name);
+                    }
+                }
+            }
+        }
+
+        public class Cachelog
+        {
+            public string GroundspeakDate = "";
+            public string GroundspeakFinder = "";
+            public string GroundspeakFinderId = "";
+            public GpsCoordinates GroundspeakLogWayPoint = new GpsCoordinates();
+            public string GroundspeakText = "";
+            public string GroundspeakTextEncoded = "";
+            public string GroundspeakType = "";
+            public string Id;
+
+            public Cachelog(XmlNode childNode)
+            {
+                Id = childNode.Attributes?["id"].Value;
+                foreach (XmlNode node in childNode.ChildNodes)
+                {
+                    switch (node.Name)
+                    {
+                        case "groundspeak:date":
+                            GroundspeakDate = node.InnerText;
+                            break;
+                        case "groundspeak:type":
+                            GroundspeakType = node.InnerText;
+                            break;
+                        case "groundspeak:finder":
+                            GroundspeakFinder = node.InnerText;
+                            GroundspeakFinderId = node.Attributes?["id"].Value;
+                            break;
+                        case "groundspeak:text":
+                            GroundspeakText = node.InnerText;
+                            GroundspeakTextEncoded = node.Attributes?["encoded"].Value;
+                            break;
+                        case "groundspeak:log_wpt":
+                            GroundspeakLogWayPoint.Lat = node.Attributes?["lat"].Value;
+                            GroundspeakLogWayPoint.Lon = node.Attributes?["lon"].Value;
+                            break;
+                        default:
+                            throw new Exception("Unhandled Child Node: " + node.Name);
+                    }
+                }
+            }
+        }
+
+        public class Cache
+        {
+            public string Archived = "";
+            public string Available = "";
+            public List<Attribute> GroundspeakAttributes = new List<Attribute>();
+            public string GroundspeakContainer = "";
+            public string GroundspeakCountry = "";
+            public string GroundspeakDifficulty = "";
+            public string GroundspeakEncodedHint = "";
+
+            public List<Cachelog> GroundspeakLogs = new List<Cachelog>();
+            public string GroundspeakLongDescription = "";
+            public bool GroundspeakLongDescriptionIsHtml;
+
+            public string GroundspeakName = "";
+            public string GroundspeakOwner = "";
+            public string GroundspeakOwnerId = "";
+            public string GroundspeakPlacedBy = "";
+            public string GroundspeakShortDescription = "";
+            public bool GroundspeakShortDescriptionIsHtml;
+            public string GroundspeakState = "";
+            public string GroundspeakTerrain = "";
+            public List<Travelbug> GroundspeakTravelbugs = new List<Travelbug>();
+            public string GroundspeakType = "";
+            public string Id = "";
+            public string Xmlns = "";
+
+            public Cache(XmlNode node)
+            {
+                #region Attributes
+
+                if (node.Attributes == null) return;
+                foreach (XmlAttribute attribute in node.Attributes)
+                {
+                    switch (attribute.Name)
+                    {
+                        case "id":
+                            Id = attribute.Value;
+                            break;
+                        case "available":
+                            Available = attribute.Value;
+                            break;
+                        case "archived":
+                            Archived = attribute.Value;
+                            break;
+                        case "xmlns:groundspeak":
+                            Xmlns = attribute.Value;
+                            break;
+                        default:
+                            throw new Exception("Unhandled Attribute: " + attribute.Name);
+                    }
+                }
+
+                #endregion Attributes
+
+                foreach (XmlNode childNode in node.ChildNodes)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "groundspeak:name":
+                            GroundspeakName = childNode.InnerText;
+                            break;
+                        case "groundspeak:placed_by":
+                            GroundspeakPlacedBy = childNode.InnerText;
+                            break;
+                        case "groundspeak:owner":
+                            GroundspeakOwner = childNode.InnerText;
+                            GroundspeakOwnerId = childNode.Attributes?["id"].Value;
+                            break;
+                        case "groundspeak:type":
+                            GroundspeakType = childNode.InnerText;
+                            break;
+                        case "groundspeak:container":
+                            GroundspeakContainer = childNode.InnerText;
+                            break;
+                        case "groundspeak:difficulty":
+                            GroundspeakDifficulty = childNode.InnerText;
+                            break;
+                        case "groundspeak:terrain":
+                            GroundspeakTerrain = childNode.InnerText;
+                            break;
+                        case "groundspeak:country":
+                            GroundspeakCountry = childNode.InnerText;
+                            break;
+                        case "groundspeak:state":
+                            GroundspeakState = childNode.InnerText;
+                            break;
+                        case "groundspeak:short_description":
+                            GroundspeakShortDescription = childNode.InnerText;
+                            if (childNode.Attributes != null && childNode.Attributes["html"].Value.Equals("True"))
+                            {
+                                GroundspeakShortDescriptionIsHtml = true;
+                            }
+                            break;
+                        case "groundspeak:long_description":
+                            GroundspeakLongDescription = childNode.InnerText;
+                            if (childNode.Attributes != null && childNode.Attributes["html"].Value.Equals("True"))
+                            {
+                                GroundspeakLongDescriptionIsHtml = true;
+                            }
+                            break;
+                        case "groundspeak:encoded_hints":
+                            GroundspeakEncodedHint = childNode.InnerText;
+                            break;
+                        case "groundspeak:logs":
+                            foreach (XmlNode logNode in childNode.ChildNodes)
+                            {
+                                var groundspeakLogEntry = new Cachelog(logNode);
+                                GroundspeakLogs.Add(groundspeakLogEntry);
+                            }
+                            break;
+                        case "groundspeak:travelbugs":
+                            foreach (XmlNode travelBugNode in childNode.ChildNodes)
+                            {
+                                var travelbug = new Travelbug(travelBugNode);
+                                GroundspeakTravelbugs.Add(travelbug);
+                            }
+                            break;
+                        case "groundspeak:attributes":
+                            foreach (XmlNode attributeNode in childNode.ChildNodes)
+                            {
+                                var cacheAttribute = new Attribute(attributeNode);
+                                GroundspeakAttributes.Add(cacheAttribute);
+                            }
+                            break;
+                        default:
+                            throw new Exception("Unhandled Child Node: " + childNode.Name);
+                    }
+                }
+            }
+
+            public Cache()
+            {
+            }
+        }
+
+
+        //WayPoint contains Caches and other Objects
+
+        public class Wpt
+        {
+            public string Cmt = "";
+            public GpsCoordinates Coordinates = new GpsCoordinates();
+            public string Desc = "";
+            public string Ele = "";
+
+            public Cache GroundspeakCache = new Cache();
+            public string Name = "";
+            public string OpencachingAwesomeness = "";
+            public string OpencachingDifficulty = "";
+            public string OpencachingSeriesId = "";
+            public string OpencachingSeriesName = "";
+            public string OpencachingSize = "";
+            public List<string> OpencachingTags = new List<string>();
+            public string OpencachingTerrain = "";
+            public string OpencachingVerificationChirp = "";
+            public string OpencachingVerificationNumber = "";
+            public string OpencachingVerificationPhrase = "";
+            public string OpencachingVerificationQr = "";
+            public string Sym = "";
+            public string Time = "";
+            public string Type = "";
+            public string Url = "";
+            public string UrlName = "";
+
+            public Wpt(XmlNode node)
+            {
+                Coordinates.Lat = node.Attributes?["lat"].Value;
+                Coordinates.Lon = node.Attributes?["lon"].Value;
+                foreach (XmlNode childNode in node.ChildNodes)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "time":
+                            Time = childNode.InnerText;
+                            break;
+                        case "name":
+                            Name = childNode.InnerText;
+                            break;
+                        case "desc":
+                            Desc = childNode.InnerText;
+                            break;
+                        case "url":
+                            Url = childNode.InnerText;
+                            break;
+                        case "urlname":
+                            UrlName = childNode.InnerText;
+                            break;
+                        case "sym":
+                            Sym = childNode.InnerText;
+                            break;
+                        case "type":
+                            Type = childNode.InnerText;
+                            break;
+                        case "ele":
+                            Ele = childNode.InnerText;
+                            break;
+                        case "cmt":
+                            Cmt = childNode.InnerText;
+                            break;
+                        case "groundspeak:cache":
+                            GroundspeakCache = new Cache(childNode);
+                            break;
+                        case "ox:opencaching":
+                            foreach (XmlNode openCachingChildNode in childNode.ChildNodes)
+                            {
+                                switch (openCachingChildNode.Name)
+                                {
+                                    case "ox:ratings":
+                                        foreach (XmlNode openCachingRatingsChildNode in openCachingChildNode.ChildNodes)
+                                        {
+                                            switch (openCachingRatingsChildNode.Name)
+                                            {
+                                                case "ox:awesomeness":
+                                                    OpencachingAwesomeness = openCachingRatingsChildNode.InnerText;
+                                                    break;
+                                                case "ox:difficulty":
+                                                    OpencachingDifficulty = openCachingRatingsChildNode.InnerText;
+                                                    break;
+                                                case "ox:terrain":
+                                                    OpencachingTerrain = openCachingRatingsChildNode.InnerText;
+                                                    break;
+                                                case "ox:size":
+                                                    OpencachingSize = openCachingRatingsChildNode.InnerText;
+                                                    break;
+                                                default:
+                                                    throw new Exception("Unhandled for Child Object: " +
+                                                                        openCachingRatingsChildNode.Name);
+                                            }
+                                        }
+                                        break;
+                                    case "ox:tags":
+                                        foreach (XmlNode openCachingTagNode in openCachingChildNode.ChildNodes)
+                                        {
+                                            switch (openCachingTagNode.Name)
+                                            {
+                                                case "ox:tag":
+                                                    OpencachingTags.Add(openCachingTagNode.InnerXml);
+                                                    break;
+                                                default:
+                                                    throw new Exception("Unhandled for Child Object: " +
+                                                                        openCachingTagNode.Name);
+                                            }
+                                        }
+
+                                        break;
+                                    case "ox:verification":
+                                        foreach (XmlNode openCachingVerificationNode in openCachingChildNode.ChildNodes)
+                                        {
+                                            switch (openCachingVerificationNode.Name)
+                                            {
+                                                case "ox:phrase":
+                                                    OpencachingVerificationPhrase = openCachingChildNode.InnerText;
+                                                    break;
+                                                case "ox:number":
+                                                    OpencachingVerificationNumber = openCachingChildNode.InnerText;
+                                                    break;
+                                                case "ox:QR":
+                                                    OpencachingVerificationQr = openCachingChildNode.InnerText;
+                                                    break;
+                                                case "ox:chirp":
+                                                    OpencachingVerificationChirp = openCachingChildNode.InnerText;
+                                                    break;
+                                                default:
+                                                    throw new Exception("Unhandled for Child Object: " +
+                                                                        openCachingVerificationNode.Name);
+                                            }
+                                        }
+                                        break;
+                                    case "ox:series":
+                                        OpencachingSeriesName = openCachingChildNode.InnerText;
+                                        OpencachingSeriesId = openCachingChildNode.Attributes?["id"].Value;
+                                        break;
+                                    default:
+                                        throw new Exception("Unhandled for Child Object: " + openCachingChildNode.Name);
+                                }
+                            }
+                            break;
+                        default:
+                            throw new Exception("Unhandled for Child Object: " + childNode.Name);
+                    }
+                }
+            }
+        }
+
+        public class GpsBoundary
+        {
+            public GpsCoordinates Max = new GpsCoordinates();
+            public GpsCoordinates Min = new GpsCoordinates();
+        }
+
+        public class GpsCoordinates
+        {
+            public string Lat = "";
+            public string Lon = "";
+        }
+
+        public class Attribute : IComparable<Attribute>
+        {
+            public string Description = "";
+            public string Id = "";
+            public string Inc = "";
+
+            public Attribute(XmlNode attributeNode)
+            {
+                Id = attributeNode.Attributes?["id"].Value;
+                Inc = attributeNode.Attributes?["inc"].Value;
+                Description = attributeNode.InnerText;
+            }
+
+            public Attribute()
+            {
+            }
+
+
+            public int CompareTo(Attribute other)
+            {
+                return string.Compare(Description, other.Description, StringComparison.Ordinal);
+            }
+        }
+
+        //Route ans Route Points
+
+        public class Rte
+        {
+            public string Desc = "";
+            public string Name = "";
+            public string Number = "";
+            // private readonly List<Rtept> _routePoints = new List<Rtept>();
+            public string Url = "";
+            public string UrlName = "";
+
+            public Rte(XmlNode node)
+            {
+                foreach (XmlNode childNode in node.ChildNodes)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "name":
+                            Name = childNode.InnerText;
+                            break;
+                        case "desc":
+                            Desc = childNode.InnerText;
+                            break;
+                        case "number":
+                            Number = childNode.InnerText;
+                            break;
+                        case "rtept":
+                            //var routePoint = new Rtept(childNode);
+                            //_routePoints.Add(routePoint);
+                            break;
+                        case "url":
+                            Url = childNode.InnerText;
+                            break;
+                        case "urlname":
+                            UrlName = childNode.InnerText;
+                            break;
+                        case "topografix:color":
+                            break;
+                        default:
+                            throw new Exception("Unhandled for Child Object: " + childNode.Name);
+                    }
+                }
+            }
+        }
+
+        public class Rtept
+        {
+            public string Cmt = "";
+            public string Desc = "";
+            public string Ele = "";
+            public string Lat;
+            public string Lon;
+            public string Name = "";
+            public string Sym = "";
+            public string Time = "";
+            public string Type = "";
+            public string Url = "";
+            public string UrlName = "";
+
+            public Rtept(XmlNode node)
+            {
+                Lat = node.Attributes?["lat"].Value;
+                Lon = node.Attributes?["lon"].Value;
+                foreach (XmlNode childNode in node.ChildNodes)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "ele":
+                            Ele = childNode.InnerText;
+                            break;
+                        case "time":
+                            Time = childNode.InnerText;
+                            break;
+                        case "name":
+                            Name = childNode.InnerText;
+                            break;
+                        case "cmt":
+                            Cmt = childNode.InnerText;
+                            break;
+                        case "desc":
+                            Desc = childNode.InnerText;
+                            break;
+                        case "sym":
+                            Sym = childNode.InnerText;
+                            break;
+                        case "type":
+                            Type = childNode.InnerText;
+                            break;
+                        case "url":
+                            Url = childNode.InnerText;
+                            break;
+                        case "urlname":
+                            UrlName = childNode.InnerText;
+                            break;
+                        case "topografix:leg":
+                            break;
+                        default:
+                            throw new Exception("Unhandled for Child Object: " + childNode.Name);
+                    }
+                }
+            }
+        }
+
+        //Tracks
+
+        public class Trk
+        {
+            public string Desc = "";
+            public string Name = "";
+            public string Number = "";
+            public List<Trkseg> Segments = new List<Trkseg>();
+            public string Url = "";
+            public string UrlName = "";
+
+            public Trk(XmlNode node)
+            {
+                foreach (XmlNode childNode in node)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "name":
+                            Name = childNode.InnerText;
+                            break;
+                        case "desc":
+                            Desc = childNode.InnerText;
+                            break;
+                        case "number":
+                            Number = childNode.InnerText;
+                            break;
+                        case "trkseg":
+                            var segment = new Trkseg(childNode);
+                            Segments.Add(segment);
+                            break;
+                        case "url":
+                            Url = childNode.InnerText;
+                            break;
+                        case "urlname":
+                            UrlName = childNode.InnerText;
+                            break;
+                        case "topografix:color":
+                            break;
+                        default:
+                            throw new Exception("Unhandled for Child Object: " + childNode.Name);
+                    }
+                }
+            }
+        }
+
+        public class Trkseg
+        {
+            public List<Trkpt> TrackPoints = new List<Trkpt>();
+
+            public Trkseg(XmlNode node)
+            {
+                foreach (XmlNode childNode in node)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "trkpt":
+                            var trackPoint = new Trkpt(childNode);
+                            TrackPoints.Add(trackPoint);
+                            break;
+                        default:
+                            throw new Exception("Unhandled for Child Object: " + childNode.Name);
+                    }
+                }
+            }
+        }
+
+        public class Trkpt
+        {
+            public string Cmt;
+            public string Desc;
+            public string Ele;
+            public string Lat;
+            public string Lon;
+            public string Name;
+            public string Sym;
+            public string Time;
+
+            public Trkpt(XmlNode node)
+            {
+                Lat = node.Attributes?["lat"].Value;
+                Lon = node.Attributes?["lon"].Value;
+                foreach (XmlNode childNode in node)
+                {
+                    switch (childNode.Name)
+                    {
+                        case "sym":
+                            Sym = childNode.InnerText;
+                            break;
+                        case "ele":
+                            Ele = childNode.InnerText;
+                            break;
+                        case "time":
+                            Time = childNode.InnerText;
+                            break;
+                        case "cmt":
+                            Cmt = childNode.InnerText;
+                            break;
+                        case "name":
+                            Name = childNode.InnerText;
+                            break;
+                        case "desc":
+                            Desc = childNode.InnerText;
+                            break;
+                        default:
+                            throw new Exception("Unhandled for Child Object: " + childNode.Name);
+                    }
+                }
+            }
+
+            public override string ToString()
+            {
+                return "Latitude: " + Lat + " Longitude: " + Lon + " Elevation: " + Ele;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/JitterUtils.cs b/PokemonGo.RocketBot.Logic/Utils/JitterUtils.cs
new file mode 100644
index 0000000..1fc59e2
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/JitterUtils.cs
@@ -0,0 +1,19 @@
+#region using directives
+
+using System;
+using System.Threading.Tasks;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class JitterUtils
+    {
+        private static readonly Random RandomDevice = new Random();
+
+        public static Task RandomDelay(int min, int max)
+        {
+            return Task.Delay(RandomDevice.Next(min, max));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/LocationUtils.cs b/PokemonGo.RocketBot.Logic/Utils/LocationUtils.cs
new file mode 100644
index 0000000..a134280
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/LocationUtils.cs
@@ -0,0 +1,123 @@
+#region using directives
+
+using System;
+using GeoCoordinatePortable;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class LocationUtils
+    {
+        public static double CalculateDistanceInMeters(double sourceLat, double sourceLng, double destLat,
+            double destLng)
+            // from http://stackoverflow.com/questions/6366408/calculating-distance-between-two-latitude-and-longitude-geocoordinates
+        {
+            var sourceLocation = new GeoCoordinate(sourceLat, sourceLng);
+            var targetLocation = new GeoCoordinate(destLat, destLng);
+
+            return sourceLocation.GetDistanceTo(targetLocation);
+        }
+
+        public static double CalculateDistanceInMeters(GeoCoordinate sourceLocation, GeoCoordinate destinationLocation)
+        {
+            return CalculateDistanceInMeters(sourceLocation.Latitude, sourceLocation.Longitude,
+                destinationLocation.Latitude, destinationLocation.Longitude);
+        }
+
+        public static double getElevation(double lat, double lon)
+        {
+            var random = new Random();
+            double maximum = 11.0f;
+            double minimum = 8.6f;
+            var return1 = random.NextDouble()*(maximum - minimum) + minimum;
+
+            return return1;
+        }
+
+        public static GeoCoordinate CreateWaypoint(GeoCoordinate sourceLocation, double distanceInMeters,
+            double bearingDegrees)
+            //from http://stackoverflow.com/a/17545955
+        {
+            var distanceKm = distanceInMeters/1000.0;
+            var distanceRadians = distanceKm/6371; //6371 = Earth's radius in km
+
+            var bearingRadians = ToRad(bearingDegrees);
+            var sourceLatitudeRadians = ToRad(sourceLocation.Latitude);
+            var sourceLongitudeRadians = ToRad(sourceLocation.Longitude);
+
+            var targetLatitudeRadians = Math.Asin(Math.Sin(sourceLatitudeRadians)*Math.Cos(distanceRadians)
+                                                  +
+                                                  Math.Cos(sourceLatitudeRadians)*Math.Sin(distanceRadians)*
+                                                  Math.Cos(bearingRadians));
+
+            var targetLongitudeRadians = sourceLongitudeRadians + Math.Atan2(Math.Sin(bearingRadians)
+                                                                             *Math.Sin(distanceRadians)*
+                                                                             Math.Cos(sourceLatitudeRadians),
+                Math.Cos(distanceRadians)
+                - Math.Sin(sourceLatitudeRadians)*Math.Sin(targetLatitudeRadians));
+
+            // adjust toLonRadians to be in the range -180 to +180...
+            targetLongitudeRadians = (targetLongitudeRadians + 3*Math.PI)%(2*Math.PI) - Math.PI;
+
+            return new GeoCoordinate(ToDegrees(targetLatitudeRadians), ToDegrees(targetLongitudeRadians),
+                getElevation(sourceLocation.Latitude, sourceLocation.Longitude));
+        }
+
+        public static GeoCoordinate CreateWaypoint(GeoCoordinate sourceLocation, double distanceInMeters,
+            double bearingDegrees, double altitude)
+            //from http://stackoverflow.com/a/17545955
+        {
+            var distanceKm = distanceInMeters/1000.0;
+            var distanceRadians = distanceKm/6371; //6371 = Earth's radius in km
+
+            var bearingRadians = ToRad(bearingDegrees);
+            var sourceLatitudeRadians = ToRad(sourceLocation.Latitude);
+            var sourceLongitudeRadians = ToRad(sourceLocation.Longitude);
+
+            var targetLatitudeRadians = Math.Asin(Math.Sin(sourceLatitudeRadians)*Math.Cos(distanceRadians)
+                                                  +
+                                                  Math.Cos(sourceLatitudeRadians)*Math.Sin(distanceRadians)*
+                                                  Math.Cos(bearingRadians));
+
+            var targetLongitudeRadians = sourceLongitudeRadians + Math.Atan2(Math.Sin(bearingRadians)
+                                                                             *Math.Sin(distanceRadians)*
+                                                                             Math.Cos(sourceLatitudeRadians),
+                Math.Cos(distanceRadians)
+                - Math.Sin(sourceLatitudeRadians)*Math.Sin(targetLatitudeRadians));
+
+            // adjust toLonRadians to be in the range -180 to +180...
+            targetLongitudeRadians = (targetLongitudeRadians + 3*Math.PI)%(2*Math.PI) - Math.PI;
+
+            return new GeoCoordinate(ToDegrees(targetLatitudeRadians), ToDegrees(targetLongitudeRadians), altitude);
+        }
+
+        public static double DegreeBearing(GeoCoordinate sourceLocation, GeoCoordinate targetLocation)
+            // from http://stackoverflow.com/questions/2042599/direction-between-2-latitude-longitude-points-in-c-sharp
+        {
+            var dLon = ToRad(targetLocation.Longitude - sourceLocation.Longitude);
+            var dPhi = Math.Log(
+                Math.Tan(ToRad(targetLocation.Latitude)/2 + Math.PI/4)/
+                Math.Tan(ToRad(sourceLocation.Latitude)/2 + Math.PI/4));
+            if (Math.Abs(dLon) > Math.PI)
+                dLon = dLon > 0 ? -(2*Math.PI - dLon) : 2*Math.PI + dLon;
+            return ToBearing(Math.Atan2(dLon, dPhi));
+        }
+
+        public static double ToBearing(double radians)
+        {
+            // convert radians to degrees (as bearing: 0...360)
+            return (ToDegrees(radians) + 360)%360;
+        }
+
+        public static double ToDegrees(double radians)
+        {
+            return radians*180/Math.PI;
+        }
+
+        public static double ToRad(double degrees)
+        {
+            return degrees*(Math.PI/180);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/NecroWebClient.cs b/PokemonGo.RocketBot.Logic/Utils/NecroWebClient.cs
new file mode 100644
index 0000000..d74cef3
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/NecroWebClient.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Net;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public class NecroWebClient : WebClient
+    {
+        protected override WebRequest GetWebRequest(Uri uri)
+        {
+            var w = base.GetWebRequest(uri);
+            w.Timeout = 5000;
+            return w;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/RouteOptimizeUtil.cs b/PokemonGo.RocketBot.Logic/Utils/RouteOptimizeUtil.cs
new file mode 100644
index 0000000..e7d0917
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/RouteOptimizeUtil.cs
@@ -0,0 +1,133 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using POGOProtos.Map.Fort;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public delegate void RouteOptimizeDelegate(List<FortData> optimizedRoute);
+
+    public static class RouteOptimizeUtil
+    {
+        public static List<FortData> Optimize(FortData[] pokeStops, double lat, double lng)
+        {
+            var optimizedRoute = new List<FortData>(pokeStops);
+            // NN
+            var nn = FindNn(optimizedRoute, lat, lng);
+            optimizedRoute.Remove(nn);
+            optimizedRoute.Insert(0, nn);
+            for (var i = 1; i < pokeStops.Length; i++)
+            {
+                nn = FindNn(optimizedRoute.Skip(i), nn.Latitude, nn.Longitude);
+                optimizedRoute.Remove(nn);
+                optimizedRoute.Insert(i, nn);
+            }
+
+
+            // 2-Opt
+            bool isOptimized;
+            do
+            {
+                optimizedRoute = Optimize2Opt(optimizedRoute, out isOptimized);
+            } while (isOptimized);
+            OnRouteOptimizeEvent(optimizedRoute);
+
+            return optimizedRoute;
+        }
+
+        private static List<FortData> Optimize2Opt(List<FortData> pokeStops, out bool isOptimized)
+        {
+            var n = pokeStops.Count;
+            float bestGain = 0;
+            var bestI = -1;
+            var bestJ = -1;
+
+            for (var ai = 0; ai < n; ai++)
+            {
+                for (var ci = 0; ci < n; ci++)
+                {
+                    var bi = (ai + 1)%n;
+                    var di = (ci + 1)%n;
+
+                    var a = pokeStops[ai];
+                    var b = pokeStops[bi];
+                    var c = pokeStops[ci];
+                    var d = pokeStops[di];
+
+                    var ab = GetDistance(a, b);
+                    var cd = GetDistance(c, d);
+                    var ac = GetDistance(a, c);
+                    var bd = GetDistance(b, d);
+
+                    if (ci != ai && ci != bi)
+                    {
+                        var gain = ab + cd - (ac + bd);
+                        if (gain > bestGain)
+                        {
+                            bestGain = gain;
+                            bestI = bi;
+                            bestJ = ci;
+                        }
+                    }
+                }
+            }
+
+            if (bestI != -1)
+            {
+                List<FortData> optimizedRoute;
+                if (bestI > bestJ)
+                {
+                    optimizedRoute = new List<FortData> {pokeStops[0]};
+                    optimizedRoute.AddRange(pokeStops.Skip(bestI));
+                    optimizedRoute.Reverse(1, n - bestI);
+                    optimizedRoute.AddRange(pokeStops.GetRange(bestJ + 1, bestI - bestJ - 1));
+                    optimizedRoute.AddRange(pokeStops.GetRange(1, bestJ));
+                    optimizedRoute.Reverse(n - bestJ, bestJ);
+                }
+                else if (bestI == 0)
+                {
+                    optimizedRoute = new List<FortData>(pokeStops);
+                    optimizedRoute.Reverse(bestJ + 1, n - bestJ - 1);
+                }
+                else
+                {
+                    optimizedRoute = new List<FortData>(pokeStops);
+                    optimizedRoute.Reverse(bestI, bestJ - bestI + 1);
+                }
+
+                isOptimized = true;
+                return optimizedRoute;
+            }
+            isOptimized = false;
+            return pokeStops;
+        }
+
+        private static FortData FindNn(IEnumerable<FortData> pokeStops, double cLatitude, double cLongitude)
+        {
+            return pokeStops.OrderBy(p => GetDistance(cLatitude, cLongitude, p.Latitude, p.Longitude)).First();
+        }
+
+        private static float GetDistance(FortData a, FortData b)
+        {
+            return GetDistance(a.Latitude, a.Longitude, b.Latitude, b.Longitude);
+        }
+
+        private static float GetDistance(double lat1, double lng1, double lat2, double lng2)
+        {
+            const double R = 6371e3;
+            Func<double, float> toRad = x => (float) (x*(Math.PI/180));
+            lat1 = toRad(lat1);
+            lat2 = toRad(lat2);
+            var dLng = toRad(lng2 - lng1);
+
+            return (float) (Math.Acos(Math.Sin(lat1)*Math.Sin(lat2) + Math.Cos(lat1)*Math.Cos(lat2)*Math.Cos(dLng))*R);
+        }
+
+        private static void OnRouteOptimizeEvent(List<FortData> optimizedroute)
+        {
+            RouteOptimizeEvent?.Invoke(optimizedroute);
+        }
+
+        public static event RouteOptimizeDelegate RouteOptimizeEvent;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/Statistics.cs b/PokemonGo.RocketBot.Logic/Utils/Statistics.cs
new file mode 100644
index 0000000..0280046
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/Statistics.cs
@@ -0,0 +1,164 @@
+#region using directives
+
+#region using directives
+
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+// ReSharper disable CyclomaticComplexity
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public delegate void StatisticsDirtyDelegate();
+
+    public class Statistics
+    {
+        private readonly DateTime _initSessionDateTime = DateTime.Now;
+
+        private StatsExport _exportStats;
+        private string _playerName;
+        public int LevelForRewards = -1;
+        public int TotalExperience;
+        public int TotalItemsRemoved;
+        public int TotalPokemons;
+        public int TotalPokemonTransferred;
+        public int TotalStardust;
+
+        public void Dirty(Inventory inventory)
+        {
+            _exportStats = GetCurrentInfo(inventory);
+            DirtyEvent?.Invoke();
+        }
+
+        public event StatisticsDirtyDelegate DirtyEvent;
+
+        private string FormatRuntime()
+        {
+            return (DateTime.Now - _initSessionDateTime).ToString(@"dd\.hh\:mm\:ss");
+        }
+
+        public StatsExport GetCurrentInfo(Inventory inventory)
+        {
+            var stats = inventory.GetPlayerStats().Result;
+            StatsExport output = null;
+            var stat = stats.FirstOrDefault();
+            if (stat != null)
+            {
+                var ep = stat.NextLevelXp - stat.PrevLevelXp - (stat.Experience - stat.PrevLevelXp);
+                var time = Math.Round(ep/(TotalExperience/GetRuntime()), 2);
+                var hours = 0.00;
+                var minutes = 0.00;
+                if (double.IsInfinity(time) == false && time > 0)
+                {
+                    hours = Math.Truncate(TimeSpan.FromHours(time).TotalHours);
+                    minutes = TimeSpan.FromHours(time).Minutes;
+                }
+
+                if (LevelForRewards == -1 || stat.Level >= LevelForRewards)
+                {
+                    var Result = Execute(inventory).Result;
+
+                    if (Result.ToString().ToLower().Contains("awarded_already"))
+                        LevelForRewards = stat.Level + 1;
+
+                    if (Result.ToString().ToLower().Contains("success"))
+                    {
+                        Logger.Write("Leveled up: " + stat.Level, LogLevel.Info);
+
+                        var items = Result.ItemsAwarded;
+
+                        if (items.Any())
+                        {
+                            Logger.Write("- Received Items -", LogLevel.Info);
+                            foreach (var item in items)
+                            {
+                                Logger.Write($"[ITEM] {item.ItemId} x {item.ItemCount} ", LogLevel.Info);
+                            }
+                        }
+                    }
+                }
+                var Result2 = Execute(inventory).Result;
+                LevelForRewards = stat.Level;
+                if (Result2.ToString().ToLower().Contains("success"))
+                {
+                    var tokens = Result2.Result.ToString().Split(new[] {"itemId"}, StringSplitOptions.None);
+                    Logger.Write("Items Awarded:" + Result2.ItemsAwarded);
+                }
+                output = new StatsExport
+                {
+                    Level = stat.Level,
+                    HoursUntilLvl = hours,
+                    MinutesUntilLevel = minutes,
+                    CurrentXp = stat.Experience - stat.PrevLevelXp - GetXpDiff(stat.Level),
+                    LevelupXp = stat.NextLevelXp - stat.PrevLevelXp - GetXpDiff(stat.Level)
+                };
+            }
+            return output;
+        }
+
+        public async Task<LevelUpRewardsResponse> Execute(ISession ctx)
+        {
+            var Result = await ctx.Inventory.GetLevelUpRewards(LevelForRewards);
+            return Result;
+        }
+
+        public async Task<LevelUpRewardsResponse> Execute(Inventory inventory)
+        {
+            var Result = await inventory.GetLevelUpRewards(inventory);
+            return Result;
+        }
+
+        public double GetRuntime()
+        {
+            return (DateTime.Now - _initSessionDateTime).TotalSeconds/3600;
+        }
+
+        public string GetTemplatedStats(string template, string xpTemplate)
+        {
+            var xpStats = string.Format(xpTemplate, _exportStats.Level, _exportStats.HoursUntilLvl,
+                _exportStats.MinutesUntilLevel, _exportStats.CurrentXp, _exportStats.LevelupXp);
+
+            return string.Format(template, _playerName, FormatRuntime(), xpStats, TotalExperience/GetRuntime(),
+                TotalPokemons/GetRuntime(),
+                TotalStardust, TotalPokemonTransferred, TotalItemsRemoved);
+        }
+
+        public static int GetXpDiff(int level)
+        {
+            if (level > 0 && level <= 40)
+            {
+                int[] xpTable =
+                {
+                    0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000,
+                    10000, 10000, 10000, 10000, 15000, 20000, 20000, 20000, 25000, 25000,
+                    50000, 75000, 100000, 125000, 150000, 190000, 200000, 250000, 300000, 350000,
+                    500000, 500000, 750000, 1000000, 1250000, 1500000, 2000000, 2500000, 3000000, 5000000
+                };
+                return xpTable[level - 1];
+            }
+            return 0;
+        }
+
+        public void SetUsername(GetPlayerResponse profile)
+        {
+            _playerName = profile.PlayerData.Username ?? "";
+        }
+    }
+
+    public class StatsExport
+    {
+        public long CurrentXp;
+        public double HoursUntilLvl;
+        public int Level;
+        public long LevelupXp;
+        public double MinutesUntilLevel;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/StringUtils.cs b/PokemonGo.RocketBot.Logic/Utils/StringUtils.cs
new file mode 100644
index 0000000..94c3804
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/StringUtils.cs
@@ -0,0 +1,54 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using POGOProtos.Inventory.Item;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class StringUtils
+    {
+        private static readonly Func<bool, bool, bool> AndFunc = (x, y) => x && y;
+        private static readonly Func<bool, bool, bool> OrFunc = (x, y) => x || y;
+
+        private static readonly Func<string, Func<bool, bool, bool>> GetBoolOperator =
+            myOperator => myOperator.ToLower().Equals("and") ? AndFunc : OrFunc;
+
+        public static string GetSummedFriendlyNameOfItemAwardList(IEnumerable<ItemAward> items)
+        {
+            var enumerable = items as IList<ItemAward> ?? items.ToList();
+
+            if (!enumerable.Any())
+                return string.Empty;
+
+            return
+                enumerable.GroupBy(i => i.ItemId)
+                    .Select(kvp => new {ItemName = kvp.Key.ToString(), Amount = kvp.Sum(x => x.ItemCount)})
+                    .Select(y => $"{y.Amount} x {y.ItemName}")
+                    .Aggregate((a, b) => $"{a}, {b}");
+        }
+
+        public static bool BoolFunc(this bool expr, bool expr2, string operatorStr)
+        {
+            return GetBoolOperator(operatorStr)(expr, expr2);
+        }
+
+        public static bool BoolFunc(this string operatorStr, params bool[] expr)
+        {
+            return operatorStr.ToLower().Equals("and") ? expr.All(b => b) : expr.Any(b => b);
+        }
+
+        public static bool ReverseBoolFunc(this string operatorStr, params bool[] expr)
+        {
+            return operatorStr.ToLower().Equals("and") ? expr.Any(b => b) : expr.All(b => b);
+        }
+
+        public static bool InverseBool(this string operatorStr, bool expr)
+        {
+            return operatorStr.ToLower().Equals("and") ? !expr : expr;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/WebClientExtensions.cs b/PokemonGo.RocketBot.Logic/Utils/WebClientExtensions.cs
new file mode 100644
index 0000000..6de0e46
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/WebClientExtensions.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class WebClientExtensions
+    {
+        public static string DownloadString(this WebClient webClient, Uri uri)
+        {
+            webClient.Headers[HttpRequestHeader.UserAgent] =
+                "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
+            webClient.Encoding = Encoding.UTF8;
+            byte[] rawData = null;
+            string error;
+            try
+            {
+                error = "loading";
+                rawData = webClient.DownloadData(uri);
+            }
+            catch (NullReferenceException)
+            {
+                error = null;
+            }
+            catch (ArgumentNullException)
+            {
+                error = null;
+            }
+            catch (WebException)
+            {
+                error = null;
+            }
+            catch (SocketException)
+            {
+                error = null;
+            }
+
+            if (error == null || rawData == null)
+                return null;
+
+            var encoding = WebUtils.GetEncodingFrom(webClient.ResponseHeaders, Encoding.UTF8);
+            return encoding.GetString(rawData);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/WebUtils.cs b/PokemonGo.RocketBot.Logic/Utils/WebUtils.cs
new file mode 100644
index 0000000..7c93bd8
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/WebUtils.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Specialized;
+using System.Linq;
+using System.Text;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    public static class WebUtils
+    {
+        public static Encoding GetEncodingFrom(
+            NameValueCollection responseHeaders,
+            Encoding defaultEncoding = null)
+        {
+            if (responseHeaders == null)
+                throw new ArgumentNullException("responseHeaders");
+
+            //Note that key lookup is case-insensitive
+            var contentType = responseHeaders["Content-Type"];
+            if (contentType == null)
+                return defaultEncoding;
+
+            var contentTypeParts = contentType.Split(';');
+            if (contentTypeParts.Length <= 1)
+                return defaultEncoding;
+
+            var charsetPart =
+                contentTypeParts.Skip(1).FirstOrDefault(
+                    p => p.TrimStart().StartsWith("charset", StringComparison.InvariantCultureIgnoreCase));
+            if (charsetPart == null)
+                return defaultEncoding;
+
+            var charsetPartParts = charsetPart.Split('=');
+            if (charsetPartParts.Length != 2)
+                return defaultEncoding;
+
+            var charsetName = charsetPartParts[1].Trim();
+            if (charsetName == "")
+                return defaultEncoding;
+
+            try
+            {
+                return Encoding.GetEncoding(charsetName);
+            }
+            catch (ArgumentException)
+            {
+                /*
+                throw new UnknownEncodingException(
+                    charsetName,
+                    "The server returned data in an unknown encoding: " + charsetName,
+                    ex);
+                    */
+                return null;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/Utils/dijkstras.cs b/PokemonGo.RocketBot.Logic/Utils/dijkstras.cs
new file mode 100644
index 0000000..d0f16b0
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/Utils/dijkstras.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+
+namespace PokemonGo.RocketBot.Logic.Utils
+{
+    internal class Graph
+    {
+        private readonly Dictionary<char, Dictionary<char, int>> vertices =
+            new Dictionary<char, Dictionary<char, int>>();
+
+        public void add_vertex(char name, Dictionary<char, int> edges)
+        {
+            vertices[name] = edges;
+        }
+
+        public List<char> shortest_path(char start, char finish)
+        {
+            var previous = new Dictionary<char, char>();
+            var distances = new Dictionary<char, int>();
+            var nodes = new List<char>();
+
+            List<char> path = null;
+
+            foreach (var vertex in vertices)
+            {
+                if (vertex.Key == start)
+                {
+                    distances[vertex.Key] = 0;
+                }
+                else
+                {
+                    distances[vertex.Key] = int.MaxValue;
+                }
+
+                nodes.Add(vertex.Key);
+            }
+
+            while (nodes.Count != 0)
+            {
+                nodes.Sort((x, y) => distances[x] - distances[y]);
+
+                var smallest = nodes[0];
+                nodes.Remove(smallest);
+
+                if (smallest == finish)
+                {
+                    path = new List<char>();
+                    while (previous.ContainsKey(smallest))
+                    {
+                        path.Add(smallest);
+                        smallest = previous[smallest];
+                    }
+
+                    break;
+                }
+
+                if (distances[smallest] == int.MaxValue)
+                {
+                    break;
+                }
+
+                foreach (var neighbor in vertices[smallest])
+                {
+                    var alt = distances[smallest] + neighbor.Value;
+                    if (alt < distances[neighbor.Key])
+                    {
+                        distances[neighbor.Key] = alt;
+                        previous[neighbor.Key] = smallest;
+                    }
+                }
+            }
+
+            return path;
+        }
+    }
+
+    internal class MainClass
+    {
+        public static void Main(string[] args)
+        {
+            var g = new Graph();
+            g.add_vertex('A', new Dictionary<char, int> {{'B', 7}, {'C', 8}});
+            g.add_vertex('B', new Dictionary<char, int> {{'A', 7}, {'F', 2}});
+            g.add_vertex('C', new Dictionary<char, int> {{'A', 8}, {'F', 6}, {'G', 4}});
+            g.add_vertex('D', new Dictionary<char, int> {{'F', 8}});
+            g.add_vertex('E', new Dictionary<char, int> {{'H', 1}});
+            g.add_vertex('F', new Dictionary<char, int> {{'B', 2}, {'C', 6}, {'D', 8}, {'G', 9}, {'H', 3}});
+            g.add_vertex('G', new Dictionary<char, int> {{'C', 4}, {'F', 9}});
+            g.add_vertex('H', new Dictionary<char, int> {{'E', 1}, {'F', 3}});
+
+            g.shortest_path('A', 'H').ForEach(x => Console.WriteLine(x));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/app.config b/PokemonGo.RocketBot.Logic/app.config
similarity index 53%
rename from PokemonGo/RocketAPI/app.config
rename to PokemonGo.RocketBot.Logic/app.config
index 8460dd4..83b016d 100644
--- a/PokemonGo/RocketAPI/app.config
+++ b/PokemonGo.RocketBot.Logic/app.config
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+
 <configuration>
   <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
@@ -6,6 +7,13 @@
         <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
         <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
       </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="C5" publicKeyToken="282361b99ded7e8e" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.4.5947.17248" newVersion="2.4.5947.17248" />
+      </dependentAssembly>
     </assemblyBinding>
   </runtime>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
+  </startup>
 </configuration>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Logic/packages.config b/PokemonGo.RocketBot.Logic/packages.config
new file mode 100644
index 0000000..d7ed144
--- /dev/null
+++ b/PokemonGo.RocketBot.Logic/packages.config
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<packages>
+  <package id="C5" version="2.4.5947.17249" targetFramework="net452" />
+  <package id="CloudFlareUtilities" version="0.2.1-alpha" targetFramework="net452" />
+  <package id="EngineIoClientDotNet" version="0.9.22" targetFramework="net452" />
+  <package id="GeoCoordinate" version="1.1.0" targetFramework="net45" />
+  <package id="GMap.NET.WindowsForms" version="1.7.1" targetFramework="net452" />
+  <package id="Google.Protobuf" version="3.0.0" targetFramework="net452" />
+  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
+  <package id="Microsoft.NETCore.Platforms" version="1.0.1" targetFramework="net452" />
+  <package id="NETStandard.Library" version="1.6.0" targetFramework="net452" />
+  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
+  <package id="S2Geometry" version="1.0.3" targetFramework="net452" />
+  <package id="SocketIoClientDotNet" version="0.9.13" targetFramework="net452" />
+  <package id="System.Collections" version="4.0.11" targetFramework="net452" />
+  <package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net452" />
+  <package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net452" />
+  <package id="System.Diagnostics.Tools" version="4.0.1" targetFramework="net452" />
+  <package id="System.Diagnostics.Tracing" version="4.1.0" targetFramework="net452" />
+  <package id="System.Globalization" version="4.0.11" targetFramework="net452" />
+  <package id="System.IO" version="4.1.0" targetFramework="net452" />
+  <package id="System.IO.Compression" version="4.1.0" targetFramework="net452" />
+  <package id="System.Linq" version="4.1.0" targetFramework="net452" />
+  <package id="System.Linq.Expressions" version="4.1.0" targetFramework="net452" />
+  <package id="System.Net.Http" version="4.1.0" targetFramework="net452" />
+  <package id="System.Net.Primitives" version="4.0.11" targetFramework="net452" />
+  <package id="System.ObjectModel" version="4.0.12" targetFramework="net452" />
+  <package id="System.Reflection" version="4.1.0" targetFramework="net452" />
+  <package id="System.Reflection.Extensions" version="4.0.1" targetFramework="net452" />
+  <package id="System.Reflection.Primitives" version="4.0.1" targetFramework="net452" />
+  <package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="net452" />
+  <package id="System.Runtime" version="4.1.0" targetFramework="net452" />
+  <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net452" />
+  <package id="System.Runtime.InteropServices" version="4.1.0" targetFramework="net452" />
+  <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net452" />
+  <package id="System.Runtime.Numerics" version="4.0.1" targetFramework="net452" />
+  <package id="System.Text.Encoding" version="4.0.11" targetFramework="net452" />
+  <package id="System.Text.Encoding.Extensions" version="4.0.11" targetFramework="net452" />
+  <package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net452" />
+  <package id="System.Threading" version="4.0.11" targetFramework="net452" />
+  <package id="System.Threading.Tasks" version="4.0.11" targetFramework="net452" />
+  <package id="System.Threading.Timer" version="4.0.1" targetFramework="net452" />
+  <package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net452" />
+  <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net452" />
+  <package id="Telegram.Bot" version="10.3.1" targetFramework="net452" />
+  <package id="WebSocket4Net" version="0.14.1" targetFramework="net452" />
+</packages>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/App.config b/PokemonGo.RocketBot.Window/App.config
new file mode 100644
index 0000000..d1e0a4c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/App.config
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<configuration>
+  <configSections>
+    <sectionGroup name="userSettings"
+                  type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+      <section name="PokemonGo.RocketBot.Window.UserSettings"
+               type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+               allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+      <section name="PokemonGo.RocketBot.Window.Settings"
+               type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+               allowExeDefinition="MachineToLocalUser" requirePermission="false" />
+    </sectionGroup>
+  </configSections>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
+  </startup>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="C5" publicKeyToken="282361b99ded7e8e" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-2.4.5947.17248" newVersion="2.4.5947.17248" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-1.2.15.0" newVersion="1.2.15.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+  <connectionStrings>
+    <add name="Pogo"
+         connectionString="DatasetId = YOUR_DATASET_ID; CertificateFilePath = C:\Path\To\Your\Certificate\File-privatekey.p12; ServiceAccountId = your-service-account-email@developer.gserviceaccount.com; CertificatePassword = notasecret" />
+  </connectionStrings>
+</configuration>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.ca.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.ca.json
new file mode 100644
index 0000000..72bd074
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.ca.json
@@ -0,0 +1,1170 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Poké Ball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Super Ball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Ultra Ball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Master Ball"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "AuthType desconegut dins de config.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Les credencials d'usuari són invàlides i el login ha fallat."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Ets fora del radi definit! Caminant cap a la posició inicial (a {0}m) en 5 segons. És correcte el teu arxiu Coords.ini?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "No s'han trobat pokeparades disponibles dins la teva àrea. Has configurat una distància màxima massa petita?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nom: {0} XP: {1}, Gemmes: {2}, Objectes: {3}, Lat: {4}, Long: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "El desplaçament ha fallat, possible SoftBan. Eliminant SoftBan en: {0}/{1} intents"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Viatjant cap a la Pokeparada: {0} ({1}m)({2}segons)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Jugant com a {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "S'ha fet servir encens, en queden: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "S'ha fet servir un Ou de la Sort, en queden: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} satisfactòriament, obtens {1}px"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Fallit {0}. El resultat ha estat {1}, parant d'evolucionar {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- PC: {1}  IV: {2}%   [Millor PC: {3}  IV: {4}%] (Caramels: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Nvll: {3} PC: ({4}/{5}) IV: {6}% | Probabilitat: {7}% | Dist {8}m | amb una {9} (en queden {10}). | {11} punts d'EXP obtinguts | lat: {12} long: {13}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Nvll: {3} PC: ({4}/{5}) IV: {6}% | Probabilitat: {7}% | Dist {8}m | amb una {9} (en queden {10}). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Sense Pokéballs! - Hem perdut un {0} amb {1} PC :("
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Esperant a evolucionar {0} Pokemon un cope se n'hagin capturat {1} més! ({2}/{3} per {4}% inventari)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "Mai es farà servir cap Ou de la Sort quan UseLuckyEggsMinPokemonAmount estigui definit com a {0}, en comptes, fes servir <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Captura {0} Pokemon més per fer servir un Ou de la Sort!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Se n'han fet servir {0} | En queden {1}"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Baia"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Intent #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Caramels: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Error: Dades de l'arxiu GPX no controlades, intentant ometre."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfecte"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "nom"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Desconegut"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Pokemon amb més PC"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Pokemon amb més Perfecció(IV més alt)"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Pokemon amb més Nivell"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Asegura't que la Latitud i la Longitud són correctes. Surt del programa si no és així! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Afegint ou a la incubadora: {0:0.00}km restants"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Actualitzant l'estat de la incubadora: {0:0.00}km restants"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "L'ou de la incubadora ha eclosionat: {0} | Nvll: {1} PC: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERROR"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATENCIÓ"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKEPARADA"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNIPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECICLANT"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFERIT"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUCIONAT"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BAIA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "OU"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ACTUALITZAR"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Connectat fent servir {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "Els servidors de PTC probablement han caigut o les teves dades d'accés són incorrectes. Prova amb Google."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Intentar de nou en {0} segons..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Compte no verificat! Sortint..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Obrint la pàgina de Google Device. Si us plau, enganxa el codi fent servir CTRL+V."
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "No s'ha pogut copiar al portpapers, si us plau, fes-ho manualment."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Anar: {0} & introduïr {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Detectat viatge realista, utilitzant UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Viatge no realista en {0}, utilitzant l'últim Coords.ini memoritzat"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Les coordenades de \"Coords.ini\" no són correctes, utilizant les coordenades predeterminades"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Perfecte! Ja tens la versió més recent del programa {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "L'AutoUpdater està desactivat. Obtén l'última versió a: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Descarregant i aplicant l'actualització..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Acabada la descàrrega de l'última actualització..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Acabat el desempaquetament dels arxius..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "S'ha acabat de transferir la teva configuració a la nova versió..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Actualització acabada, ja pots tancar aquesta finestra."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Buscant Pokemon atrets per l'encens..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Buscant Pokemon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Buscant Pokemon atrets per esquers..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Omès {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "No tens pokeballs en el teu inventari, no es poden capturar més Pokemon."
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Actualment tens: | Pokeballs: {0} | Greatballs: {1} | Ultraballs: {2} | Masterballs: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Pocions: {0} | SuperPocions: {1} | HiperPocions: {2} | MaxPocions: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Reviures: {0} | MaxReviures: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Baies: {0} | Encens: {1} | Ous de la sort: {2} | Esquers: {3}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "L'inventari de pokemon està ple. Transferir pokemons..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "L'inventari de pokemon està ple. Si us plau, transfereix els pokemons manualment o activa l'opció TransferDuplicatePokemon dins l'arxiu de Configuració posant-la com a (True)..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "L'inventari està ple, no s'ha pogut lootejar res :("
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "S'ha trobat un nou problema: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "S'ha trobat un problema: Esquer pokemon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "La destinació desitjada {0}, {1} està massa lluny de la teva posició actual {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokemon {0} ({1}) reanomenat de {2} a {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% perfect {1} (CP {2}) *favorited*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filtre de Pokemons Ignorats] - Ignorant {0} tal i com s'ha definit en la configuració actual."
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Intent de Captura"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Error de Captura"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Captura Fallida"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Fugida"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Captures Perdudes"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Captura Exitosa"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Esquer"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Encens"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "No s'ha pogut iniciar WebSocketServer en el port: {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Actiu {1} - Nivell: {2} | EXP/H: {3:n0} | P/H: {4:n0} | P.Estel·lar: {5:n0} | Transferit: {6:n0} | Reciclat: {7:n0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (proper nivell en {1}h {2}m | {3:n0}/{4:n0} PX)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "El programa continuarà després de premer una tecla..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Com tens habilitada l'autenticació en 2 passos de Google, hauràs d'inserir una contrasenya específica de l'APP dins de l'arxiu auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Obrint Google App-Passwords. Si us plau, crea una nova contrasenya en l'APP (utilitzar en un altre dispositiu)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Assegura't d'haver introduit el correu electrònic i contrasenya correctes."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "És necessari omplir els camps GoogleUsername i GooglePassword a l'arxiu auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "És necessari omplir els camps PtcUsername i PtcPassword a l'arxiu auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "Escanejant {0} en busca de Pokemons per snipejar..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Snipejant a {0} amb {1} IV a {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "No s'han trobat Pokemons per snipejar :("
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "No hi ha suficients Pokeballs per a iniciar l'Sniping! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMOVE1Header",
+      "Value": "MOVIMENT1"
+    },
+    {
+      "Key": "displayHighestMOVE2Header",
+      "Value": "MOVIMENT2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Caramels"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value":
+        "Connexió refusada. És possible que la teva IP hagi estat posada a la llista negra per part de Niantic. Sortint..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "No hi ha ous disponibles"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "L'Ou de la Sort ja està actiu"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "S'ha fet servir un Ou de la Sort"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Ous de la Sort a l'inventari: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "No hi ha encens disponible"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "L'encens ja està actiu"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Encens a l'inventari: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "S'ha fet servir un encens"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Quantitat de Pokemon vists: {0}/151, Quantitat de Pokemon capturats: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Evolucions] Evolucions Potencials: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Millora de Pokemon fallida. No hi ha recursos suficients."
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "El servidor d'sniping està fora de línia. Saltant..."
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranFemella"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranMascle"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.cs.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.cs.json
new file mode 100644
index 0000000..2a467a0
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.cs.json
@@ -0,0 +1,1108 @@
+*{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Pokeball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Superball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Ultraball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Masterball"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Neznámá hodnota AuthType v config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Jste mimo definovaný okruh! Chůze na start ({0}m daleko). Jsou zadané souřadnice v config.json správné?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Nenalezeny žádné použitelné Pokestopy ve vašem okolí. Zkontrolujte nastavení MaxTravelDistanceInMeters"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Název: {0} Zk: {1}, Gems: {2}, Předmětů: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Název: {0} INFO: Vybrání pokestopu selhalo, možná máte Softban. Odbanování skončí: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Chůze k Pokestopu: {0} ({1}m) ({2} sekund)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Hrající jako {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Použit předmět LuckyEgg, zbývá: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} úspěšně za {1} zkušeností"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Selhalo {0}. Kvůli {1}, konec vývinu {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Nejlepší CP: {3}  IV: {4}%] (Bonbónů: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Žádné pokebally - Ztratili jsme {0} s CP {1}"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Použito {0} | {1} zbývá"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Malina"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Bonbóny: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Neočekávaná data v souboru GPX, přeskakuji."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "Perfektní"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Jméno"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Neznámý"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Nejvyšší CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Nejvyšší IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Nejvyšší úroveň"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Ujistěte se, že zadané souřadnice jsou správné. Vypněte program, pokud nejsou! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Vložení vajíčka do inkubátoru: {0:0.00}km zbývá"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Stav inkubátoru aktualizován: {0:0.00}km zbývá"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Inkubované vajíčko vylíhnuto: {0} | Úroveň: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "CHYBA"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "POZOR"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "ZAHOZENÍ"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "PŘENOS"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "VÝVIN"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "MALINA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "VAJÍČKO"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "AKTUALIZACE"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Přihlašovaní pomocí {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC servery jsou pravděpodobně nedostupné NEBO vaše přihlašovací údaje jsou špatné. Zkuste google"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Opětovný pokus za {0} sekund..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Účet neověřen! Vypínám..."
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Detekováno realistické cestování, použito defaultní nastavení v config.json"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Nerealistické cestování na {0}, použity poslední souřadnice ze souboru LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Souřadnice v souboru \"LastPos.ini\" jsou nesprávné, použití defaultních souřadnic"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Skvělé! Již používáte nejnovější verzi {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "AutoUpdater je deaktivován. Aktualizujte na poslední verzi: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Stahování a konfigurace aktualizace..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Stahování nejnovější aktualizace dokončeno..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Rozbalování souborů dokončeno..."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "Dokončený přenos konfigurace..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Aktualizace dokončena!"
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Hledání pobouřeného pokemona..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Hledání pokemona..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Hledání nalákaného pokemona..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Přeskočen {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Nemáte žádný další Pokeball ve vašem batohu!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokebally: {0} | Superbally: {1} | Ultrabally: {2} | Masterbally: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Lektvar: {0} | Super-Lektvar: {1} | Hyper-Lektvar: {2} | Max-Lektvar: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Oživení: {0} | Plné Oživení: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Maliny: {0} | Kadidlo: {1} | Šťastné vejce: {2} | Návnada: {3}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Batoh s pokemony je plný! Přenos pokemonů..."
+    },
+    {
+      "Key": "InvFullPokestopLooting",
+      "Value": "Batoh je plný, žádné předměty nebyly sebrány."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Batoh s pokémony je plný! Prosím přeneste pokémona ručně nebo nastavte TransferDuplicatePokemon na true v nastavení..."
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Zjištěn problém: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Zjištěn problém: Navnaděný Pokemon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Vaše pozice {0}, {1} je příliš vzdálená od vaší stávající pozice {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) přejmenován {2} na {3}."
+    },
+    {
+      "Key": "PokemonFavorite",
+      "Value": "{0}% skvělý {1} (CP {2}) *Oblíbený*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokémon ignorace] - Ignoruji {0} jak je nastaveno v config.json!"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} pokus #{1}"
+    },
+    {
+      "Key": "CatchStatusError",
+      "Value": "Chyba při chycení"
+    },
+    {
+      "Key": "CatchStatusEscape",
+      "Value": "Unikl"
+    },
+    {
+      "Key": "CatchStatusFlee",
+      "Value": "Uprchnul"
+    },
+    {
+      "Key": "CatchStatusMissed",
+      "Value": "Netrefen"
+    },
+    {
+      "Key": "CatchStatusSuccess",
+      "Value": "Chycen"
+    },
+    {
+      "Key": "CatchTypeNormal",
+      "Value": "Divoký"
+    },
+    {
+      "Key": "CatchTypeLure",
+      "Value": "Nalákaný"
+    },
+    {
+      "Key": "CatchTypeIncense",
+      "Value": "Kadidlo"
+    },
+    {
+      "Key": "WebSocketFailStart",
+      "Value": "Chyba startu websocketu na portu: {0}"
+    },
+    {
+      "Key": "StatsTemplateString",
+      "Value":
+        "{0} - Doba spuštění {1} - Úroveň: {2} | Zk/H: {3:n0} | P/H: {4:n0} | Hvězdný prach: {5:n0} | Přeneseno: {6:n0} | Vyhozeno: {7:n0}"
+    },
+    {
+      "Key": "StatsXpTemplateString",
+      "Value": "{0} (Další úroveň za {1}h {2}m | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "RequireInputText",
+      "Value": "Program bude pokračovat po stlačení jakékoliv klávesy..."
+    },
+    {
+      "Key": "GoogleTwoFactorAuth",
+      "Value":
+        "U vašeho Google účtu máte nastaveno dvoufázové ověření (2FA), musíte vložit speciální heslo do auth.json"
+    },
+    {
+      "Key": "GoogleTwoFactorAuthExplanation",
+      "Value": "Otevírám Google App heslo. Prosím vytvořte si nové App heslo (použijte Ostatní jako Zařízení)"
+    },
+    {
+      "Key": "GoogleError",
+      "Value": "E-mail nebo heslo je nesprávné."
+    },
+    {
+      "Key": "GoogleOffline",
+      "Value": "Google servery pravděpodobně nefungují, prosím buďte trpělivý a spusťte program později."
+    },
+    {
+      "Key": "MissingCredentialsGoogle",
+      "Value": "Musíte vyplnit GoogleUsername a GooglePassword v auth.json!"
+    },
+    {
+      "Key": "MissingCredentialsPtc",
+      "Value": "Musíte vyplnit PtcUsername a PtcPassword v auth.json!"
+    },
+    {
+      "Key": "SnipeScan",
+      "Value": "Skenuji sestřelitelné pokemony na {0}..."
+    },
+    {
+      "Key": "SnipeScanEx",
+      "Value": "Sestřeluji {0} s {1} IV na {2}..."
+    },
+    {
+      "Key": "NoPokemonToSnipe",
+      "Value": "Žádný pokémon k sestřelení nenalezen"
+    },
+    {
+      "Key": "NotEnoughPokeballsToSnipe",
+      "Value": "Nedostatek pokeballů k sestřelení! ({0}/{1})"
+    },
+    {
+      "Key": "DisplayHighestMove1Header",
+      "Value": "ÚTOK1"
+    },
+    {
+      "Key": "DisplayHighestMove2Header",
+      "Value": "ÚTOK2"
+    },
+    {
+      "Key": "DisplayHighestCandy",
+      "Value": "Bonbón"
+    },
+    {
+      "Key": "IPBannedError",
+      "Value": "Spojení zamítnuto. Vaše IP adresa je zřejmě na černé listině společnosti Niantic. Vypínání..."
+    },
+    {
+      "Key": "NoEggsAvailable",
+      "Value": "Žádná další vajíčka"
+    },
+    {
+      "Key": "UseLuckyEggActive",
+      "Value": "Šťastné vejce je aktivní"
+    },
+    {
+      "Key": "UsedLuckyEgg",
+      "Value": "Použito Šťastné vejce"
+    },
+    {
+      "Key": "UseLuckyEggAmount",
+      "Value": "Šťastných vajec v batohu: {0}"
+    },
+    {
+      "Key": "NoIncenseAvailable",
+      "Value": "Kadidlo není dostupné"
+    },
+    {
+      "Key": "UseIncenseActive",
+      "Value": "Kadidlo je aktivní"
+    },
+    {
+      "Key": "UseIncenseAmount",
+      "Value": "Kadidel v batohu: {0}"
+    },
+    {
+      "Key": "UsedIncense",
+      "Value": "Kadidlo použito"
+    },
+    {
+      "Key": "AmountPkmSeenCaught",
+      "Value": "Počet spatřených pokemonů: {0}/151, Počet chycených pokemonů: {1}/151"
+    },
+    {
+      "Key": "PkmPotentialEvolveCount",
+      "Value": "Potenciálních evolucí: {0}"
+    },
+    {
+      "Key": "PkmNotEnoughRessources",
+      "Value": "Posilnění pokemona se nezdařilo, nedostatek surovin."
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Čekání na vývin {0} pokemů najednou, zbývá {1} chytit! ({2}/{3} pro {4}% batohu)"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "Nidoran - samice"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "Nidoran - samec"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "MrMime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ]
+  }
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.da.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.da.json
new file mode 100644
index 0000000..0f3fd09
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.da.json
@@ -0,0 +1,1737 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Pokéball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Greatball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Ultraball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Masterball"
+    },
+    {
+      "Key": "CatchStatusSuccess",
+      "Value": "Fanget"
+    },
+    {
+      "Key": "CatchStatusError",
+      "Value": "Fejl"
+    },
+    {
+      "Key": "CatchStatusEscape",
+      "Value": "Undsluppet"
+    },
+    {
+      "Key": "CatchStatusFlee",
+      "Value": "Flygtet"
+    },
+    {
+      "Key": "CatchStatusMissed",
+      "Value": "Missed"
+    },
+    {
+      "Key": "CatchTypeIncense",
+      "Value": "Røgmodul"
+    },
+    {
+      "Key": "CatchTypeLure",
+      "Value": "Luremodul"
+    },
+    {
+      "Key": "CatchTypeNormal",
+      "Value": "Wild"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Ukendt autentificering sat i config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Du er ikke inden for den angivne radius, går tilbage til begyndelsen ({0}m væk). Er koordinaterne i config.json korrekte?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Ingen brugbare PokéStops fundet i dit område, er den maksimale afstand for lav?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Navn: {0} XP: {1}, Gems: {2}, Genstande: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Navn: {0} INFO: Det lykkedes ikke at samle, måske softban? Unban om: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} om ({1}m) ({2}sekunder)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Spiller som {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Incense brugt. Tilbage: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Lucky Egg brugt. Tilbage : {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} succesful udviklet, for at få {1}XP!"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Fejl {0}. Resultat: {1}, stopper udviklingen af {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- XP: {1}  IV: {2}%   [Bedste CP: {3}  IV: {4}%] (Candies: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Ikke flere PokéBalls! - Vi mistede {0} med {1} CP!"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Venter på at udvikle {0} Pokémon til at {1} mere er fanget! ({2}/{3} for {4}% inventar)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "Lucky eggs vil aldrig blive brugt med UseLuckyEggsMinPokemonAmount sat til {0}, brug <= {1} istedet"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Fang {0} Pokémon mere for at bruge et Lucky Egg!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Brugte {0} | {1} tilbage!"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Razz Berry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Prøve #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Candies: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Uventede data i GPX fil forsøger at springe over."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfekt"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "navn"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Ukendt"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Højeste CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Højeste IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Højeste Level"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Vær sikker på at Lat & Lng er korrekte. Luk programmet hvis de ikke er! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Putter æg i inkubator: {0:0.00}km tilbage"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Ægge inkubator Status: {0:0.00}km tilbage"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Inkubateret æg har udklækket: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "FEJL"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ADVARSEL"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "PKSTP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECYCLE"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFER"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "UDVIKLET"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BÆR"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "ÆG"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "UPDATE"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Logger ind med {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC Servere er sandsynligvis nede ellers er de givne login info ikke korrekte. Forsøg med Google."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Prøver igen om {0} sekunder..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Konto ikke bekræftet! Stopper..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Åbner Google Device siden, derefter brug koden derinde ved at trykke på CTRL+V."
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Koden kunne ikke placeres på klippebordet forsøg at skriv den manuelt..."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Gå til: {0} & brug denne kode: {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Realistisk bevægelse fundet. Benytter UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Ingen realistisk bevægelse ved {0}, benytter nyligt gemte Data fra LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Koordinater i \"LastPos.ini\" er ugyldige! Benytter standard Koordinater."
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Super! Du har allerede den nyeste version {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "AutoUpdater er deaktiveret. Få den seneste udgivelse fra: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Download og udpakning af opdatering..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Download af den nyeste version færdig..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Udpakning af filer færdig..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Opdatering afsluttet! Du må nu lukke dette vindue."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Søger efter Incense til at tiltrække Pokémons..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Søger efter Pokémons..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Søger efter Lure til at tiltrække Pokémons..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Sprunget over {0}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Din PokémonInventar er fuld. Gør plads til Pokémons..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "PokémonInventar er fuld. Smid venligst Pokémons ud manuelt eller sæt \"TransferDuplicatePokemon\" i indstillingerne til \"true\"..."
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Problem ved træffelse: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Træffelsesproblem: Modul-Pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Det ønskede mål ({0}, {1}), er for langt væk fra din aktuelle placering ({2}, {3})."
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) er blevet omdøbt fra {2} til {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% perfekt {1} (CP {2}) *favorited*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokémon-Ignore-Filter] - Ignorerer {0} som angivet i indstillingerne!"
+    },
+    {
+      "Key": "MissingCredentialsGoogle",
+      "Value": "Du er nød til at fylde GoogleUsername og GooglePassword ud i auth.json!"
+    },
+    {
+      "Key": "MissingCredentialsPtc",
+      "Value": "Du er nød til at fylde PtcUsername og PtcPassword ud i auth.json!"
+    },
+    {
+      "Key": "GoogleError",
+      "Value": "Vær sikker på at det er den rigtige Email og det rigtige Password."
+    },
+    {
+      "Key": "GoogleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "RequireInputText",
+      "Value": "Programmet vil fortsætte efter et tryk på en knap..."
+    },
+    {
+      "Key": "SnipeScan",
+      "Value": "[Sniper] Skanner efter nogle Pokémons til at snipe ved {0}..."
+    },
+    {
+      "Key": "NoPokemonToSnipe",
+      "Value": "[Sniper] Ingen Pokémons fundet til at snipe!"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.de.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.de.json
new file mode 100644
index 0000000..de8dda3
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.de.json
@@ -0,0 +1,1845 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Pokéball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Superball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Hyperball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Meisterball"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Unbekannte Authentifizierungsart in der config.json festgelegt"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Du bist außerhalb des festgelegten Radius! Laufe zurück zum Anfang ({0}m entfernt). Sind die Koordinaten in der config.json korrekt?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Keine nutzbaren Pokéstops in deiner Gegend gefunden. Ist die maximale Distanz zu klein?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Name: {0} EP: {1}, Gems: {2}, Items: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Name: {0} INFO: Loot sammeln fehlgeschlagen, eventueller Softban. Unban in: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} in ({1}m) ({2} Sekunden)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Spiele als {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Glücks-Ei benutzt, verbleibend: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} wurde für {1}EP entwickelt!"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Fehlgeschlagen {0}. Resultat: {1}, stoppe die Entwicklung {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- WP: {1}  IV: {2}%   [Beste WP: {3}  IV: {4}%] (Bonbons: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m entfernt | mit {9} ({10} verbleibend). | {11} EP erhalten | {12} | B: {13} L: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m entfernt | mit {9} ({10} verbleibend). | B: {11} L: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Keine Pokébälle mehr! - Wir haben ein {0} mit {1} WP verpasst!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "{0} benutzt, {1} verbleibend"
+    },
+    {
+      "Key": "ItemRazzBerry",
+      "Value": "Himmihbeere"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Bonbons: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Unerwartete Daten in GPX Datei, versuche zu überspringen."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfekt"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Name"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Unbekannt"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Höchste WP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Höchste IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Höchstes Level"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Gehe sicher, dass Lat & Lng richtig sind. Schließe das Programm falls nicht! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Lege Ei in die Ei-Brutmaschine: {0:0.00}km verbleibend"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Ei-Brutmaschine Status Update: {0:0.00}km verbleibend"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Ei ist geschlüpft: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "FEHLER"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ACHTUNG"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "WEGWERFEN"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "VERSCHICKT"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "ENTWICKELT"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BEERE"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "EI"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "UPDATE"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Einloggen mit {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC Server sind wahrscheinlich offline ODER die angegebenen Zugangsdaten sind falsch. Versuche Google."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Erneuter Versuch in {0} Sekunden..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Account nicht bestätigt! Stoppe..."
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Realistische Bewegung gefunden. Benutze UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Keine realistische Bewegung bei {0}, benutze zuletzt gespeicherte Daten aus LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Koordinaten in \"LastPos.ini\" sind ungültig! Benutze standart Koordinaten."
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Super! Du hast bereits die aktuellste Version {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "AutoUpdater ist deaktiviert. Aktuellste Version auf: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Download und entpacken vom Update..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Download des neusten Release abgeschlossen..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Entpacken der Dateien abgeschlossen..."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "Ihre Konfiguration wurde auf die neue Version übertragen..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Update abgeschlossen! Du kannst dieses Fenster nun schließen."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Suche nach von Rauch angelockten Pokémon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Suche nach Pokémon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Suche nach von Modulen angelockten Pokémon..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Übersprungen {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Du hast keine Pokébälle im Inventar, es können keine Pokémon gefangen werden!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokéball: {0} | Superball: {1} | Hyperball: {2} | Meisterball: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Tränke: {0} | Supertränke: {1} | Hypertränke: {2} | Top-Tränke: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Beleber: {0} | Top-Beleber: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Beeren: {0} | Rauch: {1} | Glücks-Eier: {2} | Lockmodule: {3}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Das PokémonInventar ist voll. Verschicke Pokémon..."
+    },
+    {
+      "Key": "InvFullPokestopLooting",
+      "Value": "Das Inventar ist voll. Es können keine Gegenstände mehr eingesammelt werden."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "PokémonInventar ist voll. Bitte verschicke Pokémon manuell oder setze \"TransferDuplicatePokemon\" in den Einstellungen auf \"true\"..."
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Problem beim Fangen: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Problem beim Fangen: Lockmodul-Pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Das gewünschte Ziel ({0}, {1}), ist zu weit von deiner aktuellen Position ({2}, {3}) entfernt."
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) wurde von {2} zu {3} umbenannt."
+    },
+    {
+      "Key": "PokemonFavorite",
+      "Value": "{0}% perfekt {1} (CP {2}) *Favorit*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokémon-Ignore-Filter] - Ignoriere {0} wie in den Einstellungen angegeben!"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Versuch #{1}"
+    },
+    {
+      "Key": "CatchStatusError",
+      "Value": "Fehler beim Fangen"
+    },
+    {
+      "Key": "CatchStatusEscape",
+      "Value": "Entkommen"
+    },
+    {
+      "Key": "CatchStatusFlee",
+      "Value": "Geflüchtet"
+    },
+    {
+      "Key": "CatchStatusMissed",
+      "Value": "Verfehlt"
+    },
+    {
+      "Key": "CatchStatusSuccess",
+      "Value": "Gefangen"
+    },
+    {
+      "Key": "CatchTypeNormal",
+      "Value": "Wildes"
+    },
+    {
+      "Key": "CatchTypeLure",
+      "Value": "Lockmodul"
+    },
+    {
+      "Key": "CatchTypeIncense",
+      "Value": "Rauch"
+    },
+    {
+      "Key": "WebSocketFailStart",
+      "Value": "Fehler beim Starten des WebSockets auf Port: {0}"
+    },
+    {
+      "Key": "StatsTemplateString",
+      "Value":
+        "{0} - Laufzeit {1} - Lvl: {2} | EP/H: {3:n0} | P/H: {4:n0} | Sternenstaub: {5:n0} | Verschickt: {6:n0} | Weggeworfen: {7:n0}"
+    },
+    {
+      "Key": "ProfileStatsTemplateString",
+      "Value":
+        "----- LVL {0} | {1} ----- \n Erfahrungspunkte: {2}/{3} \n Pokemons gefangen: {4} \n Pokemons verschickt: {5} \n Pokestops besucht: {6} \n Eier geschlüpft: {7} \n Pokemons entwickelt: {8} \n Pokedex Einträge: {9} \n KM gelaufen: {10} \n Pokemons: {11}/{12}"
+    },
+    {
+      "Key": "ShowPokeTemplate",
+      "Value": " \n WP {0} | IV : {1}% | Name: {2}"
+    },
+    {
+      "Key": "HelpTemplate",
+      "Value":
+        "Kommandos: \n \n /top <cp/iv> <amount> - Zeigt die besten Pokemons an. \n /all <cp/iv> - Zeigt dir alle Pokemons an. \n /profile - Zeigt dein Profil. \n /loc - Zeigt deine Position an. \n /items - Zeigt dir deine Items \n /status - Zeigt den Status vom Bot. \n /pokedex - Zeigt dein Pokedex. "
+    },
+    {
+      "Key": "StatsXpTemplateString",
+      "Value": "{0} (Aufstieg in {1}h {2}m | {3:n0}/{4:n0} EP)"
+    },
+    {
+      "Key": "RequireInputText",
+      "Value": "Programm wird nach Drücken einer Taste fortgesetzt..."
+    },
+    {
+      "Key": "GoogleTwoFactorAuth",
+      "Value":
+        "Wenn Google-Zwei-Faktor-Authentifizierung aktiviert ist, muss ein App Spezifisches Passwort in die auth.json eingefügt werden."
+    },
+    {
+      "Key": "GoogleTwoFactorAuthExplanation",
+      "Value": "Öffne App-Passwörter. Bitte erstelle ein neues Passwort (verwende bei App wählen: Andere)"
+    },
+    {
+      "Key": "GoogleError",
+      "Value": "Stell sicher, dass du die richtige E-Mail & Passwort eingegeben hast."
+    },
+    {
+      "Key": "GoogleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "MissingCredentialsGoogle",
+      "Value": "Es müssen GoogleUsername & GooglePassword in auth.json ausgefüllt werden!"
+    },
+    {
+      "Key": "MissingCredentialsPtc",
+      "Value": "Es müssen PtcUsername & PtcPassword in auth.json ausgefüllt werden!"
+    },
+    {
+      "Key": "SnipeScan",
+      "Value": "Scannen nach Snipebaren Pokémon in {0}..."
+    },
+    {
+      "Key": "SnipeScanEx",
+      "Value": "Snipe ein {0} mit {1} IV in {2}..."
+    },
+    {
+      "Key": "NoPokemonToSnipe",
+      "Value": "Kein Pokémon zum Snipen gefunden"
+    },
+    {
+      "Key": "NotEnoughPokeballsToSnipe",
+      "Value": "Nicht genug Pokébälle um Snipen zu starten! ({0}/{1})"
+    },
+    {
+      "Key": "DisplayHighestMove1Header",
+      "Value": "ATTACKE1"
+    },
+    {
+      "Key": "DisplayHighestMove2Header",
+      "Value": "ATTACKE2"
+    },
+    {
+      "Key": "DisplayHighestCandy",
+      "Value": "Bonbon"
+    },
+    {
+      "Key": "IPBannedError",
+      "Value": "Verbindung nicht möglich. Deine IP könnte von Niantic auf die Blacklist gesetzt worden sein. Beenden..."
+    },
+    {
+      "Key": "NoEggsAvailable",
+      "Value": "Keine Eier verfügbar"
+    },
+    {
+      "Key": "UseLuckyEggActive",
+      "Value": "Glücks-Ei bereits aktiv"
+    },
+    {
+      "Key": "UsedLuckyEgg",
+      "Value": "Verwende Glücks-Ei"
+    },
+    {
+      "Key": "UseLuckyEggAmount",
+      "Value": "Glücks-Eier im Inventar: {0}"
+    },
+    {
+      "Key": "NoIncenseAvailable",
+      "Value": "Kein Rauch verfügbar"
+    },
+    {
+      "Key": "UseIncenseActive",
+      "Value": "Rauch bereits aktiv"
+    },
+    {
+      "Key": "UseIncenseAmount",
+      "Value": "Rauch im Inventar: {0}"
+    },
+    {
+      "Key": "UsedIncense",
+      "Value": "Verwende Rauch"
+    },
+    {
+      "Key": "AmountPkmSeenCaught",
+      "Value": "Anzahl gesehener Pokémon: {0}/151, Anzahl gefangener Pokémon: {1}/151"
+    },
+    {
+      "Key": "PkmPotentialEvolveCount",
+      "Value": "[Entwicklung] Mögliche Entwicklungen: {0}"
+    },
+    {
+      "Key": "PkmNotEnoughRessources",
+      "Value": "Pokémon Upgrade fehlgeschlagen, nicht genügend Ressourcen"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value":
+        "Warte mit Entwicklungen von {0} Pokémon bis {1} weitere gefangen wurden! ({2}/{3} bis {4}% Inventar Auslastung)"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex gefangen --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Gefangen: {2} | Gesehen: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex gebraucht --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bisasam"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Bisaknosp"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Bisaflor"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Glumanda"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Glutexo"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Glurak"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Schiggy"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Schillok"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Turtok"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Raupy"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Safcon"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Smettbo"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Hornliu"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kokuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Bibor"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Taubsi"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Tauboga"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Tauboss"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattfratz"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Rattikarl"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Habitak"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Ibitak"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Rettan"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandan"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandamer"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranW"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Piepi"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Pixi"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Vulnona"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Pummeluff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Knuddeluff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Myrapla"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Duflor"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Giflor"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasek"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Bluzuk"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Omot"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Digda"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Digdri"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Mauzi"
+    },
+    {
+      "Key": "persian",
+      "Value": "Snobilikat"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Enton"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Entoron"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Menki"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Rasaff"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Fukano"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arkani"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Quapsel"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Quaputzi"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Quappo"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Simsala"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machollo"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Maschock"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machomei"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Knofensa"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Ultrigaria"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Sarzenia"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacha"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentoxa"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Kleinstein"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Georok"
+    },
+    {
+      "Key": "golem",
+      "Value": "Geowaz"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponita"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Gallopa"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Flegmon"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Lahmus"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnetilo"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Porenta"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Dodu"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodri"
+    },
+    {
+      "Key": "seel",
+      "Value": "Jurob"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Jugong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Sleima"
+    },
+    {
+      "Key": "muk",
+      "Value": "Sleimok"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Muschas"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Austos"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Nebulak"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Alpollo"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Traumato"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltobal"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Lektrobal"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Owei"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Kokowei"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Tragosso"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Knogga"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Kicklee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Nockchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Schlurp"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Smogon"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Smogmog"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rihorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rizeros"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chaneira"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangama"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Seeper"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seemon"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldini"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Golking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Sterndu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Pantimos"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Sichlor"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Rossana"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Elektek"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Karpador"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Garados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Evoli"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Aquana"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Blitza"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flamara"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Amonitas"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Amoroso"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Relaxo"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Arktos"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Lavados"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonir"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragoran"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtu"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "Keine Attacke"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "Donnerschock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "Ruckzuckhieb"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Kratzer"
+    },
+    {
+      "Key": "ember",
+      "Value": "Glut"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "Rankenhieb"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "Rasierblatt"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "Bodycheck"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "Aquaknarre"
+    },
+    {
+      "Key": "bite",
+      "Value": "Biss"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pfund"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "Duplexhieb"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wickel"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "Hyperstrahl"
+    },
+    {
+      "Key": "lick",
+      "Value": "Schlecker"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "Finsteraura"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Schlammbad"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "Metallklaue"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "Klammer"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "Flammenrad"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Vielender"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "Flügelschlag"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flammenwurf"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "Tiefschlag"
+    },
+    {
+      "Key": "dig",
+      "Value": "Schaufler"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "Fußkick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "Kreuzhieb"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "Psychoklinge"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psystrahl"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Erdbeben"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "Steinkante"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "Eishieb"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "Herzstempel"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Ladungsstoß"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "Blitzkanone"
+    },
+    {
+      "Key": "peck",
+      "Value": "Schnabel"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "Bohrschnabel"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "Eisstrahl"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "Luftschnitt"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "Hitzewelle"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Duonadel"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "Gifthieb"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "Aero-Ass"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "Schlagbohrer"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "Blütenwirbel"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "Megasauger"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "Käfergebrumm"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "Giftzahn"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "Nachthieb"
+    },
+    {
+      "Key": "slash",
+      "Value": "Schlitzer"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "Blubbstrahl"
+    },
+    {
+      "Key": "submission",
+      "Value": "Überroller"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "Karateschlag"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "Fußtritt"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "Wasserdüse"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "Nassschweif"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "Samenbomben"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psychoschock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "Steinwurf"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "Antik-Kraft"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "Felsgrab"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "Steinhagel"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "Juwelenkraft"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "Schattenstoß"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "Finsterfaust"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "Dunkelklaue"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "Unheilböen"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "Patronenhieb"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "Magnetbombe"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "Stahlflügel"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "Eisenschädel"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "Parabolladung"
+    },
+    {
+      "Key": "spark",
+      "Value": "Funkensprung"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "Donnerschlag"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Donner"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Donnerblitz"
+    },
+    {
+      "Key": "twister",
+      "Value": "Windhose"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "Feuerodem"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "Drachenpuls"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "Drachenklaue"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "Säuselstimme"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "Diebeskuss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "Zauberschein"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Mondgewalt"
+    },
+    {
+      "Key": "playRough",
+      "Value": "Knuddler"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "Giftstreich"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "Matschbombe"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "Schlammwoge"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "Mülltreffer"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "Lehmschuss"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "Knochenkeule"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Dampfwalze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "Schlammbombe"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "Zornklinge"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "Käferbiss"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "Ampelleuchte"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "Kreuzschere"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "Nitroladung"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "Funkenflug"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "Feuersturm"
+    },
+    {
+      "Key": "brine",
+      "Value": "Lake"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "Aquawelle"
+    },
+    {
+      "Key": "scald",
+      "Value": "Siedewasser"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "Hydropumpe"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychokinese"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psychostoß"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "Eissplitter"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "Eissturm"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "Eisesodem"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorber"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "Gigasauger"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "Feuerschlag"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "Solarstrahl"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "Laubklinge"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "Blattgeißel"
+    },
+    {
+      "Key": "splash",
+      "Value": "Platscher"
+    },
+    {
+      "Key": "acid",
+      "Value": "Säure"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "Windschnitt"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Orkan"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "Durchbruch"
+    },
+    {
+      "Key": "cut",
+      "Value": "Zerschneider"
+    },
+    {
+      "Key": "swift",
+      "Value": "Sternschauer"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "Hornattacke"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stampfer"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Kopfnuss"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "Hyperzahn"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "Bodyslam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Erholung"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Verzweifler"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "Siedewasser"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "Hydropumpe"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "Wickel"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "Wickel"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "Zornklinge"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "Käferbiss"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "Biss"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "Tiefschlag"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "Feuerodem"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "Donnerschock"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "Funkensprung"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "Fußkick"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "Karateschlag"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "Glut"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "Flügelschlag"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "Schnabel"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "Schlecker"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "Dunkelklaue"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "Rankenhieb"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "Rasierblatt"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "Lehmschuss"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "Eissplitter"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "Eisesodem"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "Ruckzuckhieb"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "Kratzer"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "Pfund"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "Zerschneider"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "Gifthieb"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "Säure"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "Psychoklinge"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "Steinwurf"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "Metallklaue"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "Patronenhieb"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "Aquaknarre"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "Platscher"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "Aquaknarre"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "Lehmschelle"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "Zen-Kopfstoß"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "Konfusion"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "Giftstachel"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "Blubber"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "Finte"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "Stahlflügel"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "Feuerzahn"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "Zertrümmerer"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.es.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.es.json
new file mode 100644
index 0000000..d00306d
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.es.json
@@ -0,0 +1,1992 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Poké Ball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Super Ball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Ultra Ball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Master Ball"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "AuthType desconocido en config.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Las credenciales de usuario facilitadas no son válidas. La conexión ha fallado."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "¡Estás fuera del radio definido! Andando a la posición inicial (a {0}m) en 5 segundos. ¿Es correcto tu archivo LastPos.ini?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "No se encontraron Poképaradas disponibles en tu área. ¿Has configurado una distancia máxima demasiado pequeña?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nombre: {0} Exp: {1}, Gemas: {2}, Objetos: {3}, Lat: {4}, Long: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Nombre: {0} INFO: El avance falló, posible SoftBan. Eliminar SoftBan en: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Llegando a Poképarada: {0} en ({1}m) ({2} segundos)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Jugando como {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Incienso usado. Te quedan: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Huevo Suerte usado. Te quedan: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0}, obtienes {1} exp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Falló {0}. El resultado fue {1}, parando evolución {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- PC: {1}  IV: {2}%   [Mejor PC: {3}  IV: {4}%] (Caramelos: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} | Nivel: {3} PC: ({4}/{5}) IV: {6}% | Prob: {7}% | {8}m dist | con {9} (quedan {10}). | {11} EXP ganada | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} | Nivel: {3} PC: ({4}/{5}) IV: {6}% | Prob: {7}% | {8}m dist | con {9} (quedan {10}). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "¡Sin Poké Balls! - Has perdido un {0} con {1} PC :("
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Esperando evolución {0} Pokémon {1} ¡es el más capturado! ({2}/{3} para {4}% del inventario)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "Los huevos de la suerte nunca serán utilizados con UseLuckyEggsMinPokemonAmount en {0}, usa <= {1} en su lugar"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Pokémon más capturado {0} ¡utilizar un huevo de suerte!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Usado {0} | {1} restante"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Baya Frambu"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} | Intentos #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Caramelos: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Error: No controlados los datos en el archivo GPX, intentar omitir."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfecto"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "nombre"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Desconocido"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Pokémon con mayor PC"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Pokémon con mayor Perfección"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Pokémon con mayor Nivel"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Asegúrese de que la Latitud y Longitud son las correctas. ¡Salga del Programa si no es así! Lat: {0} Long: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Añadiendo huevo a la incubadora: {0:0.00}km restantes"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Actualizando el estado de la incubadora: {0:0.00}km restantes"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Huevo incubado ha eclosionado: {0} | Nivel: {1} PC: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERROR"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATENCIÓN"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKEPARADA"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNIPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECICLAJE"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFERIDO"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUCIONAR"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BAYA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "HUEVO"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ACTUALIZAR"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "NUEVO"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Autenticando con {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "Es probable que los servidores de PTC estén caídos o que tus datos de acceso sean incorrectos. Prueba con Google."
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "PTC Login Token expiró. Reautenticando..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "Se ha recibido una respuesta invalida del servidor Niantic."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Intentando de nuevo en {0} segundos..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "¡Cuenta no verificada! Saliendo..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Abriendo la página de Google Device. Por favor, pegue el código usando CTRL+V."
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "No se pudo copiar al portapapeles, por favor, hágalo manualmente."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Ir: {0} & enter {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Detectado viaje realista, utilizando UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Viaje no realista en {0}, utilizando el último LastPos.ini memorizado"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Las coordenadas en \"LastPos.ini\" no son correctas, utilizando las coordenadas predeterminadas"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "¡Perfecto! Ya tienes la versión más reciente {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "AutoUpdater está desactivado. Obtenga la última versión en: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Descargando y aplicando la actualización..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Terminada la descarga de la última actualización..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Terminada la desempaquetación de los archivos..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Terminada de transferir su configuración a la nueva versión..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Actualización terminada, puede cerrar esta ventana ahora."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Buscando incienso para Pokémon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Buscando Pokémon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Buscando Cebos Pokémon..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Omitido {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "No tienes Poké Balls en el inventario, ¡no se puede atrapar más Pokémon!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Poké Balls: {0} | Super Balls: {1} | Ultra Balls: {2} | Master Balls: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Potions: {0} | SuperPotions: {1} | HyperPotions: {2} | MaxPotions: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Revives: {0} | MaxRevives: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Berrys: {0} | Incense: {1} | LuckyEggs: {2} | Lures: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Configuración Inválida] El Máximo de items combinados (bolas+pociones+revivir={0}) está por encima del almacenamiento máximo ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Reciclando tranquilamente..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "El inventario de Pokémon está lleno. Transfiriendo Pokémon..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "El inventario de Pokémon está lleno. Transfiera los Pokémon manualmente o active (true) TransferDuplicatePokemon en config.json..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "El inventario está lleno, no se puede obtener más objetos"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Se encontró un problema: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Se encontró un problema: Cebo Pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "El destino deseado {0}, {1} está demasiado lejos de su posición actual {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) renombrado de {2} a {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% perfecto {1} (PC {2}) *favorito*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filtro Pokémon] - Ignorando {0} tal y como se definió en la configuración actual."
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Intento de Captura"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Error de Captura"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Captura Fallida"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Huida"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Capturas Perdidas"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Captura Exitosa"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Cebo"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incienso"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "No se pudo iniciar WebSocketServer en el puerto: {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Activo {1} - Nivel: {2} | EXP/H: {3:n0} | P/H: {4:n0} | P.Estelar: {5:n0} | Transferido: {6:n0} | Reciclado: {7:n0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Próximo nivel en {1}h {2}m | {3:n0}/{4:n0} EXP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "El programa continuará después de pulsar una tecla..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Como tiene habilitada la autenticación de dos factores de Google, tendrá que insertar una contraseña de la APP específica en el auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Abriendo Google App-Passwords. Por favor, cree una nueva contraseña en la APP (utilizar en otro dispositivo)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Asegúrese de que ha introducido el correo electrónico y contraseña correcta."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Es necesario rellenar GoogleUsername y GooglePassword en auth.json"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Es necesario rellenar PtcUsername y PtcPassword en auth.json"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Sniper] Escaneando en busca de Pokémon en {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "[Sniper] Sniping a {0} con {1} IV en {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Sniper] No se han encontrado Pokémon"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "[Sniper] No hay suficientes Poké Balls para iniciar Sniping! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "ATAQUE1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "ATAQUE2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Caramelo"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Conexión denegada. Su IP podría haber sido añadida a la Lista Negra de Niantic. Saliendo..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "No hay huevos disponibles"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Huevo suerte ya está activo"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Huevo suerte utilizado"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "[Inventario] Huevos suerte: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "No hay Incienso disponible"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Incienso ya está activo"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "[Inventario] Incienso: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Incienso utilizado"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Cantidad de Pokémon vistos: {0}/151, Cantidad de Pokémon capturados: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Evolución] Disponible: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Actualización fallida: No hay suficientes recursos"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "[Sniper] Parece que el servidor de Snipping está caído. Saliendo..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Esta es la primera vez que inicias el bot, ¿quieres comenzar la instalación? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "¿Te gustaría cambiar el idioma predeterminado? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Por favor, introduce el código del idioma"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Código de idioma aplicado: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[INPUT ERROR] Error con la entrada, por favor, introduce '{0}' o '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Archivo Config/Auth generado de forma automática y debe completarse antes de continuar."
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Creación de nueva cuenta de usuario ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Por favor, selecciona un tipo de cuenta: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Tipo de cuenta elegida: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[ERROR] Tipo de cuenta incorrecto, por favor elije '{0}' o '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Por favor, ingresa un nombre de usuario"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Nombre de usuario aceptado: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Por favor, ingresa una contraseña"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Contraseña aceptada: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Cuenta de usuario COMPLETADA ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "¿Te gustaría establecer una nueva ubicación predeterminada? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Ubicación predeterminada Aplicada"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Ajuste de ubicación predeterminada ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[ERROR] Por favor, introduce solamente un VALOR. Por ejemplo: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Por favor, introduce una latitud (Recuerda... Clic derecho para pegar)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Latitud aceptada: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Por favor, introduce una Longitud (Recuerda... Clic derecho para pegar)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Longitud acepteda: {0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### Completada la configuración ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "Nidoran ♀"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "Nidoran ♂"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.et.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.et.json
new file mode 100644
index 0000000..1cdf3c2
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.et.json
@@ -0,0 +1,1686 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Pokéball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Superball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Hyperball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Masterball"
+    },
+    {
+      "Key": "CatchStatusSuccess",
+      "Value": "Käes"
+    },
+    {
+      "Key": "CatchStatusError",
+      "Value": "Viga püüdmisel"
+    },
+    {
+      "Key": "CatchStatusEscape",
+      "Value": "Põgenes"
+    },
+    {
+      "Key": "CatchStatusFlee",
+      "Value": "Põgenes"
+    },
+    {
+      "Key": "CatchStatusMissed",
+      "Value": "Mööda"
+    },
+    {
+      "Key": "CatchTypeIncense",
+      "Value": "Incense"
+    },
+    {
+      "Key": "CatchTypeLure",
+      "Value": "Lure"
+    },
+    {
+      "Key": "CatchTypeNormal",
+      "Value": "Tavaline"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Vale AuthType auth.json failis."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Oled seadistatud raadiusest väljas! Liigun alguspunkti ({0} m kaugusel) tagasi 5 sekundi pärast. Kas koordinaadid config.json'is on õiged?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Sinu piirkonnas ei leidu PokeStop'e. Kas maksimaalne raadius on liiga väike?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Name: {0} XP: {1}, Gem'e: {2}, Esemeid: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Name: {0} INFO: Esemete vastuvõtmine ebaõnnestus, võimalik softban. Katse: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} ({1} m pärast)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Mängin {0}'na"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Kasutasin Lucky Egg'i, veel alles: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} evolve'iti {1} XP eest!"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Viga {0}'ga. Tulemus: {1}, lõpetan evolve'imise: {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}% [Parim CP: {3}  IV: {4}%] (Candy't: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Pokéball'id otsas! - Jäin ilma {0}'st {1} CP'ga!"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} katse #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Candy't: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Ebakorrektsed GPX andmed, püüan vahele jätta."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon'e"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfektne"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Nimi"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Tundmatu"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "NäitaKõrgeimCP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "NäitaKõrgeimPerfektsus"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "NäitaKõrgeimLevel"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Veendu, et laius- ja pikkuskraadid on õiged. Kui ei, siis sulge programm! Laiuskraad (Lat): {0}, pikkuskraad (Lng): {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Panen muna inkubaatorisse: {0:0.00} km veel jäänud"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Inkubaatori seis: {0:0.00} km veel jäänud"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Muna koorus: {0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "VIGA"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "TÄHELEPANU"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMIN"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "LOOBUN"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFER"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLVE"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BERRY"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "MUNA"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "UUENDUS"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Login sisse {0}'na"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC server on maas VÕI on kasutajanimi ja parool valed. Proovi Google'iga?"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Järgmine katse {0} sekundi pärast..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Sisselogimine ebaõnnestus! Peatun..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Avan Google'i Device lehe. Täitke sealne väli CTRL+V abil."
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Ei suutnud koodi kopeerida. Proovige käsitsi."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Minge lehele: {0} & sisestage {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Realistlik liikumine leitud. Kasutan faili UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Ei leidnud realistlikku liikumist: {0}, kasutan viimati salvestatud andmeid failist LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Koordinaadid failis \"LastPos.ini\" ei ole korrektsed! Kasutage standardseid koordinaate."
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Fantastiline! Sul on tarkvarast uusim versioon, {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Automaatne uuendus ei tööta. Uusim versioon oleks: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Laadisin uuenduse alla ja pakkisin lahti..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Uusima versiooni allalaadimine valmis..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Andmete lahtipakkimine valmis..."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "Ülekandmise lõpetanud oma config uue versiooni..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Uuendus tehtud! Võite selle akna sulgeda."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Otsin Incense'iga meelitatud Pokémon'e..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Otsin Pokémon'e..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Otsin Lure'iga meelitatud Pokémon'e..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Jätsin vahele: {0}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Kott on Pokémon'e täis. Transferin Pokémon'id..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Kott on Pokémon'e täis. Palun transferige Pokémon'id käsitsi või määrake sätte \"TransferDuplicatePokemon\" väärtuseks \"true\"..."
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Probleem kohtumisega: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Probleem kohtumisega: lure'itud Pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Soovitud sihtkoht ({0}, {1}), on sinu praegusest asukohast ({2}, {3}) liiga kaugel."
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) nimetati ümber {2}'st {3}'ks."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokémon-Ignore-Filter] - Ignoreerin {0} nagu sätetes määratud!"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.fr.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.fr.json
new file mode 100644
index 0000000..2a5a301
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.fr.json
@@ -0,0 +1,1992 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokéBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "SuperBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "HyperBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Vérifiez le champs AuthType dans auth.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Vos identifiants Google ou Ptc sont invalides. Echec de connexion."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Vous dépassez votre rayon d'action! Début de la marche ({0}m de distance) dans 5 secondes. Vérifiez votre fichier LastPos.ini"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "Impossible de trouver un PokeStop. Modifiez la valeur de MaxTravelDistanceInMeters dans le fichier config.json"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "{0} +{1}XP | {2} Gems | {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Collecte/Capture impossible, tentative dans : {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} à {1}m | {2}s"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Connecté en tant que {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Utilisation d'un encens, {0} restant"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Utilisation d'un Œuf Chance, {0} restant"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} +{1}XP"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "{0} Echec. Le résultat était {1}, arrêt de l'évolution {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- {1} / {2}%   [Meilleur  {3} / {4}%] {5} Bonbons"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{1} x{0}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | dist {8}m | {10} {9} restante(s) | {11}XP | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | avec une {9} ({10} restante) | lat: {11} long: {12} "
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Plus de Pokeball - {0} PC{1} manqué"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Encore {1} Pokémon à capturer pour en évoluer {0} d'un coup ! ({2}/{3} pour {4}% de votre inventaire)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "Un Œuf Chance ne peut être utilisé qu'avec UseLuckyEggsMinPokemonAmount = {0}, utilisez plutôt une valeur <= à {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Encore {0} Pokémon à capturer pour pouvoir utiliser un Œuf Chance!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "{0} utilisé, {1} restante(s)"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Baie Framby"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "#{1} -{0}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "{0} Bonbons"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Données non gérées dans le fichier GPX, ignorées."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Nom"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Inconnu"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Classement par PC"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Classement par IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Classement par Niveau"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Destination : {0},{1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Incubation d'un oeuf, {0:0.00}km restant"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Incubation en cours, {0:0.00}km restant"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Eclosion d'un oeuf : {0} | Lvl: {1}  CP: ({2}/{3})  IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERREUR"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATTENTION"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "COLLECTE"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNIPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECYCLAGE"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "POKEMON"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFERT"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUTION"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BAIE"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "ŒUF"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "MÀJ"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "NOUVEAU"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Connexion via {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "Les serveurs PTC semblent hors-ligne ou vos identifiants PTC sont incorrects. Merci d'essayer via Google."
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "Le token de la connexion PTC a expiré. Reconnexion..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "Réponse invalide du serveur Niantic"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Nouvel essai dans {0} seconde(s)..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Votre compte n'est pas vérifié ! Arrêt en cours..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Ouverture de la page de périphérique Google. Veuillez copier le code (CTRL+V)"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Copie dans le presse-papier impossible, faîtes le manuellement"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Goto: {0} & enter {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Marche réaliste détectée, utilisation des paramètres par défaut dans le fichier config.json"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Chemin irréaliste détecté à {0}, utilisation des coordonnées sauvegardées dans le fichier LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value":
+        "Les coordonnées définies dans le fichier \"LastPos.ini\" sont invalides, utilisation des coordonnées par défaut."
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "NecroBot v{0} est à jour."
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "La mise à jour automatique est désactivée. Rendez-vous sur : {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Téléchargement d'une nouvelle mise à jour en cours..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Le téléchargement de la mise à jour est terminé..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "La décompression de la mise à jour est terminée..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Le transfert de vos fichiers config a bien été effectué..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "La mise à jour est terminée! Vous pouvez fermer la fenêtre."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Recherche d'encens..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Recherche de Pokémon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Recherche de leurre..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "{0} est ignoré"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Vous n'avez plus de pokéballs, la capture de Pokémon est impossible !"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Poké Balls: {0} | Super Balls: {1} | Hyper Balls: {2} | Master Balls: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Potions: {0} | Super Potions: {1} | Hyper Potions: {2} | Potions Max: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Rappels: {0} | Rappels Max: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Baies: {0} | Encens: {1} | Œuf chance: {2} | Leurres: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Configuration Invalide] Vos objets consommables (Pokéballs+Potions+Rappels={0}) dépassent le seuil de votre inventaire ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Recyclage rapide en cours..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "L'inventaire de Pokémon est plein. Transfert en cours..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "L'inventaire de Pokémon est plein. Merci de transférer manuellement ou de changer la valeur de \"TransferDuplicatePokemon\" en \"true\"..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "L'inventaire des objets est plein. Aucun objet n'a pu être récolté!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Un problème est survenu: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Un problème est survenu avec le leurre {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Votre destination désirée {0}, {1} est trop éloignée de votre position actuelle {2}, {3}."
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "{0} ({1}) a été renommé de {2} en {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}%IV {1} (CP {2}) *Favoris*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokémon-Ignore-Filter] - {0} ignoré comme défini dans les options !"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Capture"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Echec"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Échappé"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Fuite"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Manqué"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Capturé"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Leurre"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Encens"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Impossible de démarrer le serveur WebSocket sur le port : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - {1} - Lvl: {2} | EXP/H: {3:0} | P/H: {4:0} | Poussières: {5:0} | Transférés: {6:0} | Recyclés: {7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Niveau suivant dans {1}h {2}m | {3}/{4} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Appuyez sur une touche pour continuer..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "La validation en deux étapes de votre compte Google est activée, vous devez insérer un mot de passe spécifique à l'application dans auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Ouverture de la page Mots de passe d'application Google. Merci de générer un nouveau mot de passe spécifique à l'application. (utilisez 'Autre' comme périphérique)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Veuillez vérifier vos identifiants GoogleUsername et GooglePassword dans auth.json!"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Vous devez remplir les champs GoogleUsername et GooglePassword dans auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Vous devez remplir les champs PtcUsername et PtcPassword dans auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Sniper] Scan en cours sur {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "[Sniper] Scan d'un {0} avec {1}% IV à {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Sniper] Echec du scan. Aucun Pokémon trouvé."
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "[Sniper] Pas assez de pokéballs ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "Attaque 1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "Attaque 2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Bonbons"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Connexion refusée. Votre adresse IP a sans doute été bloquée par Niantic. Arrêt en cours..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Aucun oeuf de disponible"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Œuf Chance déjà activé"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Œuf Chance utilisé"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "[Inventaire] Œuf Chance : {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Aucun encens de disponible"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Encens déjà activé"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "[Inventaire] Encens : {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Encens utilisé"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Pokédex (151) : Rencontré {0} | Capturé {1}"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Evolution] Disponible : {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Echec. Ressources insuffisantes pour évoluer ce Pokémon"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Le serveur de Snipe est hors-ligne. Ignoré..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Ceci est votre première fois, voulez-vous commencer par la configuration ? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Voulez-vous changer la langue par défaut ? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Veuillez entrer un nouveau code de langue"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Langue appliquée : {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[ERREUR D'ENTRÉE] Entrée incorrecte, veuillez essayer '{0}' ou '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Les fichiers de Config/Auth sont générés automatiquement et doivent être complétés avant de continuer"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Configuration du COMPTE UTILISATEUR ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Choisissez votre type de compte : {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Type de compte sélectionné : {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[ERREUR] Type de compte incorrect, essayez '{0}' ou '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Veuillez entrer un nom d'utilisateur"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Nom d'utilisateur accepté : {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Veuillez entrer un mot de passe"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Mot de passe accepté : {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Compte utilisateur complété ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Voulez-vous configurer l'emplacement par défaut ? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Emplacement par défaut appliqué"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "## Configuration de la position par défaut ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[ERREUR] Veuillez n'entrer qu'UNE SEULE valeur, par exemple : {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Veuillez entrer une Latitude (Clic droit pour coller)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Latitude acceptée : {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Veuillez entrer une Longitude (Clic droit pour coller)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Longitude acceptée : {0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### Configuration terminée ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbizarre"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Herbizarre"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Florizarre"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Salamèche"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Reptincel"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Dracaufeu"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Carapuce"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Carabaffe"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Tortank"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Chenipan"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Chrysacier"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Papilusion"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Aspicot"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Coconfort"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Dardargnan"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Roucool"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Roucoups"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Roucarnage"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Rattatac"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Piafabec"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Rapasdepic"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Abo"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sabelette"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sablaireau"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Mélofée"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Mélodelfe"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Goupix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Feunard"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Rondoudou"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Grodoudou"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Nosferapti"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Nosferalto"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Mystherbe"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Ortide"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Rafflesia"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Mimitoss"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Aéromite"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Taupiqueur"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Triopikeur"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Miaouss"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psykokwak"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Akwakwak"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Férosinge"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Colossinge"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Caninos"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanin"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Ptitard"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Têtarte"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Tartard"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machoc"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machopeur"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Mackogneur"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Chétiflor"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Boustiflor"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Empiflor"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Racaillou"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Gravalanch"
+    },
+    {
+      "Key": "golem",
+      "Value": "Grolem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Galopa"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Ramoloss"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Flagadoss"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnéti"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magnéton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Canarticho"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Otaria"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Lamantine"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Tadmorv"
+    },
+    {
+      "Key": "muk",
+      "Value": "Grotadmorv"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Kokiyas"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Crustabri"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Fantominus"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Spectrum"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Ectoplasma"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Soporifik"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypnomade"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Krabboss"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorbe"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Électrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Nœunœuf"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Noadkoko"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Osselait"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Ossatueur"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Kicklee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Tygnon"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Excelangue"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Smogo"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Smogogo"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhinocorne"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhinoféros"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Leveinard"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Saquedeneu"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangourex"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Hypotrempe"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Hypocéan"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Poissirène"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Poissoroy"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Stari"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Staross"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "M.Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Insécateur"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Lippoutou"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Élektek"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Scarabrute"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magicarpe"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Léviator"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lokhlass"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Métamorph"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Évoli"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Aquali"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Voltali"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Pyroli"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Amonita"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Amonistar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Ptéra"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Ronflex"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Artikodin"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Électhor"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Sulfura"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Minidraco"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Draco"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dracolosse"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "Éclair"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "Vive-Attaque"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Griffe"
+    },
+    {
+      "Key": "ember",
+      "Value": "Flammèche"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "Fouet Lianes"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Charge"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "Tranch'Herbe"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "Bélier"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "Pistolet à O"
+    },
+    {
+      "Key": "bite",
+      "Value": "Morsure"
+    },
+    {
+      "Key": "pound",
+      "Value": "Écras'Face"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "Torgnoles"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Ligotage"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "Ultralaser"
+    },
+    {
+      "Key": "lick",
+      "Value": "Léchouille"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "Vibrobscur"
+    },
+    {
+      "Key": "smog",
+      "Value": "Purédpois"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Détritus"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "Griffe Acier"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "Force Poigne"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "Roue de Feu"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Mégacorne"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "Cru-Aile"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Lance-Flammes"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "Coup Bas"
+    },
+    {
+      "Key": "dig",
+      "Value": "Tunnel"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "Balayage"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "Coup-Croix"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "Coupe Psycho"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Rafale Psy"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Séisme"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "Lame de Roc"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "Poing-Glace"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "Crève-Cœur"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Coup d'Jus"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "Luminocanon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Picpic"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "Bec Vrille"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "Laser Glace"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "Lame d'Air"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "Canicule"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Double-Dard"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "Direct Toxik"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "Aéropique"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "Tunnelier"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "Tempête Florale"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "Méga-Sangsue"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "Bourdon"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "Crochet Venin"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "Tranche-Nuit"
+    },
+    {
+      "Key": "slash",
+      "Value": "Tranche"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "Bulles d'O"
+    },
+    {
+      "Key": "submission",
+      "Value": "Sacrifice"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "Poing-Karaté"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "Balayette"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "Aqua-Jet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "Hydroqueue"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "Canon Graine"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Choc Psy"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "Jet-Pierres"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "Pouvoir Antique"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "Tomberoche"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "Éboulement"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "Rayon Gemme"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "Ombre Portée"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "Poing Ombre"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "Griffe Ombre"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "Vent Mauvais"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "Ball'Ombre"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "Pisto-Poing"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "Bombaimant"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "Aile d'Acier"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "Tête de Fer"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "Parabocharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Étincelle"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "Poing-Éclair"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Fatal-Foudre"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Fatal-Foudre bolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Ouragan"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "Dracosouffle"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "Dracochoc"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "Dracogriffe"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "Voix Enjôleuse"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "Vampibaiser"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "Éclat Magique"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Pouvoir Lunaire"
+    },
+    {
+      "Key": "playRough",
+      "Value": "Câlinerie"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "Poison-Croix"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "Bomb-Beurk"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "Cradovague"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "Détricanon"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "Tir de Boue"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "Massd'Os"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Piétisol"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "Boue-Bombe"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "Taillade"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "Piqûre"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "Rayon Signal"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "Plaie-Croix"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "Nitrocharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "Rebondifeu"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "Déflagration"
+    },
+    {
+      "Key": "brine",
+      "Value": "Saumure"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "Vibraqua"
+    },
+    {
+      "Key": "scald",
+      "Value": "Ébullition"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "Hydrocanon"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psyko"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Frappe Psy"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "Éclats Glace"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "Vent Glace"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "Souffle Glacé"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Vol-Vie"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "Giga-Sangsue"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "Poing de Feu"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "Lance-Soleil"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "Lame-Feuille"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "Mégafouet"
+    },
+    {
+      "Key": "splash",
+      "Value": "Trempette"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acide"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "Vent Violent"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "Casse-Brique"
+    },
+    {
+      "Key": "cut",
+      "Value": "Coupe"
+    },
+    {
+      "Key": "swift",
+      "Value": "Météores"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "Koud'Korne"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Écrasement"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Coup d'Boule"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "Croc de Mort"
+    },
+    {
+      "Key": "slam",
+      "Value": "Souplesse"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "Plaquage"
+    },
+    {
+      "Key": "rest",
+      "Value": "Repos"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Lutte"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "Ébullition"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "Hydrocanon"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "Ligotage"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "Ligotage"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "Taillade"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "Piqûre"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "Morsure"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "Coup Bas"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "Dracosouffle"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "Éclair"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "Étincelle"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "Balayage"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "Poing-Karaté"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "Flammèche"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "Cru-Aile"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "Picpic"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "Léchouille"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "Griffe Ombre"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "Fouet Lianes"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "Tranch'Herbe"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "Tir de Boue"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "Éclats Glace"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "Souffle Glacé"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "Vive-Attaque"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "Griffe"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "Charge"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "Écras'Face"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "Coupe"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "Direct Toxik"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "Acide"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "Coupe Psycho"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "Jet-Pierres"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "Griffe Acier"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "Pisto-Poing"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "Pistolet à O"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "Trempette"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "Pistolet à O"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "Coud’Boue"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "Psykoud’Boul"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "Choc Mental"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "Dard-Venin"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "Écume"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "Feinte"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "Aile d’Acier"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "Crocs Feu"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "Éclate-Roc"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.gr.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.gr.json
new file mode 100644
index 0000000..71c1b7e
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.gr.json
@@ -0,0 +1,1743 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Άγνωστο AuthType στο config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Είστε έξω από την καθορισμένη περιοχή! Περπάτημα για ({0}m μακριά) σε 5 δευτερόλεπτα. Είναι το αρχείο LastPos.ini σωστό?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "Δεν βρεθηκαν λειτουργικά PokeStops στην περιοχή σου. Μήπως εχεις ορίσει την μέγιστη εμβέλεια πολυ χαμήλα;"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "XP: {0}, Πετράδια: {1}, Αντικείμενα: {2}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Αποτυχία χρήσης Pokestop, υπαρχει πιθανότητα softban. Unban σε: {0}/{1}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} σε απόσταση {1}μέτρων"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Συνδεδεμένος ως {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "χρησιμοποιήθηκε ένα Lucky Egg, απομένουν: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} εξελίχθηκε επιτυχώς για {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Η εξέλιξη απέτυχε {0}. Ως αποτέλεσμα {1}, δεν εξελίχθηκε {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Καλύτερο CP: {3}  IV: {4}%] (Candies: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Ξεμείναμε απο Pokeballs - Μας ξέφυγε ένα {0} με {1} CP"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Προσπάθεια #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Candies: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Αδιάβαστα δεδομένα στο αρχείο GPX, απόπειρα παραλειψής."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "Ποσοστό τελειότητας IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Όνομα"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Άγνωστο"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Εμφάνιση Μεγαλύτερου CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Εμφάνιση Μεγαλύτερου IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "DisplayHighestsLevel"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Βεβαιώσου οτι οι συντεταγμένες είναι σωστές. Αλλιώς κλείσε το πρόγραμμα Γ.Πλάτος: {0} Γ.Μήκος: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Ένα αυγό μπαίνει στο εκκολαπτήριο: {0:0.00}km απομένουν"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Ενημέρωστη κατάστασης εκκολαπτήριου: {0:0.00}km απομένουν"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Το εκκολαπτήριο εκκόλαψε ενα αυγό: {0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ΣΦΑΛΜΑ"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ΠΡΟΣΟΧΗ"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "ΠΛΗΡΟΦΟΡΙΑ"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "ΦΑΡΜΑΡΙΣΜΑ"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "ΑΝΑΚΥΚΛΩΣΗ"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "ΜΕΤΑΦΕΡΘΗΚΕ"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "ΕΞΕΛΙΧΗΘΚΕ"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "ΜΟΥΡΟ"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "ΑΥΓΟ"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "Ε.ΣΦΑΛΜΑΤΩΝ"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ΕΝΗΜΕΡΩΣΗ"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Σύνδεση μέσω {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "Οι PTC Servers είναι εκτός λειτουργίας Ή τα στοιχεία σου ειναι λανθασμένα. Προσπάθησε να συνδεθείς μέσω google"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Επόμενη προσπάθεια σε {0}'"
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Ο λογαριασμός δεν είναι ενεργοποιημένος! Κλείσιμο..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Άνοιγμα της σελίδας Συσκευές Google. Παρακαλώ επικόλλησε τον κωδικό με CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Δεν μπόρεσα να αντιγράψω τον κωδικό, κάντο χειροκίνητα"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Πάνε στο: {0} & συμπλήρωσε {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Εντοπίστηκαν ρεαλιστικες ρυθμίσεις, χρήση αρχείου UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value":
+        "Εντοπίστηκαν μη ρεαλιστικες ρυθμίσεις στο {0}, χρήση τελευταίων αποθηκευμένων συντενταγμένων στο LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Οι συντεναγμένες στο αρχείο \"LastPos.ini\" είναι άκυρες, χρήση αρχικών συντενταγμένων"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Τέλεια! έχεις ήδη την πιο πρόσφατη έκδοση {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Η αυτόματη ενημέρωση είναι απενεροποιημένη. Κατέβασε την πιο πρόσφατη έκδοση απο εδώ: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Κατέβασμα και εγκατάσταση ενημέρωσης..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Το Κατέβασμα Τελείωσε..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Η αποσυμπίεση αρχείων τελείωσε..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Η ενημέρωση τελείωσε, μπορείς τώρα να κλείσεις αυτο το παράθηρο."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Εύρεση pokemon απο insence..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Εύρεση pokemon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Εύρεση pokemon απο lure..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "{0} Παραλήφθηκε"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Ο κατάλογος Pokemon είναι γεμάτος.Μεταφόρα pokemon..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Ο κατάλογος Pokemon είναι γεμάτος.Μετέφερε pokemon χειροκίνητα η ενερποίησε την μεταφόρα διπλών pokemon απο τις ρυθμίσεις..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Ο κατάλογος αντικείμενων ειναι γεμάτος, δεν πήραμε αντικείμενα απο το Pokestop!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Πρόβλημα αντιμετόπισης pokemon: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Πρόβλημα αντιμετόπισης pokemon απο lure {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Η επιθυμητή σου τοποθεσία: {0}, {1} είναι πολύ μακρύα απο την τωρινή σου τοποθεσία: {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Το {0} ({1}) μετονομάστηκε απο {2} σε {3}."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Φίλτρο αγνόησης Pokemon] - Αγνοω το {0} οπως μου είπες στις ρυθμίσεις"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Απόπειρα"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Υπήρξε Error"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Ξέφυγε"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Έτρεξε"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Αστοχία"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Πιάστηκε"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Κανονικό"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Lure"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incense"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Αποτυχία εκκίνησης του WebSocketServer στην θύρα : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Χρόνος λειτουργίας {1} - Lvl: {2} | EXP/H: {3:0} | P/H: {4:0} | Stardust: {5:0} | Μεταφέρθηκαν: {6:0} | Ανακυκλώθηκαν: {7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Επομενο Level σε {1}h {2}m | {3}/{4} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Το πρόγραμμα θα συνεχίσει μετά το πάτημα οποιουδήποτε κουμπιού..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Επειδή χρησημοποιείς το Google Two Factor Auth, θα πρέπει να συμπλήρωσεις έναν κωδικό συγκεκριμένο για αυτό το πρόγραμμα στο auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Άνοιγμα του Google App-Passwords. Σε παρακαλώ δημιούργησε εναν καινουργιο κωδικό για αυτο το πρόγραμμα (Για συσκευή βάλε Other/Άλλο)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Βεβαιώσου οτι έχεις συμπληρώσει σωστά τα Email & Password."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Πρέπει να συμπλήρωσεις τα GoogleUsername και GooglePassword στο auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Πρέπει να συμπλήρωσεις τα PtcUsername και PtcPassword στο auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Σναΐπερ] Έρευνα για Pokemon που μπορουν να σναϊπαριστούν στο {0}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Σναΐπερ] Δεν βρέθηκαν Pokemon για σναϊπάρισμα!"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.hu.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.hu.json
new file mode 100644
index 0000000..b660e55
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.hu.json
@@ -0,0 +1,1804 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Pokélabda"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Szuper pokélabda"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Ultra pokélabda"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Mester pokélabda"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Ismeretlen azonosítási mód van megadva a config.json fájlban"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Kívül vagy a megadott maximális távolságon! Séta az induláshoz ({0}méterre) 5 másodperc múlva. A Coords.ini fájlod rendben van?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Nincs használható pokéstop a környéken. Talán a megadott maximális távolságod túl kicsi??"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Név: {0} Tapasztalat: {1}, Drágakövek: {2}, tárgyak: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Név: {0} INFO: Lootolás sikertelen, lehetséges softban. Feloldás: {1}/{2} másodperc múlva"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Érkezés pokéstopphoz: {0} ({1}m)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Játék mint {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Szerencsetojás aktiválva, Hátralévő idő: {0} perc"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} fejlesztve, kaptál {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Sikertelen {0}. Az eredmény {1}, fejlesztés befejezése {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Legjobb CP: {3}  IV: {4}%] (cukorkák: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Esély: {7}% | {8}m távolságra | with a {9} ({10} maradt). | {11} kapott EXP | {12} | szél.: {13} hossz.: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Esély: {7}% | {8}m távolságra | with a {9} ({10} maradt). | szél.: {11} hossz.: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Elfogytak a pokélabdák - Elvesztetve {0} CP: {1}"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Próbálkozás #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Cukorkák: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Nem kezelt adat a GPX fájlban, kihagyás."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémonok"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "tökéletes"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "név"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Ismeretlen"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Legmagasabb CP megjelenítése"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "A legjobb megjelenítése"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "A legmagasabb szintű megjelenítése"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Győződj meg róla hogy a szélesség és a hosszúság helyes-e. Zárd be a programot ha nem! Szélesség: {0} Hosszúság: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Tojás behelyezése az inkubátorba: {0:0.00}km maradt"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Inkubátor állapot frissítése: {0:0.00}km maradt"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Az inkubált tojás kikelt: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "HIBA"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "FIGYELEM"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKÉSTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMOLÁS"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "KIDOBÁS"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TOVÁBBÍTVA A PROFNAK"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "FEJLESZTVE"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "MÁLNA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "TOJÁS"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "HIBAKERESÉS"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "FRISSÍTÉS"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Bejelentkezés {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "A PTC szerverek leálltak VAGY az adataid hibásak. Próbáld meg Google-al"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Újrapróbálkozás {0} másodperc múlva..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "A fiók nincs megereősítve! Érdekes..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "A Google eszköz oldalának megnyitása. Másold be a kódot CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Nem lehet másolni a vágólapra, csináld manuálisan"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Látogasd meg: {0} & enter {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Realisztikus mozgás észlelve , A UserSettings.settings felhasználásával"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Teleportálás {0}, felhasználva az utolsó Coords.ini fájlt"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "A koordináták a \"Coords.ini\" fájlban érvénytelen, alapértelmezett koordináta használata"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Remek! Már a legújabb verziót futtatod! {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Automatikus frissítés kikapcsolva. Töltsd le a legújabb verziót: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Frissítés letöltése és telepítése..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Legújabb verzió letöltve..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "A fájlok kicsomagolása befejeződött..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "A konfigurációd áthelyezve az új verzióba..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Frissítés befejeződött, bezárhatod ezt az ablakot."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Pokémon keresése füstölővel..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Pokémonok keresése..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Aktív Lure modul, pokémonok keresése..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Kihagyva {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Nincs pokélabda a táskádban, nem tudsz több pokémont elfogni!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokélabdák: {0} | Szuper pokélabdák: {1} | Ultra pokélabdák: {2} | Mester pokélabdák: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Főzetek: {0} | Szuper főzetek: {1} | Hiper főzetek: {2} | Maximum főzeteks: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Újraélesztő: {0} | Maximum újraélesztő: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Málnák: {0} | Vonzók: {1} | Szerencsetojások: {2} | Csalik: {3}"
+    },
+    {
+      "Key": "checkingForBallsToRecycle",
+      "Value": "Pokélabdák keresése kidobáshoz {0} megtartva"
+    },
+    {
+      "Key": "checkingForPotionsToRecycle",
+      "Value": "Főzetek keresése kidobáshoz {0} megtartva"
+    },
+    {
+      "Key": "checkingForRevivesToRecycle",
+      "Value": "Újraélesztők keresése kidobáshoz {0} megtartva"
+    },
+    {
+      "Key": "pokeballsToKeepIncorrect",
+      "Value": "A maximális pokélabdák száma hibásan lett megadva. A megadott szám kisebb mint 1."
+    },
+    {
+      "Key": "potionsToKeepIncorrect",
+      "Value": "A főzetek maximális száma hibásan lett megadva. A megadott szám kisebb mint 1."
+    },
+    {
+      "Key": "revivesToKeepIncorrect",
+      "Value": "Az újraélesztők maximális száma hibásan lett megadva. A megadott szám kisebb mint 1."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "A pokémon tárhely megtelt, pokémonok továbbítása a professzornak..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "A pokémon tárhely megtelt! TOvábbíts pokémonokat manuálisan a professzornak vagy állítsd a TransferDuplicatePokemon értékét true-ra a beállításokban..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "A hátizsák megtelt, nincs új tárgy!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Elfogási probléma: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Elfogási probléma: Lure pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "A megadott célállomásod {0}, {1} túl messze van a jelenlegi pozíciódtól {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) átnevezve erről: {2} erre: {3}."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Mellőzendő pokémonok] - Mellőzve: {0} ahogy a beállításokban megadtad"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Elfogási kísérlet"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Elfogási hibar"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Sikertelen elfogás"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Megszökött"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Elfogás kihagyva"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Sikeres elfogás"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normál"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Lure modul"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Füstölő"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "WebSocketServer indítása sikertelen a {0} porton"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Futás idő {1} - Lvl: {2} | EXP/H: {3:n0} | P/H: {4:n0} | Csillagpor: {5:n0} | Továbbítva: {6:n0} | Kidobva: {7:n0} Fordította: SkayRedux"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Futás idő {1}h {2}m | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Nyomj meg egy gombot az indításhoz..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Hogyha van Google 2 tényezős hitelesítésed engedélyezve, be kell illesztened egy alkalmazás által meghatározott kódot az auth.json fájlba"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Google alkalmazás jelszavak megnyitása. Adj meg új alkalmazás jelszót (használd az újat felhasználóként)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Győződj meg róla hogy a helyes e-mail és jelszót adtad-e meg."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "A Google szerverek valószínűleg túlterheltek vagy leálltak, légy türelmes és próbáld újra később."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Ki kell töltened a GoogleUsername és GooglePassword sorokat az auth.json fájlban!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Ki kell töltened PtcUsername és PtcPassword sorokat az auth.json fájlban!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Kereső] Pokémonok keresése itt: {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "[Kereső] {0} keresése {1} -vel/-val IV itt: {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Kereső] Nincs pokémon a kereséshez!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Túl kevés pokélabda a kereséshez! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "Támadás"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "Támadás"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Regisztrált pokémonok a Pokédexben --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Név: {1} | Elfogva: {2} | Látott: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Regisztrálatlan pokémonok --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Név: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.id.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.id.json
new file mode 100644
index 0000000..5c2f235
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.id.json
@@ -0,0 +1,2005 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Jenis AuthType pada config.json tidak dikenal"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Username dan password tidak cocok, login gagal!"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Kamu diluar dari radius yang telah kamu tentukan! Kembali ke posisi awal (sekitar {0} meter) dalam 5 detik. Apakah berkas LastPos.ini kamu benar?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Tidak ada PokeStop yang bisa digunakan di sekitarmu. Pastikan jarak maksimal tidak terlalu kecil"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nama: {0} mendapatkan XP: {1}, Gem: {2}, barang: {3}, lintang: {4}, bujur: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Nama: {0} INFO: Gagal Mengambil barang, kemungkinan softban. Unban dalam: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Berjalan ke PokeStop: {0} ({1} meter) ({2} detik)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Bermain sebagai {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Memakai Incense, tersisa: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Memakai Lucky Egg, tersisa: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} berhasil dan dapat {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Gagal {0}. Hasilnya adalah {1}, menghentikan evolusi {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [CP terbaik: {3}  IV: {4}%] (Permen: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Kemungkinan: {7}% | Jarak: {8} meter | menggunakan {9} ( Sisa {10}). | mendapatkan: {11} EXP | {12} | lintang: {13} bujur: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | kemungkinan: {7}% | Jarak: {8} meter | menggunakan {9} ( Sisa {10}). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Pokeball habis - {0} dengan CP {1} tidak dapat ditangkap"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Menunggu untuk evolusi {0} Pokemon, setelah {1} lagi tertangkap! ({2}/{3} dari {4}% inventaris)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "Lucky Egg tidak akan terpakai dengan pengaturan UseLuckyEggsMinPokemonAmount diatur ke {0}, gunakan <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Tangkap {0} Pokemon lagi untuk mulai menggunakan Lucky Egg!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Memakai {0} | {1} tersisa"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "RazzBerry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Percobaan ke-{1} Hasil : {0}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Permen: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Data pada berkas GPX tidak dapat ditangani, mencoba tanpa berkas GPX..."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "Sempurna"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Nama"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Tidak diketahui"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Menampilkan CP terbesar"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Menampilkan yang terbaik dijenisnya"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Menampilkan level terbesar"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Pastikan koordinat kamu telah benar. Tutup program dan konfigurasi ulang jika belum! X (lintang): {0} Y (bujur): {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Memasukkan telur ke dalam penetas: {0:0.00} km tersisa"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Status terbaru penetas: {0:0.00} km tersisa"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Telur telah menetas:  {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "Error"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "PERHATIAN"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "BIDIKAN"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "DAURULANG"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "DITRANSFER"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUSI"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BERRY"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "TELUR"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "PEMBARUAN"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "BARU"
+    },
+    {
+      "Key": "logEntrySoftBan",
+      "Value": "SOFTBAN"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Masuk menggunakan {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "Server PTC mungkin sedang mati atau mengalami gangguan, jalankan bot-nya lain waktu"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Mencoba lagi dalam {0} detik..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Akun tidak terverifikasi! Keluar dari program..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Membuka halaman Perangkat Google. Mohon masukkan kode menggunakan CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Tidak dapat menyalin ke clipboard, lakukan secara manual."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Pergi ke: {0} & masukkan {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Mendeteksi perjalanan realistis, menggunakan pengaturan bawaan pada config.json"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Bukan perjalanan realistis {0}, menggunakan LastPos.ini yang terakhir tersimpan"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Koordinat di berkas \"LastPos.ini\" tidak dapat digunakan, menggunakan koordinat bawaan"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Sempurna! Kamu punya versi terbaru {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Pembaruan otomatis dimatikan. Dapatkan rilis terbaru dari: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Mengunduh dan menerapkan pembaruan..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Selesai mengunduh rilis terbaru..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Selesai membongkar berkas-berkas..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Selesai mentransfer pengaturan ke versi baru..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Pembaruan telah selesai, kamu dapat menutup jendela ini sekarang."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Mencari incense Pokemon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Mencari Pokemon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Mencari lure Pokemon..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Melewatkan {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Kamu tidak memiliki PokeBall di inventaris, tidak dapat menangkap Pokemon lagi!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "PokeBall: {0} | GreatBall: {1} | UltraBall: {2} | MasterBall: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Potion: {0} | SuperPotion: {1} | HyperPotion: {2} | MaxPotion: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Revive: {0} | MaxRevive: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Berry: {0} | Incense: {1} | Lucky Egg: {2} | Lure: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Konfigurasi Salah] Total barang maksimum kamu (ball+potion+revive={0}) melebihi kapasitas tas kamu ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Mendaur ulang senyap..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Inventaris pokemon penuh. Mentransfer pokemon..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Inventaris pokemon penuh. Transfer pokemon secara manual atau ubah TransferDuplicatePokemon menjadi true diberkas config.json"
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Inventaris penuh, barang tidak diambil!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Terjadi masalah: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Terjadi masalah pada: lure Pokemon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Tujuan yang kamu inginkan {0}, {1} terlalu jauh dari posisi kamu saat ini {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokemon {0} ({1}) berubah nama dari {2} ke {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% sempurna {1} (CP {2}) *difavoritkan*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filter abaikan Pokemon] - Mengabaikan {0} seperti dijelaskan di pengaturan"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Status Tangkapan"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Tangkapan Error"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Tangkapan Lepas"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Tangkapan Kabur"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Tangkapan Gagal"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Tangkapan Berhasil"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Lure"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incense"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Gagal untuk memulai WebSocketServer di port: {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Waktu aktif {1} - Lvl: {2} | EXP/H: {3:n0} | P/H: {4:n0} | Stardust: {5:n0} | Ditransfer: {6:n0} | Didaur ulang: {7:n0}"
+    },
+    {
+      "Key": "profileStatsTemplateString",
+      "Value":
+        "----- LVL {0} | {1} ----- \n EXP: {2}/{3} \n Pokemon yang ditangkap: {4} \n Pokemon yang ditransfer: {5} \n Pokestop yang dikunjungi: {6} \n Telur yang ditetaskan: {6} \n Pokemon yang dievolusikan: {7} \n Catatan Pokedex: {8} \n Sudah berjalan: {9} KM \n Pokemon: {11}/{12}"
+    },
+    {
+      "Key": "showPokeTemplate",
+      "Value": "\n CP: {0} | IV: {1}% | Nama: {2}"
+    },
+    {
+      "Key": "helpTemplate",
+      "Value":
+        "Perintah: \n \n /top <cp/iv> <jumlah> - Menampilkan Pokemon tertinggimu.. \n /all <cp/iv> - Menampilkan semua Pokemon-mu. \n /profile - Menampilkan profilmu. \n /loc - Menampilkan lokasimu. \n /items - Menampilkan barangmu. \n /status - Menampilkan status bot-mu. \n /pokedex - Menampilkan Pokedex-mu"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (level berikutnya {1} jam {2} menit | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Program akan berlanjut setelah kamu menekan tombol..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Karena kamu menggunakan keamanan ganda Google, kamu perlu memasukkan kata kunci khusus aplikasi di auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Membuka Google App-Passwords. Mohon buat kata kunci aplikasi baru (gunakan \"lainnya\" sebagai jenis perangkat)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Pastikan kamu memasukkan email dan password yang benar."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Server Google mungkin sedang mati, harap sabar dan jalankan bot-nya lain waktu."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Kamu harus mengisi GoogleUsername dan GooglePassword di auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Kamu harus mengisi PtcUsername dan PtcPassword di auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "Mencari Pokemon untuk dibidik di koordinat: {0}"
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Membidik {0} Nilai IV: {1} di koordinat: {2}"
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Tidak ditemukan Pokemon di koordinat tersebut!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Tidak cukup Pokeball untuk memulai bidikan! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "GERAKAN1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "GERAKAN2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Permen"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Koneksi ditolak. Alamat IP kamu mungkin sudah diblokir oleh Niantic. Keluar..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Tidak ada telur yang tersedia"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Lucky Egg sudah aktif"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Sebuah Lucky Egg terpakai"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Lucky Egg di inventaris: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Incense tidak tersedia"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Incense sudah aktif"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Incense di inventaris: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Sebuah incense terpakai"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Jumlah Pokemon: Terlihat: {0}/151, Tertangkap: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "{0} Pokemon berpotensi untuk berevolusi"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Peningkatan level Pokemon gagal karena tidak cukup bahan"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Server bidikan offline. Melewati..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Ini adalah pertama kalinya kamu menjalankan aplikasi, apakah kamu ingin memulai pengaturan? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Apakah kamu ingin mengganti bahasa bawaan? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Mohon masukkan kode bahasa baru"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Kode bahasa yang diterapkan: {0}"
+    },
+    {
+      "Key": "PromptError",
+      "Value": "[MASUKAN ERROR] Terdapat error pada masukan, mohon masukkan '{0}' atau '{1}'"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value":
+        "Berkas \"config.json\" dan \"auth.json\" secara otomatis dibuat dan harus dilengkapi sebelum melanjutkan INFO: ubah berkas tersebut dalam folder CONFIG"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Mengatur AKUN PENGGUNA baru ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Mohon pilih tipe akun: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Tipe akun yang dipilih: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[ERROR] jenis akun yang salah dimasukkan, mohon pilih '{0}' atau '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Mohon masukkan nama pengguna atau email"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Nama pengguna yang diterima: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Mohon masukkan password"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Password yang diterima: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Akun Pengguna Selesai ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Apakah kamu ingin mengatur lokasi bawaan yang baru? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Lokasi bawaan diterapkan"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Mengatur Lokasi Bawaan ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[ERROR] Tolong hanya masukkan ANGKA, contohnya: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Mohon masukkan lintang (klik kanan untuk menempelkan)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Lintang yang diterima: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Mohon masukkan bujur (klik kanan untuk menempelkan)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Bujur yang diterima: {0}"
+    },
+    {
+      "Key": "softBanBypassed",
+      "Value": "Berhasil dilewati!"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### PENGATURAN KONFIGURASI SELESAI ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Tertangkap di Pokedex  --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Nama: {1} | Tertangkap: {2} | Ditemukan: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Dibutuhkan di Pokedex --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Nama: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.it.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.it.json
new file mode 100644
index 0000000..65817c8
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.it.json
@@ -0,0 +1,1879 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "MegaBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "AuthType sconosciuto nel file config.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Le credenziali utente inserite non sono valide. Login fallito"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Sei al di fuori dell'area definita! Ritorno all'inizio (distante {0}m) in 5 secondi. Il file LastPos.ini è corretto?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Nessun PokeStop disponibile nella tua area. La distanza massima è troppo piccola?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nome: {0} PE: {1}, Gemme: {2}, Oggetti: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Raccolta oggetti fallita, possibile softban. Unban in: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Camminando verso il Pokestop: {0} ({1}m) ({2} secondi)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Loggato come {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Usato un Aroma, rimanenti: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Usato un Fortunuovo, rimanenti: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} evoluto con successo per {1}pe"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Fallita {0}. Il risultato e' stato {1}, evoluzione di {2} interrotta"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- PL: {1}  IV: {2}%   [Migliore PL: {3}  IV: {4}%] (Caramelle: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} PL: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | con una {9} ({10} rimanenti). | {11} PE guadagnati | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} PL: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | con una {9} ({10} rimanenti). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Nessuna Pokéball rimasta - Perso {0} con PL {1}"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "In attesa di catturare ancora {1} Pokemon per evolverne {0}! ({2}/{3} per il {4}% dell'inventario)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "Fortunuovo non sarà mai usato con UseLuckyEggsMinPokemonAmount impostato a {0}, impostalo a <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Cattura ancora {0} Pokémon per usare un Fortunuovo!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Usata {0} | {1} rimanenti"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Baccalampon"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Tentativo #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Caramelle: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Dati non gestiti nel file GPX, verrà ignorato."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémon"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfetto"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "nome"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "sconosciuto"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Mostra PL più alti"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Mostra IV più alti"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Mostra livelli più alti"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Controlla che Lat e Lng siano corretti. Chiudi il programma se non lo sono! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Inserimento Uovo nell'Incubatrice: {0:0.00}km rimanenti"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Aggiornamento stato Incubatrice: {0:0.00}km rimanenti"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "{0} e' uscito dall'Uovo"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERRORE"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATTENZIONE"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKÈSTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNIPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RICICLO"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRASFERIMENTO"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUZIONE"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BACCA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "UOVO"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "AGGIORNAMENTO"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Log in tramite {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "I Server PTC sono offline o le tue credenziali sono sbagliate. Prova ad accedere con Google"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Prossimo tentativo in {0} secondi..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Account non verificato! Uscita in corso..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Apertura pagina Dispositivi Google nel browser. Incolla il codice con CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Impossibile copiare negli appunti, procedi manualmente"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Vai a {0} e inserisci {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Spostamenti realistici rilevati, verra' usato UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Spostamenti non realistici in {0}, verra' usato l'ultimo salvataggio del file LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Le coordinate nel file \"LastPos.ini\" non sono valide, verranno usate le coordinate di default"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Perfetto! Hai gia' la versione più aggiornata {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Aggiornamento automatico disabilitato. Scarica l'ultima versione da: {0}\n"
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Download ed installazione aggiornamento in corso..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Download ultima versione completato."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Estrazione file completata."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "Trasferimento del file config nella nuova versione completato."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Aggiornamento completato, ora puoi chiudere questa finestra."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Ricerca Pokémon attirati da Aroma..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Ricerca Pokémon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Ricerca Pokémon attirati da Moduli Esca..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Saltato {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Non hai piu' Pokeball, impossibile catturare altri Pokemon!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokéball: {0} | Megaball: {1} | Ultraball: {2} | Masterball: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Pozioni: {0} | SuperPozioni: {1} | IperPozioni: {2} | PozioniMax: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Revitalizzanti: {0} | RevitalMax: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Bacche: {0} | Aromi: {1} | Fortunuovi: {2} | Esche: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Configurazione Non Valida] La somma degli oggetti (Pokeball+Pozioni+Revitalizzanti={0}) e' maggiore della capacita' massima dell'inventario ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Riciclo silenzioso..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Inventario Pokémon pieno. Trasferimento Pokémon..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Inventario Pokémon pieno. Trasferisci i Pokemon manualmente o imposta TransferDuplicatePokemon 'true' nelle impostazioni..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Inventario pieno, nessun oggetto raccolto!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Problema Incontrato: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Problema Incontrato: Pokémon attirato {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "La destinazione desiderata {0}, {1} e' troppo lontana dalla posizione attuale {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) rinominato da {2} a {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% perfetto {1} (PL {2}) *tra i preferiti*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filtro Pokémon da ignorare] - Ignorato {0} come definito nelle impostazioni"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Tentativo di cattura"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Errore di cattura"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Uscito"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Fuggito"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Mancato"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Catturato"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Selvatico"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Modulo Esca"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Aroma"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Avvio del Server WebSocket fallito sulla porta : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Tempo di Esecuzione {1} - Lvl: {2} | PE/H: {3:0} | PKMN/H: {4:0} | Polvere di Stella: {5:0} | Trasferiti: {6:0} | Riciclati: {7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (prossimo lvl in {1}h {2}m | {3}/{4} PE)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Premi un tasto per continuare..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Dato che hai la Verifica in Due Passaggi di Google attivata, devi inserire una Password Specifica per l'app nel file auth.json "
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "Apertura di Google App-Password. Crea una nuova Password App (usa Altro come Dispositivo)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Controlla di aver inserito Email e Password correttamente"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "I server di Google sono malfunzionanti. Riprova più tardi."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Devi riempire i campi GoogleUsername e GooglePassword nel file auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Devi riempire i campi PtcUsername e PtcPassword nel file auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Sniper] Scansione Pokémon per lo snipe a {0}.."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Sniping un {0} con {1} IV a {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Nessun Pokémon trovato per lo sniping!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Pokéball insufficienti per iniziare lo sniping! ({0}/{1})"
+    },
+    {
+      "Key": "DisplayHighestMove1Header",
+      "Value": "Mossa1"
+    },
+    {
+      "Key": "DisplayHighestMove2Header",
+      "Value": "Mossa2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Caramelle"
+    },
+    {
+      "Key": "iPBannedError",
+      "Value": "Connessione rifiutata. IP probabilmente bannato da Niantic. Uscita..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Nessun Uovo disponibile"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Fortunuovo già attivo"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Usato Fortunuovo"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Fortunuovi in Inventario: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Nessun aroma disponibile"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Aroma già attivo"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Aroma in inventario: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Usato aroma"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Pokémon Visti: {0}/151, Pokémon catturati: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Evoluzioni] Potenziali Evoluzioni: {}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Potenziamento Pokemon Fallito: Risorse Insufficienti"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Il server di Sniping è offline. Saltando..."
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "Tuonoshock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "Attacco Rapido"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Graffio"
+    },
+    {
+      "Key": "ember",
+      "Value": "Braciere"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "Frustata"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Azione"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "Foglielama"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "Riduttore"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "Pistolacqua"
+    },
+    {
+      "Key": "bite",
+      "Value": "Morso"
+    },
+    {
+      "Key": "pound",
+      "Value": "Botta"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "Doppiasberla"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Avvolgibotta"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "Iper Raggio"
+    },
+    {
+      "Key": "lick",
+      "Value": "Leccata"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "Neropulsar"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Fango"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "Ferrartigli"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "Presa"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "Ruotafuoco"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megacorno"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "Attacco D'Ala"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Lanciafiamme"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "Sbigoattacco"
+    },
+    {
+      "Key": "dig",
+      "Value": "Fossa"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "Colpo Basso"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "Incrocolpo"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "Psicotaglio"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psicoraggio"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Terremoto"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "Pietrataglio"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "Gelopugno"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "Cuorestampo"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Scarica"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "Cannonflash"
+    },
+    {
+      "Key": "peck",
+      "Value": "Beccata"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "Perforbecco"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "Geloraggio"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Bora"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "Eterelama"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "Ondacalda"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Doppio Ago"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "Velenpuntura"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "Aeroassalto"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "Giravvita"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "Fiotempesta"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "Megassorbimento"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "Ronzio"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "Velenodenti"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "Nottesferza"
+    },
+    {
+      "Key": "slash",
+      "Value": "Lacerazione"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "Bollaraggio"
+    },
+    {
+      "Key": "submission",
+      "Value": "Sottomissione"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "Colpokarate"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "Calciobasso"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "Acquagetto"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "Idrondata"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "Semebomba"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psiscoshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "Sassata"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "Forzantica"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "Rocciotomba"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "Frana"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "Gemmoforza"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "Furtivombra"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "Pugnodombra"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "Ombratigli"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "Funestovento"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "Palla Ombra"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "Pugnoscarica"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "Bombagnete"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "Alacciaio"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "Metaltestata"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "Caricaparabola"
+    },
+    {
+      "Key": "spark",
+      "Value": "Scintilla"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "Tuonopugno"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Tuono"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Fulmine"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "Dragospiro"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "Dragopulsar"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "Dragartigli"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "Incantavoce"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "Assorbibacio"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "Magibrillio"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Forza Lunare"
+    },
+    {
+      "Key": "playRough",
+      "Value": "Carineria"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "Velenocroce"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "Fangobomba"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "Fangonda"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "Sporcolancio"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "Colpodifango"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "Ossoclava"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Battiterra"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "Pantanobomba"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "Tagliofuria"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "Coleomorso"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "Segnoraggio"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "Forbice X"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "Nitrocarica"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "Pirolancio"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "Fuocobomba"
+    },
+    {
+      "Key": "brine",
+      "Value": "Acquadisale"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "Idropulsar"
+    },
+    {
+      "Key": "scald",
+      "Value": "Idrovampata"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "Idropompa"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psichico"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psicobotta"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "Geloscheggia"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "Ventogelato"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "Alitogelido"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Assorbimento"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "Gigassorbimento"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "Fuocopugno"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "Solarraggio"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "Fendifoglia"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "Vigorcolpo"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acido"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "Aerasoio"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Tifone"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "Breccia"
+    },
+    {
+      "Key": "cut",
+      "Value": "Taglio"
+    },
+    {
+      "Key": "swift",
+      "Value": "Comete"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "Incornata"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Pestone"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Bottintesta"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "Iperzanna"
+    },
+    {
+      "Key": "slam",
+      "Value": "Schianto"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "Corposcontro"
+    },
+    {
+      "Key": "rest",
+      "Value": "Riposo"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Scontro"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "IdrovampataBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "IdropompaBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "AvvolgibottaGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "AvvolgibottaPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "TagliofuriaVeloce"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "ColeomorsoVeloce"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "MorsoVeloce"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SbigoattaccoVeloce"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragospiroVeloce"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "TuonoshockVeloce"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "ScintillaVeloce"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "ColpoBassoVeloce"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "ColpokarateVeloce"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "BraciereVeloce"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "AttaccodD'AlaVeloce"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "BeccataVeloce"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LeccataVeloce"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "OmbrartigliVeloce"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "FrustataVeloce"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "FoglielamaVeloce"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "ColpodifangoVeloce"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "GeloscheggiaVeloce"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "AlitogelidoVeloce"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "AttaccoRapidoVeloce"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "GraffioVeloce"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "AzioneVeloce"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "BottaVeloce"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "TaglioVeloce"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "VelenpunturaVeloce"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidoVeloce"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsicotaglioVeloce"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "SassataVeloce"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "FerrartigliVeloce"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "PugnoscaricaVeloce"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "PistolacquaVeloce"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashVeloce"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "PistolacquaVeloceBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "FangosberlaVeloce"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "CozzataZenVeloce"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusioneVeloce"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "VelenospinaVeloce"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BollaVeloce"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FintoattaccoVeloce"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "AlacciaioVeloce"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "RogodentiVeloce"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "SpaccarocciaVeloce"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.lt.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.lt.json
new file mode 100644
index 0000000..616897d
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.lt.json
@@ -0,0 +1,1841 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeRutulys"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "DidysisRutulys"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraRutulys"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterRutulys"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Nežinomas AuthType faile config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Jūs esate už savo nustatyto spindulio! Einama į pradžią (už {0}m) po 5 sekundžių. Ar jūsų LastPos.ini failas teisingas?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Nerasta naudotinų PokeStotelių jūsų zonoje. Gal jūsų maksimalus atstumas per mažas?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Pavadinimas: {0} XP: {1}, Gems: {2}, Daiktai: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Pavadinimas: {0} INFO: Paėmimas nepavyko, įmanomas softban. Atblokuojama po: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Atvykstama į Pokestotelę: {0} už ({1}m)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Žaidžiama už {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Panaudotas laimės kiaušinis, liko: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} sėkmingai už {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Nepavyko {0}. Rezultatas buvo {1}, stabdoma evoliucionuoti {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Geriausias CP: {3}  IV: {4}%] (Saldainiai: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Nelikę Pokerutulių - Praleidom {0} su {1} CP"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Panaudota {0} | {1} liko"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Razz Berry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Mėginimas #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Saldainiai: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Nenumatyti duomenys GPX faile, bandoma praleisti."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemonai"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "tobula"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "vardas"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Nežinoma"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Aukščiausi CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Aukščiausi IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Aukščiausias lygis"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Įsitikinkite kad platuma ir plokštuma teisingos. Išjunkite programą jeigu ne! Platuma: {0} Plokštuma: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Dedamas kiaušinis į inkubatorių: {0:0.00}km liko"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Inkubatoriaus atnaujinimas: {0:0.00}km liko"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Inkubuotas kiaušinis išsirito: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "KLAIDA"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "DĖMESIO"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOTELĖ"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FERMINIMAS"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNAIPERIS"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "IŠMETIMAS"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "ATIDUOTA"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLIUCIONUOTA"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "UOGA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "KIAUŠINIS"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ATNAUJINIMAS"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Jungiamasi naudojant {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC serveriai tikriausiai nusmigę ARBA jūsų prisijungimo duomenys neteisingi. Pabandykite google"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Bandoma dar kartą po {0} sekundžių..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Paskyra nepatvirtinta! Uždaroma..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Atidaromas Google Device puslapis. Prašome įterpti kodą naudodami CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Nepavyko nukopijuoti į iškarpinę, padarykite tai rankiniu būdu"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Eikit į: {0} ir įveskite {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Aptiktas realistiškas keliavimas, naudojama UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Nerealistiškas keliavimas {0}, naudojama paskutinę išsaugotą LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Koordinatės faile \"LastPos.ini\" klaidingos, naudojamos numatytosios koordinatės"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Puiku! Jūs jau turite naujausią versiją {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Automatiniai atnaujinimai išjungti. Atsisiųskite naujausią versiją iš: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Parsiunčiamas ir taikomas atnaujinimas..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Baigė siųsti naujausia Release versija..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Baigė išpakuoti failus..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Baigė perkelti jūsų konfigūraciją į naują versiją..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Atnaujinimas baigtas, dabar galite uždaryti šį langą."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Ieškoma smilkalų Pokemonų..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Ieškoma Pokemonų..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Ieškoma priviliotų Pokemonų..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Praleista {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Jūs neturite PokeRutulių inventoriuje, nebeįmanoma pagauti Pokemonų!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "PokeRutuliai: {0} | DidiejiRutuliai: {1} | UltraRutuliai: {2} | MasterRutuliai: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Potions: {0} | SuperPotions: {1} | HyperPotions: {2} | MaxPotions: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Revives: {0} | MaxRevives: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Berrys: {0} | Incense: {1} | LuckyEggs: {2} | Lures: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Konfigūracija neteisinga] Jūsų maksimalūs daiktai (rutuliai+gėrimai+prikėlimai={0}) viršija jūsų saugyklą ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Išmetama tyliai..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Pokemonų inventorius pilnas, atiduodami Pokemonai..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Pokemonų inventorius pilnas! Prašome atiduoti Pokemonus rankiniu būdu arba nustatyti TransferDuplicatePokemon į true nustatymuose..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Inventorius pilnas, nepaimta jokių daiktų!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Susitikimo problema: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Susitikimo problema: Priviliotas Pokemonas {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Jūsų norimas tikslas {0}, {1} yra per toli nuo jūsų dabartinės pozicijos {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokemonas {0} ({1}) pervadintas iš {2} į {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% tobulas {1} (CP {2}) *pažymėtas*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokemonų ignoravimo filtras] - Ignoruojama {0}, kaip nustatyta nustatymuose"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "GaudymoBandymas"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "GaudymoKlaida"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "GaudymasIštrūko"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "GaudymasPaspruko"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "GaudymasNepataikyta"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "GaudymasPavyko"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normalus"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Priviliotas"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Smilkalų"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Nepavyko paleisti WebSocketServer ant port'o : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - trukmė {1} - Lvl: {2} | EXP/H: {3:n0} | P/H: {4:n0} | Dulkės: {5:n0} | Atiduota: {6:n0} | Išmesta: {7:n0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Pakils už {1}h {2}m | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Programa tęs darbą po mygtuko paspaudimo..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Kadangi jūs įjungę Google Two Factor Auth, jums reikės nurodyti aplikacijai specifinį slaptažodį faile auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Atidaroma Google aplikacijų slaptažodžiai. Sukurkite naują aplikacijos slaptažodį (naudokite Other kaip Device)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Įsitikinkite kad įvedėte teisingą Email ir Slaptažodį."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Jums reikia užpildyti GoogleUsername ir GooglePassword faile auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Jums reikia užpildyti PtcUsername ir PtcPassword faile auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "Skenuojama snaipinami Pokemonai taške {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Snaipinamas {0} su {1} IV taške {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Nerasta pokemonų snaipinimui!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Nepakanka pokerutulių kad pradėt snaipinti! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "MOVE1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "MOVE2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Saldainiai"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Prisijungimas atmestas. Įmanoma, jog Niantic užblokavo jūsų IP. Išjungiama.."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Nėra kiaušinių"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Laimės kiaušinis jau aktyvus"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Nėra smilkalų"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Smilkalai jau aktyvūs"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Pokemonų matyta: {0}/151, Pokemonų pagauta: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Evoliucijos] Potencialios evoliucijos: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Pokemono pagerinimas nepavyko - nepakanka resursų"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.nl.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.nl.json
new file mode 100644
index 0000000..b98fa86
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.nl.json
@@ -0,0 +1,1479 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokéBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Authenticatie type is onbekend."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Buiten het ingestelde bereik beland! Terug naar beginpunt ({0}m weg) in 5 seconden. Klopt je LastPos.ini bestand?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Geen geschikte PokéStops gevonden in je omgeving. Is je bereik te klein?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "XP: {0}, Gems: {1}, Items: {2}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Items verzamelen mislukt, mogelijke softban. Opnieuw proberen: {0}/40"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} over ({1}m)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Ingelogd als {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Lucky Egg gebruikt, resterend: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} successvol voor {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Mislukt {0}. Resultaat was {1}, gestopt met evolueren {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Beste CP: {3}  IV: {4}%] (Candies: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Kans: {7}% | {8}m ver | met een {9} ({10} over). | {11} EXP verdiend | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Kans: {7}% | {8}m ver | met een {9} ({10} over). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Geen Pokéballen meer - Een {0} met CP {1} misgelopen "
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Poging #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Candies: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Ongehanteerde data in GPX bestand, poging tot overslaan."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfect"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "naam"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Top Pokémons met de Hoogste CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Top Perfecte Pokémons"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Top Pokémons met het hoogste Level"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Controleer of Lat & Lng kloppen. Sluit de bot af als dat niet zo is! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Ei in broedmachine stoppen: {0:0.00}km resterend"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Broedmachine status update: {0:0.00}km resterend"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.no.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.no.json
new file mode 100644
index 0000000..edb7c30
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.no.json
@@ -0,0 +1,1475 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Ukjent AuthType i config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Du er utenfor din definerte radius! Går tilbake til start ({0}m borte) om 5 sekund. Er LastPos.ini filen korrekt?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Fant ingen PokeStops i området. Er maximum distance satt for lavt?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "XP: {0}, Gems: {1}, Items: {2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{0} in ({1}m)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Spiller som {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Bruker Lucky Egg, gjenstående egg: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} Suksess for {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Mislyktes {0}. Resultat ble {1}, stopper evolving {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Beste CP: {3}  IV: {4}%] (Candies: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Sjanse: {7}% | {8}m dist | med en {9} ({10} igjen). | {11} EXP tjent | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Sjanse: {7}% | {8}m dist | med en {9} ({10} igjen). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Ingen Pokeballer - Vi gikk glipp av {0} med CP {1}"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Forsøk #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Candies: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Ubehandlet data i GPX fila, forsøker å hoppe over."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfekt"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "navn"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "DisplayHighestsCP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "DisplayHighestsPerfect"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "DisplayHighestsLevel"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Vær sikker på at Lat & Lng er korrekt. Exit programmet hvis ikke! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Putter egg i incubator: {0:0.00}km igjen"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Incubator oppdatering: {0:0.00}km igjen"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.pl.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.pl.json
new file mode 100644
index 0000000..10c6886
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.pl.json
@@ -0,0 +1,2012 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Nieznany 'AuthType' w pliku 'config.json'"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Dane uwierzytelniania wygasły. Logowanie nie powiodło się"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Znajdujesz się poza zdefiniowanym zasięgiem. Zostaniesz przeniesiony na start odległy o ({0}m) za 5 sekund. Sprawdź, czy plik 'LastPos.ini' jest poprawny"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Nie znaleziono PokeStopów w Twojej okolicy. Maksymalny zasięg jest za mały"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nazwa: {0}  [XP: {1}, Gemy: {2}, Itemy: {3}, Szerokość: {4}, Długość: {5}]"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value":
+        "Nazwa: {0}  INFO: Zbieranie przedmiotów nie powiodła się, prawdopodobnie masz SoftBana. Odbanowanie za: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Dotarcie do PokeStopu: {0} za ({1}m) ({2}s)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Grasz jako: {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Użyto Incensa, pozostało: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Użyto LuckyEgga, pozostało: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0}. Otrzymujesz {1}XP"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Niepowodzenie {0}. W rezultacie {1}, przestaję ewoluować {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%  [Najlepszy z CP: {3}  IV: {4}%] (Cukierki: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2}  [Lvl: {3} | CP: ({4}/{5}) | IV: {6}%] Szansa: {7}% | Odległy o: {8}m | Użyto: {9} (Pozostało {10}) | EXP: {11} | {12} | Szerokość: {13} Długość: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2}  [Lvl: {3} | CP: ({4}/{5}) | IV: {6}%] Szansa: {7}% | Odległy o: {8}m | Użyto: {9} (Pozostało {10}) | Szerokość: {11} Długość: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Brak Pokeballi - Utracono {0}  CP: {1}"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Pokemonów oczekujących na ewolucje: {0} | Możesz złapać ich jeszcze: {1} | {2}/{3} dla {4}% ekwipunku"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "LuckyEgg nie zostanie użyty, gdy wartość UseLuckyEggsMinPokemonAmount wynosi {0}, użyj <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Złap jeszcze {0} Pokemonów, żeby aktywowano LuckyEgga"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Użyto {0} | Pozostało: {1}"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "RazzBerry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} - Próba #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Cukierki: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Przetwarzanie pliku GPX nie powiodło się, następuje próba pominięcia..."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemony"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Nazwa"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Nieznane"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Najwyższy Poziom: CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Najwyższy Poziom: IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Najwyższy Level"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Upewnij się, że szerokość i długość geograficzna są poprawnie. Jeżeli nie to zamknij program  [Szerokość: {0} Długość: {1}]"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Umieszczono Jajko w inkubatorze: Pozostało {0:0.00}km"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "[Aktualizacja inkubatora] Pozostało: {0:0.00}km"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Jajko wykluło się! Otrzymujesz {0}  [Poziom: {1} CP: ({2}/{3}) IV: {4}%]"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "BŁĄD"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "UWAGA"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMIENIE"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNAJPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "USUNIĘTO"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "POKEMON"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "ODESŁANO"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "WYEWOLUOWAŁ"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "Berry"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "JAJKO"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "AKTUALIZACJA"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "NOWY"
+    },
+    {
+      "Key": "logEntrySoftBan",
+      "Value": "SOFTBAN"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Logujesz się przy użyciu: Konta {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "Serwery PTC najprawdopodobniej nie działają albo Twoje dane logowania są błędne. Spróbuj użyć konta Google"
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "Token logowania PTC wygasł. Ponowne logowanie..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "Otrzymano niepoprawną odpowiedź od serwera Niantic"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Ponawiam próbę za {0} sekund..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Konto niezweryfikowane! Zamykanie programu..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Otwieram stronę Urządzeń Google. Proszę wkleić kod używając CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Błąd przy kopiowaniu, zrób to ręcznie"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Udaj się do: {0} i wprowadź: {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Wykryto realistyczne podróżowanie. Załadowano ustawienia z 'config.json'"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Nierealistyczne podróżowanie na {0}, używam Twojej ostatniej pozycji z pliku 'LastPos.ini'"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Współrzędne w pliku 'LastPos.ini' są niepoprawne, wczytywanie ustawień domyślnych"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Wspaniale! Twoja wersja programu NecroBot jest aktualna! (v{0})"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Automatyczna aktualizacja jest wyłączona. Pobierz najnowszą wersję z: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Pobieranie i instalacja aktualizacji..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Ukończono pobieranie najnowszej wersji..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Zakończono wypakowywanie plików..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Zakończono przenoszenie Twoich ustawień do nowej wersji programu..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Aktualizacja zakończona, możesz teraz zamknąć okno"
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Poszukuję Pokemonów zwabionych Incensem..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Poszukuję Pokemonów..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Poszukuję Pokemonów zwabionych Lurem..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Pominięto {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Brak Pokeballi w ekwipunku, nie możesz złapać więcej Pokemonów"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokeballe: {0} | Greatballe: {1} | Ultraballe: {2} | Masterballe: {3}"
+    },
+    {
+      "Key": "currentPotionInv",
+      "Value": "Potiony: {0} | SuperPotiony: {1} | HyperPotiony: {2} | MaxPotiony: {3}"
+    },
+    {
+      "Key": "currentReviveInv",
+      "Value": "Revivy: {0} | MaxRevivy: {1}"
+    },
+    {
+      "Key": "currentMiscItemInv",
+      "Value": "RazzBerry: {0} | Incensy: {1} | LuckyEggi: {2} | Lury: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "Ustawiona przez Ciebie dopuszczalna ilość itemów w ekwipunku (PokeBalle+Potiony+Revivy={0}) przekracza maksymalną jego pojemność, która wynosi: ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Ciche przetwarzanie..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Posiadasz maksymalną ilość pokemonów. Trwa transferowanie..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Posiadasz maksymalną ilość pokemonów, prześlij pokemony ręcznie albo zmień w ustawieniach wartość TransferDuplicatePokemon na true..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Twój ekwipunek jest pełny, nie zebrano przedmiotów"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Napotkano problem: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Napotkano problem: Lure Pokemonów {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Punkt docelowy {0}, {1} jest zbyt daleko od Twojej obecnej pozycji {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Nazwa Pokemona {0} została zmieniona z {2} na {3}"
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "Dodano do Ulubionych: {1}  [IV: {0}% | CP: {2}]"
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filtr Ignorowania Pokemonów] - Ignorowanie {0} według wykrytych ustawień"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Próba Złapania"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Błąd Łapania"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Uciekł"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Uciekł"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Chybiono"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Złapany"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normalny"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Lure"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incense"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Uruchamianie WebSocketServer na porcie: {0} zakończone niepowodzeniem"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Czas działania {1} - Poziom: {2} | XP na godzinę: {3:n0} | Pokemony na godzinę: {4:n0} | Stardust: {5:n0} | Przesłano: {6:n0} | Usunięto: {7:n0}"
+    },
+    {
+      "Key": "profileStatsTemplateString",
+      "Value":
+        "----- LVL: {0} | {1} ----- \n Doświadczenie: {2}/{3} \n Złapanych Pokemonów: {4} \n Umieszczonych Pokemonów: {5} \n Odwiedzonych Pokestopów: {6} \n Wyklutych Jajek: {6} \n Wyewoluowanych Pokemonów: {7} \n Pokemonów w Pokedex: {8} \n Przebytych KM: {9}"
+    },
+    {
+      "Key": "showPokeTemplate",
+      "Value": "\n CP: {0} | Nazwa: {1}"
+    },
+    {
+      "Key": "helpTemplate",
+      "Value":
+        "Komendy: \n \n /top <wartość> - Wyświetla top Twoich Pokemonów. \n /all - Wyświetla wszystkie posiadane Pokemony. \n /profile - Wyświetla Twój profil. \n /loc - Pokazuje Twoją lokalizację. \n /items - Wyświetla Twoje itemy"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Następny poziom za {1}h {2}m) | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Trwa wznawianie programu. Naciśnij dowolny klawisz..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Na Twoim koncie Google aktywna jest weryfikacja dwuetapowa, będziesz musiał wprowadzić nowe hasło w 'auth.json'"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "Otwieram hasła aplikacji Google. Proszę utworzyć nowe hasło aplikacji (Wybierz aplikację: Inna)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Upewnij się, że wpisany przez Ciebie Email i Hasło są prawidłowe"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Serwery Google są prawdopodobnie wyłączone, proszę uzbroić się w cierpliwość i uruchomić bota później"
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Wprowadź GoogleUsername oraz GooglePassword w 'auth.json'"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Wprowadź PtcUsername oraz PtcPassword w 'auth.json'"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "Skanowanie w poszukiwaniu Pokemona [{0}]..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Mam na celowniku {0}  IV: {1} [{2}]..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Nie znaleziono żadnego Pokemona"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Zbyt mało Pokeballi ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "ATAK 1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "ATAK 2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Cukierki"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Połączenie odrzucone. Twoje IP może być na czarnej liście Niantic. Zamykanie..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Brak LuckyEggów"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "LuckyEgg jest aktywny"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Aktywowano LuckyEgga"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "LuckyEggów w ekwipunku: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Brak Incensów"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Incense jest aktywny"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Incensów w ekwipunku: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Aktywowano Incensa"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Ilość widzianych Pokemonów: {0}/151 | Ilość złapanych Pokemonów: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "Pokemonów oczekujących na ewolucje: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Ulepszanie Pokemona nie powiodło się. Zbyt mało zasobów"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Serwer jest wyłączony. Pomijam..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "To są Twoje pierwsze kroki. Chciałbyś rozpocząć początkową konfigurację? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Masz ochotę zmienić język domyślny? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Wpisz nowy kod języka"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Wybrany kod języka: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[ERROR] Błąd, podaj '{0}' lub '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Automatyczne generowanie plików 'config.json' i 'auth.json' z domyślnymi ustawieniami..."
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Tworzenie nowego konta użytkownika ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Proszę wybrać typ konta: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Wybrany typ konta: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[BŁĄD] Wybrano nieprawidłowy typ konta, proszę wybrać '{0}' lub '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Proszę wprowadzić nazwę użytkownika:"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Zapisana nazwa użytkownika: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Proszę wprowadzić hasło:"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Zapisane hasło: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Konto użytkownika utworzone ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Chcesz ustawić nową lokalizacje domyślną? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Domyślna lokalizacja zastosowana"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Ustawienia domyślnej pozycji ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[BŁĄD] Proszę wpisywać tylko wartość. Na przykład: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Proszę wprowadzić Szerokość: (PPM, aby wkleić)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Zapisana Szerokość: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Proszę wprowadzić Długość: (PPM, aby wkleić)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Zapisana Długość: {0}"
+    },
+    {
+      "Key": "softBanBypassed",
+      "Value": "Zdejmowanie blokady zakończone sukcesem"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### Ustawianie configu zakończone ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranFemale"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranMale"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.pt-br.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.pt-br.json
new file mode 100644
index 0000000..66c5d7f
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.pt-br.json
@@ -0,0 +1,1978 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Poké Bola Normal"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Poké Bola Great"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Poké Bola Ultra"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Tipo de autenticação desconhecida em config.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "O Email e/ou A Senha esta(ao), o login falhou."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Você está fora do seu raio definido! Caminhando para o início ({0}m de distância) em 5 segundos. Suas coordenadas em LastPos.ini estão corretas?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Não foram encontradas PokeStops na sua área. Os Servidores (Google Login / PTC Login) Cairam?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nome: {0} XP: {1}, Gemas: {2}, Itens: {3}, Lat: {4}, Long: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Nome: {0} INFO: O looting falhou, possível softban. Desbanindo em: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Chegando ao Pokestop: {0} ({1}m) ({2} segundos)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Jogando como {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Incenso utilizado, restando: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "LuckyEgg utilizado, restando: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} com sucesso, +{1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Falhou {0}. O resultado foi {1}, parando evolução {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Melhor CP: {3}  IV: {4}%] (Doces: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m distancia | com uma {9} (restando {10}). | {11} EXP adquirida | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | com uma {9} (restando {10}). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Sem Pokébolas - Nós perdemos um(a) {0} com {1} de CP"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Esperando evoluir {0} Pokemon(s) até que mais {1} sejam capturados! ({2}/{3} para {4}% do inventário)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "Ovos da sorte nunca serão utilizados com a propriedade UseLuckyEggsMinPokemonAmount definida como {0}, em vez disso use um valor <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Capture mais {0} Pokemons para usar o Ovo da Sorte!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Utilizado {0} | Restando {1}"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Razz Berry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Tentativa #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Doces: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Dados não processados ​​no arquivo GPX, tentando ignorar."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "Perfeito"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Nome"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Desconhecido"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Exibindo maior CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Exibindo os mais perfeitos"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Exibindo os com level mais alto"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Verifique se a Latitude & Longitude estão corretas. O bot irá fechar caso contrário! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Colocando ovo na incubadora: restando {0:0.00}km"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Status da incubadora atualizado: restando {0:0.00}km"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "O ovo que estava na incubadora chocou: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERRO"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATENÇÃO"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKÉSTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMANDO"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "CAPTURA"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECICLANDO"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "POKÉMON"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFERIDO"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUÍDO"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "FRUTA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "OVO"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ATUALIZAÇÃO"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Entrando utilizando {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "Os Servidores PTC provavelmente estão offline ou suas credenciais são inválidas. Tente o Google."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Tentando novamente em {0} segundos..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Conta não verificada! Saindo..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Abrindo a página de aparelhos Google. Cole o código utilizando CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Não foi possível copiar para área de transferência, faça isso manualmente"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Vá para: {0} & e informe {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Movimentos realistas detectados, utilizando UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Sem movimentos realista em {0}, utilizando ultimas configurações salvas em LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "As coodernadas no arquivo \"LastPos.ini\" são inválidas, utilizando coordenadas padrão"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Perfeito! Você já possui a última Versão {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Atualizações automáticas desativadas. Obtenha a última versão em: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Baixando e aplicando a atualização..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Finalizado o download da última versão..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Terminando de descompactar arquivos..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Terminando de transferir suas configurações para a nova versão..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Atualização concluída, você já pode fechar essa janela agora."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Procurando por incenso de pokémon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Procurando por pokémon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Procurando por lure nos Pokéstops..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "{0} Ignorado"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Você não tem Pokebolas no seu inventário, nenhum Pokemon pode ser capturado!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokeballs: {0} | Greatballs: {1} | Ultraballs: {2} | Masterballs: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Potions: {0} | SuperPotions: {1} | HyperPotions: {2} | MaxPotions: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Revives: {0} | MaxRevives: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Berrys: {0} | Incense: {1} | LuckyEggs: {2} | Lures: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Configuração Inválida] Seu limite de itens combinados (pokebolas+poções+revives={0}) está acima da capacidade máxima de seu inventário ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Reciclando silenciosamente..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Inventário de Pokémons cheio. Transferindo pokémons..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "O inventário de Pokémons está cheio. Por favor transfira seus pokémons manualmente ou altere a propriedade TransferDuplicatePokemon para true nas configurações..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "O inventário está cheio, nenhum item pego!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Problema encontrado: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Problema encontrado: Atraindo pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Seu destino desejado de {0}, {1} está muito longe de sua posição atual {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) renomeado de {2} para {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% Perfeito {1} (CP {2}) *Favoritado*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filtro de pokémons ignorados] - Ignorando {0} como definido nas configurações"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Tentando Capturar"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Captura Falha"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Escapou"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Fugiu"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Falhou"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Capturado"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Atraído"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incenso"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Falha ao iniciar WebSocketServer na porta : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Sessão {1} - Lvl: {2} | EXP/H: {3:n0} | P/H: {4:n0} | Stardust: {5:n0} | Transferidos: {6:n0} | Reciclados: {7:n0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (próximo nível em {1}h {2}m | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Pressione enter para iníciar o bot..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Como você possui o Google Two Factor Auth ativado, você precisará informar o App Specific Password no arquivo auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "Abrindo Google App-Passwords. Faça um novo App Password (utilize Outro como Aparelho)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Verifique se você informou o e-mail e senha corretamente."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value":
+        "Você precisa informar o GoogleUsername e GooglePassword no arquivo auth.json! Nota : Após o Update 0.7.5 é nessesario colocar as informações em auth.json e authgoogle.json dependendo de como veio o bot, verifique se o seu bot possui os dois arquivos e em caso contrário preencha-os!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value":
+        "Você precisa informar o PtcUsername e PtcPassword no arquivo auth.json! Nota : Após o Update 0.7.5 é nessesario colocar as informações em auth.json e authptc.json dependendo de como veio o bot, verifique se o seu bot possui os dois arquivos e em caso contrário preencha-os!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Captura] Verificando por Pokémon em {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "[Captura] Tentando Capturar um {0} com {1} IV em {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Captura] Nenhum Pokémon encontrado!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Sem pokébolas suficientes para começar a captura! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "Ataque Básico"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "Ataque Especial"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Doce"
+    },
+    {
+      "Key": "iPBannedError",
+      "Value": "Conexão recusada. Seu IP pode estar na lista negra da Niantic. Saindo.."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Sem ovos disponíveis"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Ovo da Sorte já está ativo"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Ovo da Sorte utilizado"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Ovos da sorte no inventário: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Sem incenso disponível"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Incenso já ativo"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Incenso no Inventário: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Utilizado um Incenso"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Quantidade de Pokemons Vistos: {0}/151, Quantidade de Pokemons Capturados: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "Quantidade de Evoluções Possíveis: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Fortalecimento do Pokemon falhado, sem recursos suficientes."
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Servidor de Captura está offline. Pulando..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Essa é a primeira vez que inicia o programa, gostaria de começar a configuração agora? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Gostaria de mudar a idioma padrão? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Por favor insira o código do novo idioma"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Código do idioma aplicado: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[ERRO DE ENTRADA] Erro na entrada, por favor encolha entre '{0}' ou '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Arquivos Config/Auth serão gerados automaticamente e precisam ser completados antes de continuar"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Configurando nova conta de usuário ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Por favor escolha o tipo de conta: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Tipo de conta escolhida: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[ERRO] informado um tipo de conta inválido, por favor encolha entre '{0}' ou '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Por favor informe o nome de usuário"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Usuário aceito: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Por favor informe a senha"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Senha aceita: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Conta de Usuário Completa ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Gostaria de definir uma nova localização padrão? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Localização Padrão Aplicada"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Definir posição padrão ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[ERRO] Por favor informe apenas um VALOR, por exemplo: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Por favor informe a Latitude (Botão direito do mouse para colar)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Lattitude aceita: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Por favor informe a Longitude (Botão direito do mouse para colar)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Longitude aceita: {0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### CONFIGURAÇÃO COMPLETA ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasauro"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysauro"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusauro"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranFemea"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranMacho"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarpa"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "Choque Do Trovao"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "Ataque Rapido"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "Folha Navalha"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Lança Chamas"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.pt-pt.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.pt-pt.json
new file mode 100644
index 0000000..e4f8615
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.pt-pt.json
@@ -0,0 +1,1738 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Tipo de autenticação desconhecida no ficheiro config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Estás fora do raio definido! A caminhar para o início ({0}m) em 5 segundos. As coordenadas em LastPos.ini estão corretas?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Não foram encontradas PokeStops na tua área. A tua distância máxima não é muito pequena?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nome: {0} XP: {1}, Gemas: {2}, Itens: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Nome: {0} INFO: O drop falhou, softban possível. Desbloqueio em: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "A chegar ao Pokestop: {0} em ({1}m)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "A jogar como {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Ovo da Sorte utilizado, a restar: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} com sucesso para {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Falhou {0}. O resultado foi {1}, a parar a evolução {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Melhor CP: {3}  IV: {4}%] (Doces: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Sem Pokébolas - Perdemos um(a) {0} com {1} de CP"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Tentativa #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Doces: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Dados não processados ​​no ficheiro GPX, a ignorar."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfeito"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "nome"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Desconhecido"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Mostrar maior CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Mostrar os mais perfeitos"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Mostrar os com nível mais alto"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Verifica se a Lat & Lng estão corretas. O bot fechará caso contrário! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Colocando ovo na incubadora: restando {0:0.00}km"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Status da incubadora atualizado: restando {0:0.00}km"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "O ovo que estava na incubadora chocou: {0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERRO"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATENÇÃO"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMANDO"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECICLANDO"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "POKÉMON"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFERIDO"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUÍDO"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "FRUTA"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "OVO"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ATUALIZAÇÃO"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Entrando utilizando {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "Os Servidores PTC provavelmente estão offline ou as credenciais são inválidas. Experimenta o Google."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Tentando novamente em {0} segundos..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Conta não verificada! Saindo..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Abrindo a página de dispositivos Google. Cola o código utilizando CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Não foi possível copiar para área de transferência, faz isso manualmente!"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Vai para: {0} & e informa {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Movimentos realistas detectados, utilizando UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Sem movimentos realistas em {0}, utilizando as ultimas configurações salvas em LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "As coodernadas no ficheiro \"LastPos.ini\" são inválidas, utilizando as coordenadas por defeito"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Perfeito! Já possuis a última Versão {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Atualizações automáticas desativadas. Obtenha a última versão em: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Transferindo e aplicando a atualização..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Finalizando o download da última versão..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Terminando de descompactar os ficheiros..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Atualização concluída, já podes fechar esta janela."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Procurando por incenso de pokémon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Procurando por pokémon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Procurando por atrator de pokémons..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "{0} Ignorado"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Inventário de Pokémons cheio. Transferindo pokémons..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "O inventário de Pokémons está cheio. Transfere os pokémons manualmente ou altera TransferDuplicatePokemon para true nas configurações..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "O inventário está cheio, nenhum item dropado!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Problema encontrado: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Problema encontrado: Atraindo pokémon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "O destino desejado de {0}, {1} é muito longe da tua posição atual {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokémon {0} ({1}) renomeado de {2} para {3}."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Lista de pokémons ignorados] - Ignorando {0} como definido nas configurações"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Tentativa de Captura"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Erro de Captura"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Escapou"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Fugiu"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Falhou"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Capturado"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Atrair"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incenso"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Falha ao iniciar WebSocketServer na porta : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Sessão {1} - Lvl: {2} | EXP/H: {3:0} | P/H: {4:0} | Stardust: {5:0} | Transferidos: {6:0} | Reciclados: {7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (próximo nível em {1}h {2}m | {3}/{4} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Pressiona enter para dar início ao bot..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Como tens o Google Two Factor Auth ativado, precisarás de definir o App Specific Password no ficheiro auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "Abrindo Google App-Passwords. Faz um novo App Password (utilize Outro como Dispositivo)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Verifica se definiste um e-mail e uma palavra-passe correta."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Precisas de definir o GoogleUsername e GooglePassword no ficheiro auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Precisas de definir o PtcUsername e PtcPassword no ficheiro auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Sniper] Verificando por Snipeable Pokémon em {0}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Sniper] Nenhum Pokémon encontrado!"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.ro.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.ro.json
new file mode 100644
index 0000000..7c64159
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.ro.json
@@ -0,0 +1,2013 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "AuthType necunoscut în config.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Datele de conectare ale utilizatorului sunt invalide și autentificarea a eșuat."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value": "Ești în afara razei definite! Încep să merg ({0}metri distanță) în 5 secunde."
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Niciun pokestop utilizabil găsit în zona ta. Este distanța ta maximă prea mică?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Nume: {0} XP: {1} Gemuri: {2} Obiecte: {3} Lat: {4} Long: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Nume: {0} INFO: Colectare eșuată, posibil softban. Debanare în: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Călătoresc la pokestopul \"{0}\" ({1}m) ({2} secunde)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Te joci pe contul {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Incense folosit, timp rămas: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Ou norocos folosit, timp rămas : {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} cu succes pentru {1}XP"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Eșec la {0}. Rezultatul a fost {1}, se oprește evoluția {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Cel mai bun CP: {3} IV: {4}%] (Bomboane: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{1} x{0}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Nivel: {3} CP: ({4}/{5}) IV: {6}% | Șansă: {7}% | {8}m distanță | cu un {9} ({10} rămase) | {11} EXP câștigată | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Nivel: {3} CP: ({4}/{5}) IV: {6}% | Șansă: {7}% | {8}m distanță | cu un {9} ({10} rămase) | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Niciun pokeball - Am ratat un pokemon {0} cu CP {1}"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Se așteaptă evoluarea pokemonului {0} odată ce alți {1} sunt prinși! ({2}/{3} pentru inventar {4}%)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "Ouăle norocoase nu vor fi folosite niciodată cu UseLuckyEggsMinPokemonAmount setat pe {0}, folosește în schimb <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Prinde încă {0} pokemon(i) pentru a folosi un ou norocos!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "{0} folosită | {1} rămase"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Zmeură"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Încercarea #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Bomboane: {0}"
+    },
+    {
+      "Key": "unhandledGPXData",
+      "Value": "Date negestionate în fișierul GPX, se încearcă omiterea."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemoni"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfect"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "nume"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Necunoscut"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Clasament în funcție de CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Clasament în funcție de IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Clasament în funcție de nivel"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Asigură-te că latitudinea și longitudinea sunt corecte. Ieși din program în caz contrar! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Se pune oul în incubator: {0:0.00} km rămași"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Actualizare pentru statusului incubatorului: {0:0.00} km rămași"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Oul incubat a eclozat: {0} | Nivel: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "EROARE"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ATENȚIE"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMARE"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNIPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "RECICLARE"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "TRANSFERAT"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "EVOLUAT"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "ZMEURĂ"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "OU"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEPANARE"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ACTUALIZARE"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "NOU"
+    },
+    {
+      "Key": "logEntrySoftBan",
+      "Value": "SOFTBAN"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Se autentifică folosind {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "Serverele PTC sunt probabil căzute sau datele de conectare sunt greșite. Încearcă cu autentificarea Google."
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "Tokenul pentru autentificarea PTC a expirat. Se reautentifică..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "S-a primit un răspuns invalid de la serverul Niantic"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Se încearcă din nou în {0} secunde..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Contul nu este verificat! Ies din aplicație..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Se deschide pagina Google Device. Te rugăm să lipești codul folosind CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Nu se poate copia în clipboard, introdu codul manual"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Mergi la adresa {0} și introdu codul {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Călătorie realistică detectată, se folosesc setările implicite din interiorul config.json"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Călătorie nerealistică la {0}, se folosește ultima locație salvată din LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Coordonatele din fișierul \"LastPos.ini\" sunt invalide, se folosesc coordonatele implicite"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Perfect! Ai deja cea mai nouă versiune ({0})"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Autoactualizatorul este dezactivat. Obține cea mai nouă lansare de pe adresa: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Se descarcă și se aplică actualizarea..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "S-a încheiat descărcarea celei mai noi lansări..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "S-a încheiat despachetarea fișierelor..."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "S-a încheiat transferarea configului tău la noua versiune..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Actualizare încheiată, poți închide această fereastră acum."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Se caută pokemoni atrași de incense..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Se caută pokemoni..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Se caută pokemoni atrași de lure..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Omis {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Nu ai niciun pokeball în inventar, niciun pokemon nu mai poate fi prins!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokeballuri: {0} | Greatballuri: {1} | Ultraballuri: {2} | Masterballuri: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Poțiuni: {0} | Superpoțiuni: {1} | Hiperpoțiuni: {2} | Poțiuni de viață maximă: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Reînvieri: {0} | Reînvieri de viață maximă: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Zmeure: {0} | Incense-uri: {1} | Ouă norocoase: {2} | Lure-uri: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Configurație invalidă] Numărul maxim de obiecte combinate (bile+poțiuni+reînvieri={0}) este peste limita maximă de stocare a obiectelor ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Se reciclează în liniște..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Inventarul de pokemoni este plin. se transferă pokemoni..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Inventarul de pokemoni este plin. Te rugăm să tranferi pokemoni manual sau schimbă valoarea \"TransferDuplicatePokemon\" pe \"true\" din setări..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Inventarul este plin, niciun obiect colectat!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Problemă întâmpinată: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Problemă întâmpinată: Lure pentru pokemonul {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Destinația dorită {0}, {1} este prea departe de poziția ta actuală {2}, {3}."
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokemonul {0} ({1}) a fost redenumit din {2} în {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% perfect {1} (CP {2}) *pus ca favorit*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Filtru de ignorare a pokemonilor] - Se ignoră {0} precum este definit în setări"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Tentativă de capturare"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Eroare de capturare"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Captura a scăpat"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Captura a fugit"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Captură ratată"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Capturat cu succes"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Lure"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incense"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Eșec la pornirea WebSocket pe portul: {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Durată de funcționare {1} - Nivel: {2} | EXP/H: {3:0} | P/H: {4:0} | Praf de stele: {5:0} | Transferați: {6:0} | Reciclați: {7:0}"
+    },
+    {
+      "Key": "profileStatsTemplateString",
+      "Value":
+        "----- NIVEL {0} | {1} ----- \n Experiență: {2}/{3} \n Pokemoni prinși: {4} \n Pokemoni transferați pentru bomboane: {5} \n Pokestopuri vizitate: {6} \n Ouă eclozate: {7} \n Pokemoni evoluați: {8} \n Intrări în pokedex: {9} \n KM străbătuți: {10}  \n Pokemoni: {11}/{12}"
+    },
+    {
+      "Key": "showPokeTemplate",
+      "Value": "\n CP {0} | IV: {1}% | Nume: {2}"
+    },
+    {
+      "Key": "helpTemplate",
+      "Value":
+        "Comenzi: \n \n /top <cp/iv> <cantitate> - Afișează pokemonii tăi de top. \n /all <cp/iv> - Afișează toți pokemonii tăi. \n /profile - Afișează profilul tău. \n /loc - Afișează locația ta. \n /items - Afișează obiectele tale. \n /status - Afișează statusul botului."
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Avansezi la următorul nivel în {1}h {2}min | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Programul va continua după apăsarea tastei..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Din moment ce autentificarea Google cu doi factori este activată, va trebui să introduci o parolă specifică aplicației în auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Se deschid pagina de parole pentru aplicații Google. Te rugăm să creezi o parolă nouă pentru aplicație (alege Alta (Other) în Device)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Asigură-te că ai introdus e-mailul și parola corectă."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Serverele Google sunt probabil căzute. Te rugăm să ai răbdare și să pornești botul mai târziu."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Va trebui să completezi GoogleUsername și GooglePassword în auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Va trebui să completezi PtcUsername și PtcPassword în auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "Se scanează pentru pokemoni țintibili la {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Țintesc un pokemon {0} cu IV {1} la {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Nu s-a găsit niciun pokemon în cadrul locației, s-a despawnat pokemonul?"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Insuficiente pokeballuri pentru a începe țintirea! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "MIȘCARE1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "MIȘCARE2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Bomboane"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value":
+        "Conexiune refuzată. IP-ul tău s-ar putea să fi fost trecut pe lista neagră de Niantic. Se iese din aplicație.."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Niciun ou disponibil"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Ou norocos activ deja"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Ou norocos folosit"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Ouă norocoase în inventar: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Niciun incense disponibil"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Incense activ deja"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Incense-uri în inventar: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Folosit un incense"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Cantitatea de pokemoni văzută: {0}/151, cantitatea de pokemoni prinsă: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "Evoluții potențiale ale pokemonilor: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Upgradarea pokemonului a eșuat. Resurse insuficiente"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Serverul de țintire este offline. Se trece peste..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Aceasta este prima ta pornire, dorești să începi configurarea? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Dorești să schimbi limba implicită? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Te rugăm să introduci un cod nou al limbii"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Codul limbii aplicate: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[EROARE DE INTRODUCERE] Eroare cu introducerea, te rugăm să introduci '{0}' sau '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Fișierul config/auth generat automat și trebuie completat înainte de a continua"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Se configurează un nou CONT DE UTILIZATOR ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Te rugăm să selectezi tipul contului: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Tipul contului ales: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[EROARE] s-a trimis un tip incorect al contului, te rugăm să alegi '{0}' sau '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Te rugăm să introduci un nume de utilizator"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Nume de utilizator acceptat: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Te rugăm să introduci o parolă"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Parolă acceptată: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Contul de utilizator încheiat ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Dorești să configurezi o locație nouă implicită? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Locație implicită aplicată"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Configurarea poziției implicite ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[EROARE] Te rugăm să introduci doar o VALOARE, spre exemplu: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Te rugăm să introduci o latitudine (Click-dreapta pentru a lipi)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Latitudine acceptată: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Te rugăm să introduci o longitudine (Click-dreapta pentru a lipi)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Longitudine acceptată: {0}"
+    },
+    {
+      "Key": "softBanBypassed",
+      "Value": "Softban ocolit cu succes!"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### CONFIGURAREA CONFIGULUI ÎNCHEIATĂ ###"
+    },
+    {
+      "Key": "pokedexCatchedTelegram",
+      "Value": "--- Pokedex - Pokemoni prinși --- \n"
+    },
+    {
+      "Key": "pokedexPokemonCatchedTelegram",
+      "Value": "#{0} Nume: {1} | Prins: {2} | Întâlnit: {3} \n"
+    },
+    {
+      "Key": "pokedexNeededTelegram",
+      "Value": "--- Pokedex - Pokemoni necesari --- \n"
+    },
+    {
+      "Key": "pokedexPokemonNeededTelegram",
+      "Value": "#{0}# Nume: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranFemale"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranMale"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.ru_RU.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.ru_RU.json
new file mode 100644
index 0000000..f9b69f0
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.ru_RU.json
@@ -0,0 +1,1989 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Неизвестный AuthType в config.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Учетные данные пользователя недействительны, не удалось войти в систему."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Вы находитесь вне указанного радиуса! Возвращаемся к точке старта (дистанция {0}м) через 5 сек. Ваш LastPos.ini файл корректен?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "Не найдено активных PokeStop'ов в вашей зоне. Возможно указана слишком маленькая максимальная дистанция поиска в настройках?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "<{0}> XP:{1}, Gems:{2}, Items:{3}, Широта:{4}, Долгота:{5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Название: {0} ИНФО: Не удалось получить предметы, возможно софтбан. Попытка разбана: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Направляемся к <{0}>, дистанция ({1}м) ({2} сек.)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Играем за {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Использованы благовония, их осталось: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Использовано Lucky Egg, их осталось: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} – успешно, получено {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Неудачно: {0}. Успешно: {1}. Прекращено: {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t (CP:{1}|IV:{2}%) [у Лучшего (CP:{3}|IV:{4}%)] Конфет: {5}"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "=>({0})({1}) {2} {3}-УР (CР:{4}/{5}|IV:{6}%) c {7}% шансом на {8}м исп. {9} ({10} осталось). | {11} EXP получено | {12} | широта: {13} долгота: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "=>({0})({1}) {2} {3}-УР (CР:{4}/{5}|IV:{6}%) c {7}% шансом на {8}м исп. {9} ({10} осталось). | широта: {11} долгота: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Нет Pokeball'ов - Мы упустили {0} (CP:{1})"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Улучшения ждут {0} покемонов, собираем {1} оставшихся. ({2}/{3} на {4}% сумки)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "Lucky eggs will never be used with UseLuckyEggsMinPokemonAmount set to {0}, use <= {1} instead"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Необходимо поймать еще {0} покемонов, чтобы использовать Lucky Egg!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Использовано {0} | {1} осталось"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Razz Berry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0}, попытка #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Конфет: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Неизвестные данные в GPX файле, пробуем пропустить."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "ТОП покемонов"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "- IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "имя"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Неизвестный"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "ТОП по CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "ТОП по IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "ТОП по LV"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Убедитесь, что Широта и Долгота верны! Закройте программу, если это не так! Широта: {0} Долгота: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Кладем яйцо в инкубатор: {0:0.00}км осталось"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Статус инкубатора: {0:0.00}км осталось"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Из Яйца получили: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ОШИБКА"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "ВНИМАНИЕ"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "ИНФО"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "ФАРМ"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "СНАЙПЕР"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "УДАЛЯЕМ"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "ЛОВИМ"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "ОБМЕНИВАЕМ"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "ЭВОЛЮЦИЯ"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "ЯГОДА"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "ЯЙЦО"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "ОТЛАДКА"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ОБНОВЛЕНИЕ"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "НОВЫЙ"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Логинимся под аккаунтом {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "PTC сервера возможно не работают ИЛИ неверно указаны данные учетной записи. Попробуйте использовать логин от Google аккаунта"
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "Токен PTC истек. Перезаходим..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "Получен недопустимый ответ от сервера Niantic"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Пробуем снова через {0} сек..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Аккаунт не верифицирован! Выходим..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Открываем страницу Google Device. Пожалуйста, вставьте код используя CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Не удалось скопировать код в буфер обмена, сделайте это вручную"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Пройдите по ссылке: {0} и введите {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Обнаружено реалистичное перемещение, используем настройки по умолчанию в файле config.json"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Не реалистичное перемещение в {0}, используем последнее сохраненное в LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Координаты в файле \"LastPos.ini\" неверны, используем координаты по умолчанию"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Отлично! У Вас уже установлена последняя версия {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Автообновление отключено. Последний релиз можно скачать с: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Скачиваем и устанавливаем обновление..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Завершено скачивание нового релиза..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Завершена распаковка файлов..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Завершена передача вашей конфигурации в новую версию..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Обновление завершено, теперь вы можете закрыть это окно."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Ищем покемона привлеченного Благовониями..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Ищем покемона..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Ищем покемона привлеченного Люр Модулем..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Пропущен {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Кончились покеболы, больше нет возможности ловить покемонов."
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokeballs: {0} | Greatballs: {1} | Ultraballs: {2} | Masterballs: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "Potions: {0} | SuperPotions: {1} | HyperPotions: {2} | MaxPotions: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "Revives: {0} | MaxRevives: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "Berrys: {0} | Incense: {1} | LuckyEggs: {2} | Lures: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Ошибка Конфигурации] Общее количество выбранных предметов (шары+зелья+возр.={0}) превышает максимальное значение рюкзака ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Recycling Quietly..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Инвентарь полон. Передайте покемонов Профессору..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Инвентарь полон. Вручную передайте покемона Профессору или установите настройку TransferDuplicatePokemon как true ... "
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Инвентарь полон, не можем взять предметы!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Проблема с отловом: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Проблема с отловом: Приманенный ЛюрМодулем покемон {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Указанное местоназначение {0}, {1} слишком далеко от текущей позиции {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Покемон {0} ({1}) переименован из {2} в {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% IV {1} (CP {2}) добавлен в *избранное*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Фильтр игнора покемонов] - Игнорируем {0} как указано в настройках"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "попытка"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "ОШИБКА"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "ВЫБРАЛСЯ"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "СБЕЖАЛ"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "УПУСТИЛИ"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "УДАЧНО"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Обычный"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "на ЛюрМодуль"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "на Благовония"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Не удалось запустить WebSocketServer через порт : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value": "{0}-Онлайн {1}, Ур:{2}|XP/ч:{3:0}|П/ч:{4:0}|Пыль:{5:0}|Обменено:{6:0}|Удалено:{7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (след.через {1}ч{2}м|{3}/{4} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Нажмите любую клавишу для продолжения..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Т.к. у Вас включена двухфакторная аутентификация Google, Вам нужно поместить пароль Приложения Google в файл auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Открываем пароли Google App. Пожалуйста, создайте новый пароль приложения (выберите Other(Другое) в качестве устройства)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Убедитесь, что Вы ввели верные E-mail и Пароль от аккаунта!"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google servers are probably down, Please be patient and start the bot later."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Вам нужно заполнить настройки GoogleUsername и GooglePassword в auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Вам нужно заполнить настройки PtcUsername и PtcPassword в auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Снайпер] Ищем покемона для отлова в локации {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Sniping a {0} with {1} IV at {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Снайпер] Покемона для отлова не обнаружено!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Недостаточно Pokeball'ов для старта снайпинга! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "ПРИЁМ1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "ПРИЁМ2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Конфеты"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Соединение разорвано. Ваш IP может быть в черном списке Niantic. Выход.."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Нет доступных яиц"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Lucky Egg уже активно"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Использовано Lucky Egg"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Lucky Egg в инвентаре: {0}"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Нет доступных благовоний"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Благовония уже активны"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Благовоний в инвентаре: {0}"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Использованы благовония"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Покемонов изучено: {0}/151, Покемонов поймано: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Эволюции] Возможных эволюций: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Апгрейд покемона провален. Недостаточно ресурсов"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Sniping сервер не доступен. Пропускаем..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Это ваш первый старт, вы хотели бы начать установку? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Вы хотели бы сменить язык используемый по умолчанию? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Пожалуйста, введите новый код языка"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Применен код языка: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[ОШИБКА ВВОДА] Ошибка ввода, введите '{0}' или '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Конфигурационный файл генерируется автоматически и должен быть завершен, прежде чем продолжить"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Настройка новой УЧЕТНОЙ ЗАПИСИ ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Пожалуйста, выберите тип учетной записи: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Выбран тип аккаунта: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[ОШИБКА] передан неправильный тип учетной записи, выберите '{0}' или '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Пожалуйста, введите имя пользователя"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Принято имя пользователя: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Пожалуйста, введите пароль"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Принят пароль: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Учетная запись создана ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Вы хотите установить новые координаты используемые по умолчанию? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Приняты координаты используемые по умолчанию"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Настройка локации используемой по умолчанию ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[ОШИБКА] пожалуйста, введите значение, например: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Пожалуйста, введите широту (Щелкните правой кнопкой мыши, чтобы вставить)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Принята широта: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Пожалуйста, введите долготу (Щелкните правой кнопкой мыши, чтобы вставить)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Принята долгота: {0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### ЗАВВЕРШЕНА УСТАНОВКА CONFIG'a ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Бульбазавр"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ивизаавр"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Венузаавр"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Чармандер"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Чармелеон"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Чаризард"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Сквиртл"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Вартортл"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Бластойз"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Катерпи"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Метапод"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Баттерфри"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Видл"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Какуна"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Бидрилл"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Пиджи"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Пиджеотто"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Пиджит"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Раттата"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Ратикэйт"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Спироу"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Фироу"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Эканс"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Эрбок"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Пикачу"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Райчу"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Сэндшру"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Сэндслэш"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "Нидоран♀"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Нидорина"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Нидоквин"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "Нидоран♂"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Нидорино"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Нидокинг"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Клефейри"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Клефейбл"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Вульпикс"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Найнтейлс"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Джигглипуф"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Вигглитаф"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Зубат"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Голбат"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Оддиш"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Глум"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Вайлплум"
+    },
+    {
+      "Key": "paras",
+      "Value": "Парас"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Парасект"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Венонат"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Веномот"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Диглетт"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Дагтрио"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Мяут"
+    },
+    {
+      "Key": "persian",
+      "Value": "Персиан"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Псидак"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Голдак"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Манки"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Праймейп"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Гроулит"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Арканайн"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Поливаг"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Поливирл"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Поливрэт"
+    },
+    {
+      "Key": "abra",
+      "Value": "Абра"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Кадабра"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Алаказам"
+    },
+    {
+      "Key": "machop",
+      "Value": "Мачоп"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Мачок"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Мачемп"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Беллспраут"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Випинбелл"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Виктрибелл"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Тентакул"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Тентакруэль"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Джеодуд"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Гравелер"
+    },
+    {
+      "Key": "golem",
+      "Value": "Голем"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Понита"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Рапидаш"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Слоупок"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Слоубро"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Магремайт"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Магнетон"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Фарфетчд"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Додуо"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Додрио"
+    },
+    {
+      "Key": "seel",
+      "Value": "Сил"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Дьюгонг"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Граймер"
+    },
+    {
+      "Key": "muk",
+      "Value": "Мак"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Шеллдер"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Клойстер"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Гастли"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Хонтер"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Генгар"
+    },
+    {
+      "Key": "onix",
+      "Value": "Оникс"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Дроузи"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Гипно"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Крабби"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Кинглер"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Волторб"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Електрод"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Экзеггут"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Экзеггутор"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Кубон"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Маровак"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Хитмонли"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Хитмончан"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Ликитунг"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Коффинг"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Визинг"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Райхорн"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Райдон"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Ченси"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Тангела"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Кангасхан"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Хорси"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Сидра"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Голдин"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Сикинг"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Старью"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Старми"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Мистер Майм"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Скайтер"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Джинкс"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Электробазз"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Магмар"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Пинсир"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Торос"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Мэджикарп"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Гаярдос"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Лапрас"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Дитто"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Иви"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Вапореон"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Джолтеон"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Флареон"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Поригон"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Оманайт"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Омастар"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Кабуто"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Кабутопс"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Аэродактиль"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Снорлакс"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Артикуно"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Запдос"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Молтрес"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Дратини"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Драгонэйр"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Драконит"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Мьюту"
+    },
+    {
+      "Key": "mew",
+      "Value": "Мью"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.sv.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.sv.json
new file mode 100644
index 0000000..ea2c43f
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.sv.json
@@ -0,0 +1,1740 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Okänd AuthType i config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Du är utanför din definierade radius! Återgår till start ({0}m bort) om 5 sekunder. Är din LastPos.ini fil korrekt?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "Inga oanvända PokeStops går att finna i ditt område. Är din maximala avgränsning satt till ett för litet område?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Namn: {0} XP: {1}, Juveler: {2}, Föremål: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Namn: {0} INFO: Ransack misslyckades, eventuellt har du blivit temporärbannad. Ban lyfter om: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Anländer till Pokestop: {0} om ({1}m)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Spelar som {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Använde Lucky Egg, {0} stycken kvar"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} utvecklades för {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Misslyckades med utveckling {0}. Resultat blev {1}, evolvering stoppad {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [Bäst CP: {3}  IV: {4}%] (Godis: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chans: {7}% | {8}m dist | med en {9} ({10} kvar). | {11} EXP intjänat | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chans: {7}% | {8}m dist | med en {9} ({10} kvar). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Inga pokebollar - Vi missade en {0} med CP {1}"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Försök #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Godis: {0}"
+    },
+    {
+      "Key": "unhandledGPXData",
+      "Value": "Ohanterligt data i GPX filen, försöker bortse."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "perfekt"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "namn"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "okänd"
+    },
+    {
+      "Key": "displayHighestsCPHeader",
+      "Value": "VisarHögstCP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "VisarHögstPerfekt"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "VisarHögstNivå"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Försäkra dig om att följander korrdinater är korrekta. Avsluta programmet om inte! Lat: {0} Lng: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Placerar ägg i inkubator: {0:0.00}km kvar"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Inkubator status: {0:0.00}km kvar"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Inkubator ägg har kläckts: {0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ERROR"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "OBS"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "INFO"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMAR"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "KASTAR"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "PKMN"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "ÖVERFÖRD"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "UTVECKLAD"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BÄR"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "ÄGG"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "DEBUG"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "UPPDATERING"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Loggar in med {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "PTC servrarna är förmodligen frånanslutna ELLER så är dina inloggningsuppgifter felaktiga. Försök med Google."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Försöker igen om {0} sekunder..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Kontot är inte verifierat! Avslutar..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Öppnar Googles Enhets-sida. Var vänlig klistra in koden med CTRL+V."
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Kunde inte kopiera till urklipp, försök manuellt."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Gå till: {0} och ange {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Känner av realitisk färd, använder UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Ej realistisk färd vid {0}, använder senaste sparade koordinater i LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Koordinater i \"LastPos.ini\" är ej giltiga, använder ursprungskoordinater"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Strålande! Du kör redan den senaste versionen {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Automatisk uppdatering är inaktiverad. Hämta senaste versionen här: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Laddar ned och tillämpar uppdatering..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Nedladdning av senaste versionen slutförd..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Uppackning av filer slutförd..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Uppdatering slutförd. Stäng fönstret."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Letar efter incence pokemon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Letar efter pokemon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Letar efter lurepokemon..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Skipppad {0}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Pokemonväskan är full. Överför pokemons..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Pokemonväskan är full överför pkemons manuellt eller sätt TransferDuplicatePokemon till true i inställningar ..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Väskan är full, inga föremål plockade!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Stötte på ett problem: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Stötte på ett problem: Lure pokemon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Din önskade destination {0}, {1} är för långt ifrån din nuvarande destination {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokemon {0} ({1}) omdöpt från {2} till {3}."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokemon ignoreringsfilter] - Ignorerar {0} som definierat i inställningar"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "FångstFörsök"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "FångstError"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "FångstFlykt"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "FångstFlykt"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "FångstMissade"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "FångstLyckades"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Lure"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Incence"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Misslyckades att starta WebSocketServer på port: {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Körtid {1} - Lvl: {2} | EXP/H: {3:0} | P/H: {4:0} | Stjärnstoff: {5:0} | Överförd: {6:0} | Återvunnet: {7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (nästa nivå om {1}h {2}m | {3}/{4} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Tryck på en tangent för att forstätta..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Du har Googles två-stegs autentisering aktiverad, du kommer behöva ange ett app-specifikt lösenord in i filen auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "Öppnar Googles App-lösenordsida. Vänligen skapa ett nytt applösenord (använd en annan enhet)."
+    },
+    {
+      "Key": "googleError",
+      "Value": "Försäkra dig om att du angivit korrekt epost och lösenord."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Googles servrar är antagligen nere. Var tålmodig och starta om boten senare."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Du kommer att behöva ange Google-användarnamn och Google-lösenord i filen auth.json"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Du kommer att behöva ange Ptc-användarnamn and Ptcptc-lösenord i filen auth.json"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Krypskytt] Letar efter Pokemons vid {0}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Krypskytt] Inga Pokemons funna!"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.th.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.th.json
new file mode 100644
index 0000000..fc772f4
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.th.json
@@ -0,0 +1,1459 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "ชนิดการยืนยัน (AuthType) ใน config.json ไม่ถูกต้อง"
+
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "ไอดีไม่ถูกต้อง การเข้าสู่ระบบล้มเหลว"
+
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "คุณอยู่นอกเหนือระยะทำการ กำลังเดินกลับจุดเริ่มต้น ({0} เมตร) ใน 5 วินาที จุดพิกัดใน LastPos.ini ถูกต้องหรือเปล่า?"
+
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "ไม่พบ PokeStop ที่สามารถใช้งานได้ในพื้นที่ ระยะทางสูงสุดที่ตั้งไว้น้อยไปหรือเปล่า?"
+
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "{0} ค่าประสบการณ์: {1}, อัญมณี: {2}, ไอเทม: {3}, Lat: {4}, Long: {5}"
+
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "{0} การเก็บของล้มเหลวอาจจะโดนระงับ ยกเลิกการระงับใน: {1}/{2}"
+
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "เดินทางไปสู่ PokeStop: {0} ({1}เมตร)"
+
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "กำลังเล่นโดย {0}"
+
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "ใช้งาน Incense, จำนวนคงเหลือ: {0}"
+
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "ใช้งาน Lucky Egg, จำนวนคงเหลือ: {0}"
+
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} สำเร็จ ได้รับค่าประสบการณ์ {1}หน่วย"
+
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "ล้มเหลว {0} ผลลัพธ์ {1}  หยุดการพัฒนาร่าง {2}"
+
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [CP ที่ดีที่สุด: {3}  IV: {4}%] (ลูกอม: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} เลเวล: {3} CP: ({4}/{5}) IV: {6}% | โอกาส: {7}% | ระยะ {8}m | จับด้วย a {9} (เหลือ {10} ชิ้น). | ได้รับค่าประสบการณ์ {11} หน่วย | {12} | ละติจูด: {13} ลองติจูด: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | โอกาส: {7}% | ระยะ {8}m | จับด้วย a {9} (เหลือ {10} ชิ้น). | ละติจูด: {11} ลองติจูด: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "ไม่มี Pokeballs - เราพลาดที่จะจับ {0} ซึ่งมี CP {1}"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} พยายามครั้งที่ #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "ลูกอม: {0}"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.tr.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.tr.json
new file mode 100644
index 0000000..6807518
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.tr.json
@@ -0,0 +1,2012 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "Poké Ball"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "Great Ball"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "Ultra Ball"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "Master Ball"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "\"auth.json\" dosyası içindeki \"AuthType\" değeri geçersiz."
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Giriş başarısız oldu. Kullanıcı bilgileri yanlış."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Mevcut konum, tanımlanan yarıçapın dışında kalıyor! 5 saniye sonra {0}m'lik mesafeye yürümeye başlanacak. \"LastPos.ini\" dosyasındaki mevcut konum doğru mu?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Bu alanda uygun PokéStop bulunamadı. \"MaxTravelDistanceInMeters\" değeri çok küçük olabilir."
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "İsim: {0} XP: {1}, Taşlar: {2}, Eşyalar: {3}, Enlem: {4}, Boylam: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "İsim: {0} BİLGİ: Eşya toplama başarısız oldu. Soft ban yemiş olabilirsiniz. Ban açılıyor: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "{1}m mesafedeki \"{0}\" PokéStop'una {2} saniye sonra varılacak."
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Kullanıcı Adı: {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Tütsü(Incense) kullanıldı. Kalan süre: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Şanslı Yumurta(Lucky Egg) kullanıldı. Kalan süre: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} | {1}XP kazanıldı."
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "{0} başarısız oldu. Sonuç {1}. {2} geliştirme(evolve) durduruluyor."
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP: {1}  IV: {2}%   [En iyi CP: {3}  IV: {4}%]   Şeker(Candy): {5}"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0} tane {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Yakalama Şansı: {7}% | Mesafe: {8}m | {9} kullanıldı ({10} tane kaldı) | {11}XP kazanıldı | {12} | Enlem: {13} Boylam: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Yakalama Şansı: {7}% | Mesafe: {8}m | {9} kullanıldı ({10} tane kaldı) | Enlem: {11} Boylam: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Poké topu kalmadı. - Kaçırılan Pokémon: {0} (CP: {1})"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value":
+        "{0} Pokémon geliştirilmeyi(evolve) bekliyor! {1} Pokémon daha yakalandığında Pokémon taşıma limitinin {4}%'i dolacak. ({2}/{3})"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value":
+        "\"UseLuckyEggsMinPokemonAmount\" değeri {0} olarak ayarlanmış ve çok yüksek. {1}'den küçük bir değer girilmesi lazım."
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Şanslı Yumurta(Lucky Egg) kullanılması için {0} Pokémon daha yakalanması gerekiyor."
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "{0} kullanıldı | {1} tane kaldı"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Böğürtlen(Razz Berry)"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} Deneme #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Şeker(Candy): {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "GPX dosyasında işlenemeyen veri bulundu. Atlanıyor."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokémonlar"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "İSİM"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "?"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Savaş Puanı(CP) En Yüksek Pokémonlar"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Mükemmelliği(IV) En Yüksek Pokémonlar"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Seviyesi(Level) En Yüksek Pokémonlar"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value":
+        "Varsayılan enlem(DefaultLatitude) ve boylam(DefaultLongitude) değerlerinin doğrulundan emin olun. Aksi halde programı kapatın! Enlem: {0} Boylam: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Kuluçka makinesine(Incubator) Yumurta(Egg) yerleştirildi: {0:0.00}km kaldı"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Kuluçka makinesi(Incubator) durum güncellemesi: {0:0.00}km kaldı"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value":
+        "Kuluçka makinesindeki(Incubator) Yumurta(Egg) çatladı: Çıkan Pokémon: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "HATA"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "DİKKAT"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "BİLGİ"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKÉSTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "GENEL"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "KESKİN NİŞANCI"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "ATILIYOR"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "POKÉMON"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "AKTARILDI"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "GELİŞTİRİLDİ"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BÖĞÜRTLEN"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "YUMURTA"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "HATA AYIKLAMA"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "GÜNCELLEME"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "YENİ"
+    },
+    {
+      "Key": "logEntrySoftBan",
+      "Value": "SOFT BAN"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "{0} hesabı ile oturum açılıyor..."
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC sunucuları yanıt vermiyor ya da kullanıcı bilgileri yanlış olabilir. Google hesabı ile deneyin."
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "PTC oturumu sonlandı. Tekrar oturum açılıyor..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "Niantic sunucuları tepki vermiyor."
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "{0} saniye içinde tekrar denenecek..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Hesap doğrulanmamış! Program kapatılıyor..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Google Device sayfası açılıyor. Doğrulama kodunu Ctrl+V kullanarak yapıştırın."
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Doğrulama kodu panoya kopyalanamadı. Lütfen kodu elle yazın."
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "\"{0}\" adresine gidin ve \"{1}\" kodunu girin."
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Gerçekçi gezinme algılandı. \"config.json\" içindeki varsayılan ayarlar kullanılıyor."
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value":
+        "{0} konumunda gerçekçi gezinme geçerli değil. \"LastPos.ini\" dosyasındaki son kaydedilen koordinatlar kullanılıyor."
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "\"LastPos.ini\" dosyasındaki koordinatlar geçerli değil. Varsayılan koordinatlar kullanılıyor."
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Harika! En güncel sürüm kullanılıyor. ({0})"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Otomatik güncelleme kapalı. Son sürümü indirmek için: {0}\n"
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Güncelleme indiriliyor..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "İndirme tamamlandı..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Güncelleme paketten çıkarılıyor..."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "Ayar dosyası(config.json) yeni sürüme aktarılıyor..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Güncelleme tamamlandı. Bu pencereyi kapatabilirsiniz."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Tütsü(Incense) Pokémon'u aranıyor..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Pokémon aranıyor..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Yem(Lure) Pokémon'u aranıyor..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "{0} atlandı."
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Poké topu kalmadı. Daha fazla Pokémon yakalanamaz!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Poké Ball: {0} | Great Ball: {1} | Ultra Ball: {2} | Master Ball: {3}"
+    },
+    {
+      "Key": "currentPotionInv",
+      "Value": "Potion: {0} | Super Potion: {1} | Hyper Potion: {2} | Max Potion: {3}"
+    },
+    {
+      "Key": "currentReviveInv",
+      "Value": "Revive: {0} | Max Revive: {1}"
+    },
+    {
+      "Key": "currentMiscItemInv",
+      "Value": "Razz Berry: {0} | Incense: {1} | Lucky Egg: {2} | Lure Module: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Geçersiz Ayar] Tüm eşyaların toplamı (Pokétopları+Potionlar+Revivelar={0}) taşınabilecek eşya limitinden ({1}) daha fazla olamaz."
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Sessizce atılıyor..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Taşınabilecek Pokémon limiti doldu! Pokémonlar aktarılıyor..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Taşınabilecek Pokémon limiti doldu! Pokémonları elle aktararak yer açın ya da ayarlardan \"TransferDuplicatePokemon\" değerini \"true\" yapın."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Taşınabilecek eşya limiti doldu! Hiçbir eşya alınamadı!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Pokémon yakalarken bir sorunla karşılaşıldı: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Yem(Lure) Pokémon'u yakalarken bir sorunla karşılaşıldı: {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Hedeflenen konum ({0}, {1}) geçerli konuma ({2}, {3}) çok uzak."
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "{0} ({1}) | Pokémon'un ismi değiştirildi. (\"{2}\" -> \"{3}\")"
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{1} IV:{0}% CP:{2} | Pokémon *favorilere* eklendi."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Pokémon Yakalamama Filtresi] - {0} ayarlarda belirtildiği üzere yakalanmadı."
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Yakalama: Deneme"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Yakalama: Hata"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Yakalama: Toptan Çıktı"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Yakalama: Kaçtı"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Yakalama: Iskalandı"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Yakalama: Başarılı"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Normal"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "Yem(Lure)"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "Tütsü(Incense)"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "webSocketServer {0} portunda çalıştırılamadı."
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Süre {1} - Seviye: {2} | XP/SA: {3:n0} | P/SA: {4:n0} | Stardust: {5:n0} | Aktarılan Pokémon: {6:n0} | Atılan Eşya: {7:n0}"
+    },
+    {
+      "Key": "profileStatsTemplateString",
+      "Value":
+        "----- SEVİYE {0} | {1} ----- \n Tecrübe(XP): {2}/{3} \n Yakalanan Pokémon: {4} \n Görülen Pokémon: {5} \n Ziyaret Edilen Pokéstop: {6} \n Çatlatılan Yumurta(Egg): {7} \n Geliştirilen(Evolve) Pokémon: {8} \n Pokédex Kayıtları: {9} \n Yürünen Mesafe: {10}km  \n Pokémonlar: {11}/{12}"
+    },
+    {
+      "Key": "showPokeTemplate",
+      "Value": "\n CP: {0} | IV: {1}% | İsim: {2}"
+    },
+    {
+      "Key": "helpTemplate",
+      "Value":
+        "Komutlar: \n \n /top <cp/iv> <sayı> - En iyi Pokémonları gösterir. \n /all <cp/iv> - Bütün Pokémonları gösterir. \n /profile - Profili gösterir. \n /loc - Konumu gösterir. \n /items - Eşyaları gösterir. \n /status - Bot durumunu gösterir."
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Sonraki seviye: {1}sa {2}dk | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Devam etmek için bir tuşa basın..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "\"Google İki Aşamalı Doğrulama\" etkinleştirilmiş olduğundan dolayı \"auth.json\" dosyasına uygulamaya özel şifrenin eklenmesi gerekiyor."
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "\"Google Uygulama Şifreleri\" sayfası açılıyor. Lütfen yeni bir uygulama şifresi oluşturun. (Aygıt olarak \"Diğer\" seçeneğini seçin.)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Google mail adresinizi ve şifrenizi doğru girdiğinizden emin olun."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Google sunucuları şu an yanıt vermiyor. Daha sonra tekrar deneyin."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "\"auth.json\" dosyasına GoogleUsername ve GooglePassword değerlerini girmeniz gerekiyor!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "\"auth.json\" dosyasına PtcUsername ve PtcPassword değerlerini girmeniz gerekiyor!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "{0} konumunda nişan alınacak Pokémon aranıyor..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "{2} konumunda nişan alınan Pokémon: {0} (IV: {1}%)"
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Bu konumda nişan alınacak Pokémon bulunamadı!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Keskin nişancılık için yeterli Poké topu yok! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMOVE1Header",
+      "Value": "SALDIRI-1"
+    },
+    {
+      "Key": "displayHighestMOVE2Header",
+      "Value": "SALDIRI-2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Şeker(Candy)"
+    },
+    {
+      "Key": "iPBannedError",
+      "Value": "Bağlantı sağlanamadı. IP'niz Niantic tarafından kara listeye alınmış olabilir. Program kapatılıyor..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Elinizde hiç Yumurta(Egg) kalmadı."
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Şanslı Yumurta(Lucky Egg) zaten aktif durumda."
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Şanslı Yumurta(Lucky Egg) kullanıldı."
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Elinizde kullanabileceğiniz {0} adet Şanslı Yumurta(Lucky Egg) var."
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Elinizde hiç Tütsü(Incense) kalmadı."
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Tütsü(Incense) zaten aktif durumda."
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Elinizde kullanabileceğiniz {0} adet Tütsü(Incense) var."
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Tütsü(Incense) kullanıldı."
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Görülen Pokémon Sayısı: {0}/151, Yakalanan Pokémon Sayısı: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Geliştirme] Potansiyel geliştirme(evolve) sayısı: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Elde yeterli kaynak olmadığı için Pokémon seviyesi (level up) artırılamadı."
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Keskin nişancı sunucusu çevrimdışı. Atlanıyor..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Programı ilk kez çalıştırıyorsunuz. Kuruluma başlamak ister misiniz? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Varsayılan dili değiştirmek ister misiniz? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Lütfen yeni bir dil kodu girin."
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Dil onaylandı: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[GİRDİ HATASI] Bir girdi hatası tespit edildi. Lütfen '{0}' ya da '{1}' girin."
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value":
+        "\"auth.json\" ve \"config.json\" dosyaları otomatik olarak oluşturuldu. Programı çalıştırmadan önce elle doldurmanız gerekiyor."
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### YENİ KULLANICI HESABI GİRİŞİ ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Bir kullanıcı hesap türü seçin: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Seçilen kullanıcı hesap türü: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[HATA] Girilen hesap türü yanlış. Lütfen '{0}' ya da '{1}' girin."
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Kullanıcı adınızı girin."
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Kullanıcı adı onaylandı: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Şifrenizi girin."
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Şifre onaylandı: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### KULLANICI HESABI GİRİŞİ TAMAMLANDI ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Varsayılan konumunuzu girmek ister misiniz? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Varsayılan konum girişi onaylandı."
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### VARSAYILAN KONUM GİRİŞİ ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[HATA] Lütfen sadece DEĞER girin (Örnek: {0})"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Lütfen bir enlem(latitude) girin. (Sağ tıklayıp yapıştırabilirsiniz.)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Enlem(lattitude) onaylandı: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Lütfen bir boylam(longitude) girin. (Sağ tıklayıp yapıştırabilirsiniz.)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Boylam(longitude) onaylandı: {0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### KURULUM TAMAMLANDI ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "Nidoran♀"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "Nidoran♂"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetch'd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.uk_UA.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.uk_UA.json
new file mode 100644
index 0000000..bf4cd8a
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.uk_UA.json
@@ -0,0 +1,1745 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Невідомий тип аутентифікації(AuthType) в config.json"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Ви перебуваєте поза зазначеного радіусу! Повертаємося до точки старту (дистанція {0} м) через 5 сек. Ваш LastPos.ini файл коректний?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value":
+        "Не знайдено активних покетстопів у вашій зоні. Можливо вказана занадто маленька максимальна дистанція пошуку в налаштуваннях?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "<{0}> XP: {1}, Gems: {2}, Items: {3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Назва: {0} ІНФО: Не вдалося отримати предмети, можливо софтбан. Розбан через: {1} / {2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Прямуємо до <{0}>, дистанція ({1} м)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Граємо за {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Використано щасливе яйце, їх залишилося: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "{0} успішно, отримано {1} xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Невдало: {0}. Успішно: {1}. Припинено: {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0} \t (CP: {1} | IV: {2}%) [у Кращого (CP: {3} | IV: {4}%)] Цукерок: {5}"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0} x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | {11} EXP earned | {12} | lat: {13} long: {14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Chance: {7}% | {8}m dist | with a {9} ({10} left). | lat: {11} long: {12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Немає Pokeball'ів - Ми упустили {0} (CP: {1})"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0}, спроба # {1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Цукерок: {0}"
+    },
+    {
+      "Key": "unhandledGPXData",
+      "Value": "Невідомі дані в GPX файлі, пробуємо пропустити."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "ТОП покемонів"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "- IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "Ім'я"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "Невідомий"
+    },
+    {
+      "Key": "displayHighestsCPHeader",
+      "Value": "ТОП по CP"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "ТОП по IV"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "ТОП по LV"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Переконайтеся, що широта і довгота вірні! Закрийте програму, якщо це не так! Широта: {0} Довгота: {1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Кладемо яйце в інкубатор: {0: 0.00} км залишилося"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Статус інкубатора: {0: 0.00} км залишилося"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "З Яйця отримали: {0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "ПОМИЛКА"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "УВАГА"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "ІНФО"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "ФАРМ"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "Видаляємо"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "Ловимо"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "Обмінюються"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "Еволюція"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "ЯГОДА"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "ЯЙЦЕ"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "ВІДЛАДКА"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "ОНОВЛЕННЯ"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Логін під аккаунтом {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value":
+        "PTC сервера можливо не працюють АБО невірно вказані дані облікового запису. Спробуйте використовувати логін від Google аккаунта"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Пробуємо знову через {0} сек ..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Обліковий запис не підтверджений! Виходимо ..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Відкриваємо сторінку Google Device. Будь ласка, вставте код використовуючи CTRL + V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Не вдалося скопіювати код в буфер обміну, зробіть це вручну"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Відкрийте посилання: {0} і введіть {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Виявлено реалістичне переміщення, використовуємо UserSettings.settings"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Не реалістичне переміщення в {0}, використовуємо останній файл LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Координати у файлі \" LastPos.ini \"невірні, використовуємо координати за умовчанням"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Дуже добре! У Вас вже встановлена ​​остання версія {0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Оновлення відключено. Останній реліз можна скачати з: {0} \n"
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Скачуємо і встановлюємо оновлення ..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Завершено скачування нового релізу ..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Завершено розпакування файлів ..."
+    },
+    {
+      "Key": "FinishedTransferringConfig",
+      "Value": "Закінчена передача конфігурації на нову версію ..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Оновлення завершено, тепер ви можете закрити це вікно."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Шукаємо покемона залученого ладаном ..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Шукаємо покемона ..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Шукаємо покемона залученого ЛюрМодулем ..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Пропущений {0}"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Інвентар повний. Передайте покемонів Професору ..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Інвентар повний. Вручну передайте покемона Професору або встановіть налаштування TransferDuplicatePokemon як true ..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Інвентар повний, не можемо взяти предмети!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Проблема з виловом: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Проблема з виловом: Приманений ЛюрМодулем покемон {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Зазначене місце призначення {0}, {1} занадто далеко від поточної позиції {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Покемон {0} ({1}) перейменований з {2} в {3}."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Фільтр ігнор покемонів] - Ігноруємо {0} як зазначено в настройках"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "спроба"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "ПОМИЛКА"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "вибрати"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "УТІК"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "упустити"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "ВДАЛО"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "Звичайний"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "на ЛюрМодуль"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "на Ладан"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Не вдалося запустити WebSocketServer через порт: {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} -Онлайн {1}, Рівень: {2} | XP / год: {3: 0} | П / год: {4: 0} | Пил: {5: 0} | обмін: {6: 0} | Вилучено: {7: 0} "
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (наст.через {1} г {2} хв | {3} / {4} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Натисніть будь-яку клавішу для продовження ..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value":
+        "Оскільки у Вас включена двухфакторная аутентифікація Google, Вам потрібно помістити пароль Програми Google в файл auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value":
+        "Відкриваємо паролі Google App. Будь ласка, створіть новий пароль додатка (виберіть Other (Інше) в якості пристрою)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "Переконайтеся, що Ви ввели вірні E-mail і Пароль від аккаунта!"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Можливо, сервери не працюють, зачекайте та перезапустіть программу пізніше."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Вам потрібно заповнити налаштування GoogleUsername і GooglePassword в auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Вам потрібно заповнити налаштування PtcUsername і PtcPassword в auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "[Снайпер] Шукаємо покемона для вилову в локації {0} ..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "[Снайпер] Покемона для вилову не виявлено!"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranF"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranM"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.vi.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.vi.json
new file mode 100644
index 0000000..c2908c7
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.vi.json
@@ -0,0 +1,2000 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "PokeBall"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "GreatBall"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "UltraBall"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "MasterBall"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "Sai AuthType(Kiểu tài khoản) trong file auth.json"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "Thông tin người dùng không hợp lệ. Đăng nhập thất bại."
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value":
+        "Bạn đang ở ngoài phạm vi xác định! Đi tới điểm xuất phát (xa {0}m) trong 5 giây. File LastPos.ini có đúng không?"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "Không tìm thấy PokeStops sử dụng được trong khu vực của bạn. Phạm vi tối đa của bạn có quá nhỏ không?"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "Tên: {0} XP: {1}, Gems: {2}, Items: {3}, Lat: {4}, Long: {5}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "Tên: {0} THÔNGTIN: Không nhặt được vật phẩm, có thể bị softban. Quá trình Unban: {1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "Đi đến Pokestop: {0} (xa {1}m) (trong {2} giây)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "Tên tài khoản: {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "Sử dụng lồng ấp trứng, còn lại: {0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "Sử dụng Lucky Egg, còn lại: {0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "Tiến hoá {0} thành công, nhận được {1}xp"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "Tiến hoá {0} thất bại. Kết quá: {1}, ngưng tiến hoá {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0} CP:{1}  IV:{2}% [Chỉ số tốt nhất - CP:{3} IV:{4}%] (Candies: {5})"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Cơ hội bắt được: {7}% | Cách xa {8}m | Bắt bằng {9} (Còn lại {10}) | Nhận được {11} EXP | {12} | Toạ độ: {13},{14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value":
+        "({0}) | ({1}) {2} Lvl: {3} CP: ({4}/{5}) IV: {6}% | Cơ hội bắt được: {7}% | Cách xa {8}m | Bắt bằng {9} (Còn lại {10}) | Toạ độ: {11},{12} ."
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "Hết tất cả các loại bóng - Không bắt được {0} - CP: {1}"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "Đợi để tiến hoá {0} Pokemon lần {1} đã bắt! ({2}/{3} - {4}% túi)"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "Lucky Eggs không được sử dụng vì UseLuckyEggsMinPokemonAmount được đặt thành {0}. Giá trị phải <= {1}."
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "Bắt thêm {0} Pokemon để sử dụng Lucky Egg!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "Đã dùng {0} | Còn lại {1}"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "Razz Berry"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} trong lần thứ {1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "Candies: {0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "Không xử lí được dữ liệu trong file GPX, bỏ qua việc sử dụng nó."
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "Pokemons"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "IV"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "tên"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "không rõ"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "Pokemon Có CP Cao Nhất"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "Pokemon Có IV Cao Nhất"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "Pokemon Có LV Cao Nhất"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "Đảm bảo rằng đã đặt đúng toạ độ. Nếu không hãy thoát chương trình! Toạ độ: {0},{1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "Đặt trứng loại {0:0.00}km vào lồng ấp."
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "Tình trạng lồng ấp: còn lại {0:0.00}km"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "Trứng trong lồng ấp đã nở: {0} | Lvl: {1} CP: ({2}/{3}) IV: {4}%"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "LỖI"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "CHÚ Ý"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "THÔNG TIN"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "POKESTOP"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "FARMING"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "SNIPER"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "XOÁ VẬT PHẨM"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "POKEMON"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "CHUYỂN THÀNH CANDY"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "TIẾN HOÁ"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "BERRY"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "TRỨNG"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "GỠ LỖI"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "CẬP NHẬT"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "MỚI"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "Loại tài khoản: {0}"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "Server PTC có thể đã sập HOẶC thông tin của bạn đã sai. Thử dùng Google"
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "Mã đăng nhập PTC đã hết hạn. Đang đăng nhập lại..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "Nhận được phản hồi không hợp lệ từ server Niantic"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "Cố gắng thử lại trong {0} giây..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "Tài khoản chưa được xác nhận! Đang thoát..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "Opening Google Device page. Please paste the code using CTRL+V"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "Couldnt copy to clipboard, do it manually"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "Goto: {0} & enter {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "Đã phát hiện điểm đến thực tế, đang sử dụng cài đặt mặc định trong file config.json"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "Điếm đến thực tế không phải ở {0}, sử dụng toạ độ lưu trong LastPos.ini"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "Toạ độ trong file \"LastPos.ini\" không hợp lệ, sử dụng toạ độ mặc định"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "Tuyệt vời! Bạn đang sử dụng phiên bản mới nhất: v{0} (Dịch Bởi: Skick - fb.me/S2Cancer2361)"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "Tự động cập nhật đã bị vô hiệu hoá. Tải phiên bản mới nhất tại: {0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "Đang tải và áp dụng bản cập nhật mới..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "Đã tải xong phiên bản mới nhất..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "Đã giải nén xong..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "Đã chuyển đổi config cũ của bạn sang phiên bản mới nhất..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "Hoàn thành cập nhật."
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "Đang tìm kiếm Pokemon..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "Đang tìm kiếm Pokemon..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "Đang tìm kiếm Pokemon..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "Bỏ qua {0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "Bạn đã hết tất cả ball trong túi, không thể bắt thêm Pokemon nào!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "Pokeballs: {0} | Greatballs: {1} | Ultraballs: {2} | Masterballs: {3}"
+    },
+    {
+      "Key": "currentPotionInv",
+      "Value": "Potions: {0} | SuperPotions: {1} | HyperPotions: {2} | MaxPotions: {3}"
+    },
+    {
+      "Key": "currentReviveInv",
+      "Value": "Revives: {0} | MaxRevives: {1}"
+    },
+    {
+      "Key": "currentMiscItemInv",
+      "Value": "Berry: {0} | LồngẤp: {1} | LuckyEggs: {2} | Lure: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value":
+        "[Cấu Hình Không Hợp Lệ] Tổng số vật phẩm tối đa của bạn (balls+potions+revives={0}) đã vượt qua số lượng vật phẩm tốt đa trong túi ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "Đang xoá đồ..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "Túi Pokemon đã đầy, đang chuyển Pokemon thành candies..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value":
+        "Túi Pokemon đã đầy! Hãy chuyển Pokemon bằng tay hoặc đặt TransferDuplicatePokemon là true trong config.json..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "Túi đồ đã đầy, không nhặt được vật phẩm!"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "Gặp sự cố: {0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "Gặp sự cố: Lure Pokemon {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "Điểm đến bạn mong muốn: {0}, {1} quá xa so với vị trí hiện tại: {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "Pokemon {0} ({1}) đã đổi tên từ {2} thành {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}%IV {1} (CP {2}) *Đã đánh dấu là yêu thích*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[Danh Sách Pokemon Bỏ Qua] - Đang bỏ qua {0} như trong cài đặt"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "Bắt Thử"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "Bắt Lỗi"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "Bắt Trượt"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "Chạy Mất"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "Bỏ Lỡ"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "Bắt Thành Công"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "BắtTrênĐường"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "BắtỞLurePKStop"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "BắtThính"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "Không thể bắt đầu WebSocketServer ở cổng : {0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value":
+        "{0} - Đã Chạy: {1} - Lvl: {2} | EXP/H: {3:n0} | P/H: {4:n0} | Stardust: {5:n0} | ĐãChuyểnHoá: {6:n0} | ĐãXoá: {7:n0}"
+    },
+    {
+      "Key": "profileStatsTemplateString",
+      "Value":
+        "----- LVL {0} | {1} ----- \n Kinh Nghiệm: {2}/{3} \n Pokemon Đã Bắt: {4} \n Pokemon Đã Chuyển Thành Candy: {5} \n Pokestop Đã Đến: {6} \n Trứng Đã Nở: {6} \n Pokemons envolved: {7} \n Số Mục Trong Pokedex: {8} \n Đã Đi: {9} KM"
+    },
+    {
+      "Key": "showPokeTemplate",
+      "Value": "\n CP {0} | Name: {1}"
+    },
+    {
+      "Key": "helpTemplate",
+      "Value":
+        "Các Lệnh: \n \n /top <Số lượng> - Hiển thị những Pokemon trong TOP <số lượng>. \n /all - Hiển thị tất cả Pokemon. \n /profile - Hiển thị thông tin. \n /loc - Hiển thị vị trí hiện tại. \n /items - Hiển thị những vật phẩm trong túi."
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (Lên cấp trong {1}h {2}m | {3:n0}/{4:n0} XP)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "Bất một nút bất kì để bắt đầu..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value": "Bạn đã kích hoạt Google Two Factor Auth, bạn phải điền App Specific Password vào trong file auth.json"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "Đang mở Google App-Passwords. Hãy tạo 1 App Password mới."
+    },
+    {
+      "Key": "googleError",
+      "Value": "Đảm bảo rằng bạn đã điền đúng Email & Password."
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "Server Google có thể đã sập. Hãy kiên nhẫn và mở bot sau 1 ít phút nữa."
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "Bạn cần điền GoogleUsername và GooglePassword trong auth.json!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "Bạn cần điền PtcUsername và PtcPassword trong auth.json!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "Tìm kiếm Pokemon có thể snipe tại {0}..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "Đang Snipe {0} - {1} IV tại {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "Không tìm thấy Pokemon nào để snipe!"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "Không đủ balls để snipe! ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "SKILL1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "SKILL2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "Candy"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "Kết nối bị từ chối. IP của bạn có thể đã cho vào danh sách đen (Blacklist) bởi Niantic. Đang thoát..."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "Không còn Eggs"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "Lucky Egg Đã Được Kích Hoạt"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "Đã Kích Hoạt Lucky Egg"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "Còn lại: {0} Lucky Eggs"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "Không còn lồng ấp nào"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "Lồng ấp đã được kích hoạt"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "Còn lại: {0} lồng ấp"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "Đã sử dụng 1 lồng ấp"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "Số loài Pokemon đã thấy: {0}/151, số loài Pokemon đã bắt: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[Evolve] Có thể tiến hoá: {0} Pokemon"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "Nâng cấp Pokemon thất bại do không đủ nguyên liệu"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "Sniping server đã tắt. Đang bỏ qua..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "Đây là lần mở đầu tiên, bạn có muốn cài đặt không? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "Bạn có muốn thay đổi ngôn ngữ không? {0}/{1}"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "Hãy nhập mã ngôn ngữ"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "Mã ngôn ngữ: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[LỖI] Lỗi dữ liệu nhập vào, hãy nhập '{0}' hoặc '{1}"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "File Config/Auth đã được tạo."
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### Đang cài đặt tài khoản mới###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "Hãy chọn loại tài khoản: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "Loại tài khoản đã chọn: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[LỖI] Đã nhập sai loại tài khoản, hãy chọn '{0}' hoặc '{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "Hãy nhập tên người dùng"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "Chấp nhận tên người dùng: {0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "Hãy nhập mật khẩu"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "Chấp nhận mật khẩu: {0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### Đã hoàn thành cài đặt tài khoản ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "Bạn có muốn cài đặt vị trí mặc định? {0}/{1}"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "Chấp nhận vị trí mặc định"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### Cài Đặt Vị Trí Mặc Định ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[LỖI] Hãy chỉ nhập GIÁ TRỊ như ví dụ: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "Hãy nhập Vĩ độ (Nhấn chuột phải để dán)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "Chấp nhận Vĩ độ: {0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "Hãy nhập Kinh độ (Nhấn chuột phải để dán)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "Chấp nhận Kinh độ: {0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### ĐÃ HOÀN THÀNH THIẾT LẬP CẤU HÌNH ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "Bulbasaur"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "Ivysaur"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "Venusaur"
+    },
+    {
+      "Key": "charmander",
+      "Value": "Charmander"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "Charmeleon"
+    },
+    {
+      "Key": "charizard",
+      "Value": "Charizard"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "Squirtle"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "Wartortle"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "Blastoise"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "Caterpie"
+    },
+    {
+      "Key": "metapod",
+      "Value": "Metapod"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "Butterfree"
+    },
+    {
+      "Key": "weedle",
+      "Value": "Weedle"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "Kakuna"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "Beedrill"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "Pidgey"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "Pidgeotto"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "Pidgeot"
+    },
+    {
+      "Key": "rattata",
+      "Value": "Rattata"
+    },
+    {
+      "Key": "raticate",
+      "Value": "Raticate"
+    },
+    {
+      "Key": "spearow",
+      "Value": "Spearow"
+    },
+    {
+      "Key": "fearow",
+      "Value": "Fearow"
+    },
+    {
+      "Key": "ekans",
+      "Value": "Ekans"
+    },
+    {
+      "Key": "arbok",
+      "Value": "Arbok"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "Pikachu"
+    },
+    {
+      "Key": "raichu",
+      "Value": "Raichu"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "Sandshrew"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "Sandslash"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "NidoranFemale"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "Nidorina"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "Nidoqueen"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "NidoranMale"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "Nidorino"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "Nidoking"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "Clefairy"
+    },
+    {
+      "Key": "clefable",
+      "Value": "Clefable"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "Vulpix"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "Ninetales"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "Jigglypuff"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "Wigglytuff"
+    },
+    {
+      "Key": "zubat",
+      "Value": "Zubat"
+    },
+    {
+      "Key": "golbat",
+      "Value": "Golbat"
+    },
+    {
+      "Key": "oddish",
+      "Value": "Oddish"
+    },
+    {
+      "Key": "gloom",
+      "Value": "Gloom"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "Vileplume"
+    },
+    {
+      "Key": "paras",
+      "Value": "Paras"
+    },
+    {
+      "Key": "parasect",
+      "Value": "Parasect"
+    },
+    {
+      "Key": "venonat",
+      "Value": "Venonat"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "Venomoth"
+    },
+    {
+      "Key": "diglett",
+      "Value": "Diglett"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "Dugtrio"
+    },
+    {
+      "Key": "meowth",
+      "Value": "Meowth"
+    },
+    {
+      "Key": "persian",
+      "Value": "Persian"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "Psyduck"
+    },
+    {
+      "Key": "golduck",
+      "Value": "Golduck"
+    },
+    {
+      "Key": "mankey",
+      "Value": "Mankey"
+    },
+    {
+      "Key": "primeape",
+      "Value": "Primeape"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "Growlithe"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "Arcanine"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "Poliwag"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "Poliwhirl"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "Poliwrath"
+    },
+    {
+      "Key": "abra",
+      "Value": "Abra"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "Kadabra"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "Alakazam"
+    },
+    {
+      "Key": "machop",
+      "Value": "Machop"
+    },
+    {
+      "Key": "machoke",
+      "Value": "Machoke"
+    },
+    {
+      "Key": "machamp",
+      "Value": "Machamp"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "Bellsprout"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "Weepinbell"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "Victreebel"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "Tentacool"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "Tentacruel"
+    },
+    {
+      "Key": "geodude",
+      "Value": "Geodude"
+    },
+    {
+      "Key": "graveler",
+      "Value": "Graveler"
+    },
+    {
+      "Key": "golem",
+      "Value": "Golem"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "Ponyta"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "Rapidash"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "Slowpoke"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "Slowbro"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "Magnemite"
+    },
+    {
+      "Key": "magneton",
+      "Value": "Magneton"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "Farfetchd"
+    },
+    {
+      "Key": "doduo",
+      "Value": "Doduo"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "Dodrio"
+    },
+    {
+      "Key": "seel",
+      "Value": "Seel"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "Dewgong"
+    },
+    {
+      "Key": "grimer",
+      "Value": "Grimer"
+    },
+    {
+      "Key": "muk",
+      "Value": "Muk"
+    },
+    {
+      "Key": "shellder",
+      "Value": "Shellder"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "Cloyster"
+    },
+    {
+      "Key": "gastly",
+      "Value": "Gastly"
+    },
+    {
+      "Key": "haunter",
+      "Value": "Haunter"
+    },
+    {
+      "Key": "gengar",
+      "Value": "Gengar"
+    },
+    {
+      "Key": "onix",
+      "Value": "Onix"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "Drowzee"
+    },
+    {
+      "Key": "hypno",
+      "Value": "Hypno"
+    },
+    {
+      "Key": "krabby",
+      "Value": "Krabby"
+    },
+    {
+      "Key": "kingler",
+      "Value": "Kingler"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "Voltorb"
+    },
+    {
+      "Key": "electrode",
+      "Value": "Electrode"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "Exeggcute"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "Exeggutor"
+    },
+    {
+      "Key": "cubone",
+      "Value": "Cubone"
+    },
+    {
+      "Key": "marowak",
+      "Value": "Marowak"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "Hitmonlee"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "Hitmonchan"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "Lickitung"
+    },
+    {
+      "Key": "koffing",
+      "Value": "Koffing"
+    },
+    {
+      "Key": "weezing",
+      "Value": "Weezing"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "Rhyhorn"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "Rhydon"
+    },
+    {
+      "Key": "chansey",
+      "Value": "Chansey"
+    },
+    {
+      "Key": "tangela",
+      "Value": "Tangela"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "Kangaskhan"
+    },
+    {
+      "Key": "horsea",
+      "Value": "Horsea"
+    },
+    {
+      "Key": "seadra",
+      "Value": "Seadra"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "Goldeen"
+    },
+    {
+      "Key": "seaking",
+      "Value": "Seaking"
+    },
+    {
+      "Key": "staryu",
+      "Value": "Staryu"
+    },
+    {
+      "Key": "starmie",
+      "Value": "Starmie"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "Mr. Mime"
+    },
+    {
+      "Key": "scyther",
+      "Value": "Scyther"
+    },
+    {
+      "Key": "jynx",
+      "Value": "Jynx"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "Electabuzz"
+    },
+    {
+      "Key": "magmar",
+      "Value": "Magmar"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "Pinsir"
+    },
+    {
+      "Key": "tauros",
+      "Value": "Tauros"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "Magikarp"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "Gyarados"
+    },
+    {
+      "Key": "lapras",
+      "Value": "Lapras"
+    },
+    {
+      "Key": "ditto",
+      "Value": "Ditto"
+    },
+    {
+      "Key": "eevee",
+      "Value": "Eevee"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "Vaporeon"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "Jolteon"
+    },
+    {
+      "Key": "flareon",
+      "Value": "Flareon"
+    },
+    {
+      "Key": "porygon",
+      "Value": "Porygon"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "Omanyte"
+    },
+    {
+      "Key": "omastar",
+      "Value": "Omastar"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "Kabuto"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "Kabutops"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "Aerodactyl"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "Snorlax"
+    },
+    {
+      "Key": "articuno",
+      "Value": "Articuno"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "Zapdos"
+    },
+    {
+      "Key": "moltres",
+      "Value": "Moltres"
+    },
+    {
+      "Key": "dratini",
+      "Value": "Dratini"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "Dragonair"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "Dragonite"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "Mewtwo"
+    },
+    {
+      "Key": "mew",
+      "Value": "Mew"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "ThunderShock"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "QuickAttack"
+    },
+    {
+      "Key": "scratch",
+      "Value": "Scratch"
+    },
+    {
+      "Key": "ember",
+      "Value": "Ember"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "VineWhip"
+    },
+    {
+      "Key": "tackle",
+      "Value": "Tackle"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "RazorLeaf"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "TakeDown"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "WaterGun"
+    },
+    {
+      "Key": "bite",
+      "Value": "Bite"
+    },
+    {
+      "Key": "pound",
+      "Value": "Pound"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "DoubleSlap"
+    },
+    {
+      "Key": "wrap",
+      "Value": "Wrap"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "HyperBeam"
+    },
+    {
+      "Key": "lick",
+      "Value": "Lick"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "DarkPulse"
+    },
+    {
+      "Key": "smog",
+      "Value": "Smog"
+    },
+    {
+      "Key": "sludge",
+      "Value": "Sludge"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "MetalClaw"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "ViceGrip"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "FlameWheel"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "Megahorn"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "WingAttack"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "Flamethrower"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "SuckerPunch"
+    },
+    {
+      "Key": "dig",
+      "Value": "Dig"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "LowKick"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "CrossChop"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "PsychoCut"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "Psybeam"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "Earthquake"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "StoneEdge"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "IcePunch"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "HeartStamp"
+    },
+    {
+      "Key": "discharge",
+      "Value": "Discharge"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "FlashCannon"
+    },
+    {
+      "Key": "peck",
+      "Value": "Peck"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "DrillPeck"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "IceBeam"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "Blizzard"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "AirSlash"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "HeatWave"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "Twineedle"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "PoisonJab"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "AerialAce"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "DrillRun"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "PetalBlizzard"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "MegaDrain"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "BugBuzz"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "PoisonFang"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "NightSlash"
+    },
+    {
+      "Key": "slash",
+      "Value": "Slash"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "BubbleBeam"
+    },
+    {
+      "Key": "submission",
+      "Value": "Submission"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "KarateChop"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "LowSweep"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "AquaJet"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "AquaTail"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "SeedBomb"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "Psyshock"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "RockThrow"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "AncientPower"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "RockTomb"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "RockSlide"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "PowerGem"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "ShadowSneak"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "ShadowPunch"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "ShadowClaw"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "OminousWind"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "ShadowBall"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "BulletPunch"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "MagnetBomb"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "SteelWing"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "IronHead"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "ParabolicCharge"
+    },
+    {
+      "Key": "spark",
+      "Value": "Spark"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "ThunderPunch"
+    },
+    {
+      "Key": "thunder",
+      "Value": "Thunder"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "Thunderbolt"
+    },
+    {
+      "Key": "twister",
+      "Value": "Twister"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "DragonBreath"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "DragonPulse"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "DragonClaw"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "DisarmingVoice"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "DrainingKiss"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "DazzlingGleam"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "Moonblast"
+    },
+    {
+      "Key": "playRough",
+      "Value": "PlayRough"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "CrossPoison"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "SludgeBomb"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "SludgeWave"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "GunkShot"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "MudShot"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "BoneClub"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "Bulldoze"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "MudBomb"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "FuryCutter"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "BugBite"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "SignalBeam"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "XScissor"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "FlameCharge"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "FlameBurst"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "FireBlast"
+    },
+    {
+      "Key": "brine",
+      "Value": "Brine"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "WaterPulse"
+    },
+    {
+      "Key": "scald",
+      "Value": "Scald"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "HydroPump"
+    },
+    {
+      "Key": "psychic",
+      "Value": "Psychic"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "Psystrike"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "IceShard"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "IcyWind"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "FrostBreath"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "GigaDrain"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "FirePunch"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "SolarBeam"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "LeafBlade"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "PowerWhip"
+    },
+    {
+      "Key": "splash",
+      "Value": "Splash"
+    },
+    {
+      "Key": "acid",
+      "Value": "Acid"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "AirCutter"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "Hurricane"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "BrickBreak"
+    },
+    {
+      "Key": "cut",
+      "Value": "Cut"
+    },
+    {
+      "Key": "swift",
+      "Value": "Swift"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "HornAttack"
+    },
+    {
+      "Key": "stomp",
+      "Value": "Stomp"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "Headbutt"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "HyperFang"
+    },
+    {
+      "Key": "slam",
+      "Value": "Slam"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "BodySlam"
+    },
+    {
+      "Key": "rest",
+      "Value": "Rest"
+    },
+    {
+      "Key": "struggle",
+      "Value": "Struggle"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "ScaldBlastoise"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "HydroPumpBlastoise"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "WrapGreen"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "WrapPink"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "FuryCutterFast"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "BugBiteFast"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "BiteFast"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "SuckerPunchFast"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "DragonBreathFast"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "ThunderShockFast"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "SparkFast"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "LowKickFast"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "KarateChopFast"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "EmberFast"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "WingAttackFast"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "PeckFast"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "LickFast"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "ShadowClawFast"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "VineWhipFast"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "RazorLeafFast"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "MudShotFast"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "IceShardFast"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "FrostBreathFast"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "QuickAttackFast"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "ScratchFast"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "TackleFast"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "PoundFast"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "CutFast"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "PoisonJabFast"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "AcidFast"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "PsychoCutFast"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "RockThrowFast"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "MetalClawFast"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "BulletPunchFast"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "WaterGunFast"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "SplashFast"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "WaterGunFastBlastoise"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "MudSlapFast"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "ZenHeadbuttFast"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "ConfusionFast"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "PoisonStingFast"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "BubbleFast"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "FeintAttackFast"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "SteelWingFast"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "FireFangFast"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "RockSmashFast"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_CN.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_CN.json
new file mode 100644
index 0000000..1e9ece9
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_CN.json
@@ -0,0 +1,2003 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "普通球"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "高级球"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "超级球"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "大师球"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "未知的账户类型,请查看config.json\t\t"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "用户凭据无效,登录失败.\t\t"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value": "您在设定的范围外!5秒后返回起点(距离{0}米),请确认lastpos.ini中经纬度是否正确?\t\t"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "您附近没有任何可用的补给站,是您的最大挂机距离设置太小了吗?\t\t\t"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "补给站:{0} 经验+{1},宝石+{2},获得:{3},坐标{4},{5}\t\t\t"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "补给站:{0}|信息:正在解封:{1}/{2},您可能被封禁.\t\t\t"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "正在前往补给站:{0} 距离{1}米,需要{2}秒\t\t\t"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "登陆账号:{0}\t\t"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "使用熏香,剩余:{0}个\t\t"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "使用幸运蛋,剩余:{0}个\t\t"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "成功进化:{0},经验+{1}\t\t\t"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "{0} 进化失败,原因是{1},已取消进化:{2}\t\t"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0},CP:{1}完美度:{2}% [已有CP:{3}完美度:{4}%] (糖果:{5})\t\t\t"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}个{1}\t\t"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "[{0}]|({1}){2} 等级:{3} CP:({4}/{5}) 完美度:{6}%|捕获几率:{7}%|距离{8}米|使用{9}捕捉(剩余{10}个)|经验+{11}|{12}|坐标:{13},{14}\t\t\t\t\t"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value": "[{0}]|({1}){2} 等级:{3} CP:({4}/{5}) 完美度:{6}%|捕获几率:{7}%|距离{8}米|使用{9}捕捉(剩余{10}个)| 坐标:{11},{12}\t\t\t"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "没有精灵球了,我们错过了一只CP值为{1}的:{0}\t\t"
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "等待进化[{0}]还需要捕获{1}个!({2}/{3}为{4}%背包)\t\t"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "当(UseLuckyEggsMinPokemonAmount)设为{0}时幸运蛋永远不会使用,请使用小于等于{1}的数值\t\t"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "还需捕获{0}只精灵使用幸运蛋!\t\t"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "使用{0},剩余{1}个\t\t\t"
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "浆果"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0}-重试第{1}遍"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "糖果:{0}"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "在GPX文件中发现异常数据,试图跳过.\t\t"
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "宠物小精灵"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "完美度"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "名称"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "未知"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "展示最高CP值"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "展示最高完美度"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "展示最高等级"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "确认经纬度是否正确,如果错误请退出程序!纬度:{0}经度:{1}\t\t"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "正在将宠物蛋放入孵化器中:剩余{0:0.00}千米\t\t"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "孵化器状态更新:剩余{0:0.00}千米\t\t"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "孵化器已经孵出:{0}|等级:{1} CP:({2}/{3})完美度:{4}%\t\t\t"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "错误"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "警告"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "信息"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "补给"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "开刷"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "狙击"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "丢弃"
+    },
+    {
+      "Key": "logEntryPkmn",
+      "Value": "捕获"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "传回"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "进化"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "浆果"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "宠物蛋"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "调试"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "更新"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "新"
+    },
+    {
+      "Key": "logEntrySoftBan",
+      "Value": "暂封"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "正在登录{0}账号\t\t"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC服务器可能关闭或您的帐号错误错误,请尝试谷歌帐号登录\t\t"
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "PTC登录过期,正在重新登录..\t\t"
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "从Niantic服务器接受到无效的响应\t\t"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "将在{0}秒后重试...\t\t"
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "帐号或密码错误!退出...\t\t"
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "正在打开GoogleDevice网页,请用CTRL+V粘贴验证码\t\t"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "无法将验证码复制到剪贴板,请手动复制\t\t"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "打开:{0}后输入{1}\t\t"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "检测到真实的旅行,使用config.json中的用户配置\t\t"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "未检测到真实的旅行{0},使用上一次保存在LastPos.ini中的配置\t\t"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "保存在\"LastPos.ini\"中的坐标无效,使用默认坐标\t\t"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "恭喜!你已经更新至最新版本:{0}\t\t\t"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "自动更新已禁用,获取最新的版本到:{0}\n"
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "正在下载安装更新...\t\t"
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "下载新版本完成...\t\t"
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "解包成功...\t\t"
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "完成你的配置转移到新版本...\t\t"
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "更新完成,您现在可以关闭这个窗口.\t\t"
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "正在搜索熏香引来的精灵...\t\t"
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "正在搜索宠物小精灵...\t\t"
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "正在搜索诱饵吸引来的精灵...\t\t"
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "跳过:{0}\t\t"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "背包中精灵球不足,无法捕捉更多小精灵!\t\t"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "普通球:{0}|高级球:{1}|超级球:{2}|大师球:{3}\t\t\t"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "药水: {0} | 高级药水: {1} | 超级药水: {2} | 顶级药水: {3}\t\t\t"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "复活石: {0} | 顶级复活石: {1}\t\t"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "浆果: {0} | 熏香: {1} | 幸运蛋: {2} | 诱饵: {3}\t\t"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value": "[设置无效]您设置的物品数量组合(精灵球+药水+复活石={0})超出了您的背包容量({1})\t\t"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "清理背包中...\t\t"
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "包裹满了,正在传输精灵...\t\t"
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value": "精灵包裹满了,请手动传输精灵或者修改配置文件TransferDuplicatePokemon为true\t\t"
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "物品包裹满了,无法获得物品!\t\t"
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "发生错误:{0}\t\t"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "发生错误:诱饵吸引来的精灵{0}\t\t"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "您要去的地方{0},{1}距离您现在的位置太远了{2},{3}\t\t"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "正在将精灵{0} ({1})从{2}重命名为{3}.\t\t"
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "将{0}%完美度{1}(CP:{2})加入*收藏*.\t\t"
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[精灵忽略过滤器]忽略:{0}\t\t"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "尝试"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "错误"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "挣脱"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "消失"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "错过"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "成功"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "普通"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "诱饵"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "熏香"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "无法启动WebSocket服务器的端口:{0}\t\t"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value": "{0} 运行时间{1}等级:{2}|经验/小时:{3:n0}|捕获/小时:{4:n0}|星尘:{5:n0}|传回:{6:n0}|丢弃:{7:n0}"
+    },
+    {
+      "Key": "profileStatsTemplateString",
+      "Value":
+        "----- 等级: {0} | {1} ----- \t\t\n 经验: {2}/{3} \t\t\n 捕获了{4}个精灵\t\t\n 已部署了{5}个精灵 \t\t\n 访问了{6}个补给站 \t\t\n 已孵化{6}个蛋 \t\t\n 已进化{7}个精灵\t\t\n 图鉴解锁{8}种\t\t\n 已行走{9}公里\t\t"
+    },
+    {
+      "Key": "showPokeTemplate",
+      "Value": "\n CP {0} | 名称: {1}"
+    },
+    {
+      "Key": "helpTemplate",
+      "Value":
+        "命令: \n \n /top <数量> - 显示你最高级的精灵列表. \t\t\n /all - 显示你所有精灵列表. \t\t\n /profile - 显示你个人详细信息. \t\t\n /loc - 显示你的位置. \t\t\n /items - 显示你的物品.\t\t"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0}(预计升级需要{1}小时{2}分钟|{3:n0}/{4:n0}经验)"
+    },
+    {
+      "Key": "requireInputText",
+      "Value": "请按键盘任意键继续...\t\t"
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value": "当您启用了谷歌的两步验证后,需要在auth.json中输入应用专用密码\t\t"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "打开GoogleApp-登陆与安全设置-密码和登录方法-应用专用密码,请设置一个新的应用专用密码(使用其它设备)\t\t\t"
+    },
+    {
+      "Key": "googleError",
+      "Value": "请确认输入正确的邮箱地址和密码.\t\t"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "谷歌服务器可能正在维护, 请稍后再尝试登录.\t\t"
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "您需要在auth.json中填写谷歌账户和密码!\t\t"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "您需要在auth.json中填写Ptc账户和密码!\t\t"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "正在搜索可狙击精灵,坐标:{0}\t\t"
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "狙击一个 {0} 完美度:{1},坐标{2}...\t\t"
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "没有找到可狙击的精灵!\t\t"
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "没有足够的精灵球用来狙击!({0}/{1})\t\t"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "技能1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "技能2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "糖果"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "连接失败.您的IP可能被Niantic添加到了黑名单.正在退出...\t\t"
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "背包中没有宠物蛋\t\t"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "已经开启过幸运蛋了.\t\t"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "使用了幸运蛋.\t\t"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "背包中剩余幸运蛋:{0}个\t\t"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "背包中没有熏香了.\t\t"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "已经开启过熏香了.\t\t"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "背包中剩余熏香:{0}个\t\t"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "使用了一个熏香.\t\t"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "遇见了:{0}/151只小精灵,捕捉了:{1}/151只\t\t\t"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "有{0}个可进化的精灵\t\t"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "精灵升级失败,材料不足\t\t"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "狙击服务器当前关闭.跳过狙击....\t\t"
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "这是你第一次使用,想要设置吗?{0}/{1}\t\t"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "想要更改默认语言吗? {0}/{1}\t\t"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "请输入新的语言代码(中文是zh_CN)\t\t"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "语言已应用: {0}\t\t"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[输入错误] 输入错误, 请输入 '{0}' 或 '{1}'\t\t"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Config/Auth 文件自动生成完毕才能继续\t\t"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### 设置新的账户 ###\t\t"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "请输入您的一个账户类型: {1}或者{0}\t\t\t"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "选择了: {0} 账户\t\t"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[错误] 账户类型不正确,请输入 '{0}' 或者 '{1}'\t\t\t"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "请输入帐号\t\t"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "使用帐号: {0}\t\t"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "请输入密码\t\t"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "使用密码: {0}\t\t"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### 用户账户设置完毕 ###\t\t"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "你想要设置一个新的起始坐标吗? {0}/{1}\t\t"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "已使用默认坐标\t\t"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### 设置默认坐标 ###\t\t"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[错误] 只能输入坐标,例如: {0}\t\t"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "请输入一个纬度 (右键粘贴)\t\t"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "纬度已设置为: {0}\t\t"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "请设置一个经度 (右键粘贴)\t\t"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "经度已设置: {0}\t\t"
+    },
+    {
+      "Key": "softBanBypassed",
+      "Value": "成功解封!"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### 已完成设置 ###\t\t"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "妙蛙种子"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "妙蛙草"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "妙蛙花"
+    },
+    {
+      "Key": "charmander",
+      "Value": "小火龙"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "火恐龙"
+    },
+    {
+      "Key": "charizard",
+      "Value": "喷火龙"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "杰尼龟"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "卡咪龟"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "水箭龟"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "绿毛虫"
+    },
+    {
+      "Key": "metapod",
+      "Value": "铁甲蛹"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "巴大蝶"
+    },
+    {
+      "Key": "weedle",
+      "Value": "独角虫"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "铁壳蛹"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "大针蜂"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "波波"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "比比鸟"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "比雕"
+    },
+    {
+      "Key": "rattata",
+      "Value": "小拉达"
+    },
+    {
+      "Key": "raticate",
+      "Value": "拉达"
+    },
+    {
+      "Key": "spearow",
+      "Value": "烈雀"
+    },
+    {
+      "Key": "fearow",
+      "Value": "大嘴雀"
+    },
+    {
+      "Key": "ekans",
+      "Value": "阿柏蛇"
+    },
+    {
+      "Key": "arbok",
+      "Value": "阿柏怪"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "皮卡丘"
+    },
+    {
+      "Key": "raichu",
+      "Value": "雷丘"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "穿山鼠"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "穿山王"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "尼多兰"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "尼多娜"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "尼多后"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "尼多朗"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "尼多力诺"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "尼多王"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "皮皮"
+    },
+    {
+      "Key": "clefable",
+      "Value": "皮可西"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "六尾"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "九尾"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "胖丁"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "胖可丁"
+    },
+    {
+      "Key": "zubat",
+      "Value": "超音蝠"
+    },
+    {
+      "Key": "golbat",
+      "Value": "大嘴蝠"
+    },
+    {
+      "Key": "oddish",
+      "Value": "走路草"
+    },
+    {
+      "Key": "gloom",
+      "Value": "臭臭花"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "霸王花"
+    },
+    {
+      "Key": "paras",
+      "Value": "派拉斯"
+    },
+    {
+      "Key": "parasect",
+      "Value": "派拉斯特"
+    },
+    {
+      "Key": "venonat",
+      "Value": "毛球"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "摩鲁蛾"
+    },
+    {
+      "Key": "diglett",
+      "Value": "地鼠"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "三地鼠"
+    },
+    {
+      "Key": "meowth",
+      "Value": "喵喵"
+    },
+    {
+      "Key": "persian",
+      "Value": "猫老大"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "可达鸭"
+    },
+    {
+      "Key": "golduck",
+      "Value": "哥达鸭"
+    },
+    {
+      "Key": "mankey",
+      "Value": "猴怪"
+    },
+    {
+      "Key": "primeape",
+      "Value": "火爆猴"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "卡蒂狗"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "风速狗"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "蚊香蝌蚪"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "蚊香蛙"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "蚊香泳士"
+    },
+    {
+      "Key": "abra",
+      "Value": "凯西"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "勇基拉"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "胡地"
+    },
+    {
+      "Key": "machop",
+      "Value": "腕力"
+    },
+    {
+      "Key": "machoke",
+      "Value": "豪力"
+    },
+    {
+      "Key": "machamp",
+      "Value": "怪力"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "喇叭芽"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "口呆花"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "大食花"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "玛瑙水母"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "毒刺水母"
+    },
+    {
+      "Key": "geodude",
+      "Value": "小拳石"
+    },
+    {
+      "Key": "graveler",
+      "Value": "隆隆石"
+    },
+    {
+      "Key": "golem",
+      "Value": "隆隆岩"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "小火马"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "烈焰马"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "呆呆兽"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "呆壳兽"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "小磁怪"
+    },
+    {
+      "Key": "magneton",
+      "Value": "三合一磁怪"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "大葱鸭"
+    },
+    {
+      "Key": "doduo",
+      "Value": "嘟嘟"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "嘟嘟利"
+    },
+    {
+      "Key": "seel",
+      "Value": "小海狮"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "白海狮"
+    },
+    {
+      "Key": "grimer",
+      "Value": "臭泥"
+    },
+    {
+      "Key": "muk",
+      "Value": "臭臭泥"
+    },
+    {
+      "Key": "shellder",
+      "Value": "大舌贝"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "刺甲贝"
+    },
+    {
+      "Key": "gastly",
+      "Value": "鬼斯"
+    },
+    {
+      "Key": "haunter",
+      "Value": "鬼斯通"
+    },
+    {
+      "Key": "gengar",
+      "Value": "耿鬼"
+    },
+    {
+      "Key": "onix",
+      "Value": "大岩蛇"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "催眠貘"
+    },
+    {
+      "Key": "hypno",
+      "Value": "引梦貘人"
+    },
+    {
+      "Key": "krabby",
+      "Value": "大钳蟹"
+    },
+    {
+      "Key": "kingler",
+      "Value": "巨钳蟹"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "霹雳电球"
+    },
+    {
+      "Key": "electrode",
+      "Value": "顽皮雷弹"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "蛋蛋"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "椰蛋树"
+    },
+    {
+      "Key": "cubone",
+      "Value": "卡拉卡拉"
+    },
+    {
+      "Key": "marowak",
+      "Value": "嘎啦嘎啦"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "飞腿郎"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "快拳郎"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "大舌头"
+    },
+    {
+      "Key": "koffing",
+      "Value": "瓦斯弹"
+    },
+    {
+      "Key": "weezing",
+      "Value": "双弹瓦斯"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "独角犀牛"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "钻角犀兽"
+    },
+    {
+      "Key": "chansey",
+      "Value": "吉利蛋"
+    },
+    {
+      "Key": "tangela",
+      "Value": "蔓藤怪"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "袋兽"
+    },
+    {
+      "Key": "horsea",
+      "Value": "墨海马"
+    },
+    {
+      "Key": "seadra",
+      "Value": "海刺龙"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "角金鱼"
+    },
+    {
+      "Key": "seaking",
+      "Value": "金鱼王"
+    },
+    {
+      "Key": "staryu",
+      "Value": "海星星"
+    },
+    {
+      "Key": "starmie",
+      "Value": "宝石海星"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "魔墙人偶"
+    },
+    {
+      "Key": "scyther",
+      "Value": "飞天螳螂"
+    },
+    {
+      "Key": "jynx",
+      "Value": "迷唇姐"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "电击兽"
+    },
+    {
+      "Key": "magmar",
+      "Value": "鸭嘴火兽"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "凯罗斯"
+    },
+    {
+      "Key": "tauros",
+      "Value": "肯泰罗"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "鲤鱼王"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "暴鲤龙"
+    },
+    {
+      "Key": "lapras",
+      "Value": "拉普拉斯"
+    },
+    {
+      "Key": "ditto",
+      "Value": "百变怪"
+    },
+    {
+      "Key": "eevee",
+      "Value": "伊布"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "水伊布"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "雷伊布"
+    },
+    {
+      "Key": "flareon",
+      "Value": "火伊布"
+    },
+    {
+      "Key": "porygon",
+      "Value": "多边兽"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "菊石兽"
+    },
+    {
+      "Key": "omastar",
+      "Value": "多刺菊石兽"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "化石盔"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "镰刀盔"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "化石翼龙"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "卡比兽"
+    },
+    {
+      "Key": "articuno",
+      "Value": "急冻鸟"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "闪电鸟"
+    },
+    {
+      "Key": "moltres",
+      "Value": "火焰鸟"
+    },
+    {
+      "Key": "dratini",
+      "Value": "迷你龙"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "哈克龙"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "快龙"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "超梦"
+    },
+    {
+      "Key": "mew",
+      "Value": "梦幻"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "无技能"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "电击"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "电光一闪"
+    },
+    {
+      "Key": "scratch",
+      "Value": "利爪"
+    },
+    {
+      "Key": "ember",
+      "Value": "火花"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "藤鞭"
+    },
+    {
+      "Key": "tackle",
+      "Value": "冲击"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "飞叶快刀"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "猛撞"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "水枪"
+    },
+    {
+      "Key": "bite",
+      "Value": "咬住"
+    },
+    {
+      "Key": "pound",
+      "Value": "拍击"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "连环巴掌"
+    },
+    {
+      "Key": "wrap",
+      "Value": "捆绑"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "破坏死光"
+    },
+    {
+      "Key": "lick",
+      "Value": "舔舌头"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "恶波动"
+    },
+    {
+      "Key": "smog",
+      "Value": "迷雾"
+    },
+    {
+      "Key": "sludge",
+      "Value": "泥浆攻击"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "合金爪"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "剪断"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "火焰轮"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "百万吨角击"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "翅膀攻击"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "喷射火焰"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "突袭"
+    },
+    {
+      "Key": "dig",
+      "Value": "挖地洞"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "下踢"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "十字切"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "幻象斩"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "幻象光"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "地震"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "尖石攻击"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "急冻拳"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "爱心捣击"
+    },
+    {
+      "Key": "discharge",
+      "Value": "放电"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "光泽电炮"
+    },
+    {
+      "Key": "peck",
+      "Value": "啄"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "冲钻"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "急冻光线"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "暴风雪"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "空气砍"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "热风"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "双针"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "毒刺"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "回转攻"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "低空钻"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "落花飞雪"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "百万吨吸收"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "虫鸣"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "毒液牙"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "街头试刀"
+    },
+    {
+      "Key": "slash",
+      "Value": "劈开"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "泡沫光线"
+    },
+    {
+      "Key": "submission",
+      "Value": "地狱滚动"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "手刀"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "低空踢"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "喷射水柱"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "水柱尾"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "种子炸弹"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "幻象攻击"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "滚石"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "原始之力"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "岩石封闭"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "山崩地裂"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "力量宝石"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "影子偷袭"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "影子拳"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "影子钩爪"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "奇异之风"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "影子球"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "飞弹拳"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "磁铁爆弹"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "钢翼"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "铁头"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "抛物线充电"
+    },
+    {
+      "Key": "spark",
+      "Value": "闪电"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "雷光掌"
+    },
+    {
+      "Key": "thunder",
+      "Value": "打雷"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "十万伏特"
+    },
+    {
+      "Key": "twister",
+      "Value": "龙卷风"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "龙息"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "龙波动"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "龙爪"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "魅力之音"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "吸取之吻"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "魔法照耀"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "月亮攻击"
+    },
+    {
+      "Key": "playRough",
+      "Value": "嬉戏"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "十字毒药"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "臭泥爆弹"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "泥浆波"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "灰尘射击"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "泥巴射击"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "骨棒"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "整地"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "泥巴爆弹"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "连切"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "虫咬"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "信号光束"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "剪刀十字拳"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "火焰袭击"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "爆炸火焰"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "大字爆"
+    },
+    {
+      "Key": "brine",
+      "Value": "盐水"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "水波动"
+    },
+    {
+      "Key": "scald",
+      "Value": "热水"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "水炮"
+    },
+    {
+      "Key": "psychic",
+      "Value": "幻象术"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "精神破坏"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "冰砾"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "冰冻之风"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "冰吸"
+    },
+    {
+      "Key": "absorb",
+      "Value": "吸收"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "超级吸收"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "火焰拳"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "日光束"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "刀叶"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "能量鞭打"
+    },
+    {
+      "Key": "splash",
+      "Value": "水溅跃"
+    },
+    {
+      "Key": "acid",
+      "Value": "溶解液"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "破空斩"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "暴风"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "劈瓦"
+    },
+    {
+      "Key": "cut",
+      "Value": "一字斩"
+    },
+    {
+      "Key": "swift",
+      "Value": "高速星星"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "角撞"
+    },
+    {
+      "Key": "stomp",
+      "Value": "践踏"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "铁头功"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "必杀门牙"
+    },
+    {
+      "Key": "slam",
+      "Value": "摔打"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "泰山压顶"
+    },
+    {
+      "Key": "rest",
+      "Value": "睡觉"
+    },
+    {
+      "Key": "struggle",
+      "Value": "挣扎"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "热水-水箭龟"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "水炮-水箭龟"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "捆绑绿"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "捆绑粉红"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "快速-连切"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "快速-虫咬"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "快速-咬住"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "快速-突袭"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "快速-龙息"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "快速-电击"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "快速-闪电"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "快速-下踢"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "快速-手刀"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "快速-火花"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "快速-翅膀攻击"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "快速-啄"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "快速-舔舌头"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "快速-影子钩爪"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "快速-藤鞭"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "快速-飞叶快刀"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "快速-泥巴射击"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "快速-冰砾"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "快速-冰吸"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "快速-电光一闪"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "快速-利爪"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "快速-冲击"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "快速-拍击"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "快速-一字斩"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "快速-毒刺"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "快速-溶解液"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "快速-幻象斩"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "快速-滚石"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "快速-合金爪"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "快速-飞弹拳"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "快速-水枪"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "快速-水溅跃"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "水枪-水箭龟"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "快速-掷泥"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "快速-意念头锤"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "快速-念力"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "快速-毒针"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "快速-泡泡"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "快速-虚晃一招"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "快速-钢翼"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "快速-炎牙"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "快速-岩石粉碎"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_TW.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_TW.json
new file mode 100644
index 0000000..f0c7d59
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_TW.json
@@ -0,0 +1,1981 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "寶貝球"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "高級球"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "超級球"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "大師球"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "錯誤的認證資訊"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "用戶憑證失效,登入失敗"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value": "您已經走出範圍!5秒後返回起點(距離{0}公尺),請確認系統設定是否正確"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "您附近沒有任何可用的補給站,請確認系統設定是否正確"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "名稱:{0} 經驗值:{1},金幣:{2},物品:{3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "名稱:{0} 資訊:操作失敗,可能被封禁。正在解封:{1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "前往補給站:{0} (距離{1}公尺)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "登入帳號 {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "使用薰香,剩餘數量:{0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "使用幸運蛋,剩餘數量:{0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "成功進化 {0} 獲得 {1} 經驗值"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "{0} 進化失敗,原因是 {1},已取消進化 {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP值:{1}  完美度:{2}%   [已擁有 CP值:{3}  完美度:{4}%] (還有{5}顆該種類的糖果)"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value":
+        "({0}) | ({1}) {2} 等級:{3} CP:({4}/{5}) IV:{6}% | 捕獲機率:{7}% | 距離{8}公尺 | 使用{9}捕捉 (剩餘{10}個) | 經驗值+{11} | {12} | 座標:{13},{14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value": "({0}) | ({1}) {2} 等級:{3} CP:({4}/{5}) IV:{6}% | 捕獲機率:{7}% | 距離{8}公尺 | 使用{9}捕捉 (剩餘{10}個) | 座標:{11},{12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "沒有寶貝球了,我們錯過了一隻 CP值為 {1} 的 {0} "
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "目前有 {0} 隻神奇寶貝,再捕捉 {1} 隻神奇寶貝後將會進化!(目前有 {2}/{3} 占背包總量的 {4}% )"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "當設定值 UseLuckyEggsMinPokemonAmount 為 {0} 將不會使用幸運蛋,請改為 <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "再捕捉 {0} 隻神奇寶貝後將會使用幸運蛋!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "已使用 {0} | 剩餘 {1} "
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "莓果"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} 重試 #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "還有{0}顆該種類的糖果"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "在 GPX 文件中發現異常數據,試圖跳過。"
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "神奇寶貝"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "完美度"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "名稱"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "未知"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "顯示最高 CP值"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "顯示最高完美度"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "顯示最高等級"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "確認經緯度是否正確,如果錯誤將會退出程式! 緯度:{0} 經度:{1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "正在將寵物蛋放入孵化器中:剩餘{0:0.00}公里"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "更新孵化器狀態:剩餘{0:0.00}公里"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "孵化器已經孵出:{0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "錯誤"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "注意"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "提醒"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "補給站"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "開刷"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "狙擊"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "刪除"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "捕捉"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "傳送"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "進化"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "莓果"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "寵物蛋"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "除錯"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "更新"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "新"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "正在登入{0}帳號"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC 伺服器可能關閉或您的帳號錯誤錯誤,請嘗試 Google 帳號登入"
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "PTC 登入憑證過期。重新登入..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "收到 Niantic 伺服器的無效回應"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "將在 {0} 秒後重試..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "帳號或密碼錯誤!退出..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "正在打開 Google Device 網頁,請用 CTRL+V 貼上驗證碼"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "無法將驗證碼複製到剪貼板,請手動複製"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "打開:{0} 後輸入 {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "檢測到真實的旅行,使用用戶配置"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "未檢測到真實的旅行 {0},使用上一次儲存的設定"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "無效的座標文件,使用預設座標"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "恭喜!您已經更新至最新版本:{0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "自動更新已禁用,目前最新的版本為:{0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "正在下載安裝更新..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "新版本下載完成..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "解壓縮完成..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "成功將您的設定更新至最新版..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "更新完畢,您現在可以關閉這個視窗。"
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "正在搜索薰香引來的神奇寶貝..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "正在尋找神奇寶貝..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "正在尋找誘餌吸引來的神奇寶貝..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "跳過:{0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "您身上已沒有寶貝球,將不會捕捉任何神奇寶貝!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "目前擁有寶貝球:{0} | 高級球:{1} | 超級球:{2} | 大師球:{3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "藥水:{0} | 強效藥水:{1} | 超級藥水:{2} | 完全恢復藥水:{3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "復甦劑:{0} | 完全復甦劑:{1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "莓果:{0} | 薰香:{1} | 幸運蛋:{2} | 誘餌:{3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value": "[錯誤] 您設定的物品數量 (寶貝球+藥水+復甦劑={0}) 已超過您背包的最大空間 ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "丟棄不提醒..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "背包滿了,正在傳送神奇寶貝..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value": "背包滿了,請手動傳送神奇寶貝或修改 TransferDuplicatePokemon 為 true..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "背包滿了,將不會拾取任何物品..."
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "發生錯誤:{0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "發生錯誤:誘餌吸引來的神奇寶貝 {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "您要去的地方 {0}, {1} 距離目前的位置太遠了 {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "神奇寶貝 {0} ({1}) 已從 {2} 改名為 {3}。"
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% 完美度 {1} (CP {2}) *加入最愛*。"
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[過濾器] - 已根據設定忽略 {0} "
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "嘗試捕捉"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "捕捉錯誤"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "捕捉失敗"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "捕捉消失"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "錯過捕捉"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "捕捉成功"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "一般"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "誘餌"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "薰香"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "WebSocketServer啟動失敗,通訊埠:{0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value": "{0} - 運行時間 {1} - 等級:{2} | 經驗/小時:{3:0} | 捕獲/小時:{4:0} | 星塵:{5:0} | 傳送:{6:0} | 丟棄:{7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (預計升級時間 {1}小時 {2}分鐘 | {3}/{4}經驗 )"
+    },
+    {
+      "Key": "RequireInputText",
+      "Value": "按任意鍵繼續..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value": "當您啟用了 Google 的兩步驟驗證後,需要在 auth.json 中輸入應用程式專用密碼"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "打開 Google App - 登入和安全性 - 密碼和帳戶登入方式 - 應用程式密碼,請設定一個新的程式專用密碼(使用其它設備)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "請確認輸入了正確的信箱地址和密碼。"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "無法連上 Google 伺服器,請稍後再試,謝謝您的耐心等候。"
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "您需要在 auth.json 中填寫 Google 帳號和密碼!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "您需要在 auth.json 中填寫 PTC 帳號和密碼!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "在 {0} 搜尋可狙擊的神奇寶貝..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "狙擊 {0} IV:{1} 於:{2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "沒有任何神奇寶貝可狙擊..."
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "沒有足夠的寶貝球來狙擊... ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "技能1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "技能2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "糖果"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "連線遭到拒絕。您的 IP 可能已被 Niantic 列入黑名單。正在退出.."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "背包裡沒有任何幸運蛋"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "幸運蛋使用中"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "使用幸運蛋"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "背包中有幸運蛋:{0} 個"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "背包裡沒有任何薰香"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "薰香使用中"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "背包中有薰香:{0} 個"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "使用薰香"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "見過的神奇寶貝:{0}/151, 捕捉過的神奇寶貝:{1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[進化] 可進化的神奇寶貝:{0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "沒有足夠的糖果/星塵來升級神奇寶貝"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "狙擊伺服器已離線。正在退出..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "這是您第一次啟動,您要開始設定嗎? {0}=是,{1}=否"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "您要變更預設語言嗎? {0}=是,{1}=否"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "請輸入語言代碼(zh_tw=正體中文)"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "語言代碼已使用: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[錯誤] 錯誤的輸入,請輸入'{0}'或'{1}'"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Config/Auth 檔案將自動生成,完成後才能繼續"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### 設定新帳號 ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "請選擇帳號類型: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "選擇帳號類型: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[錯誤] 輸入了不正確的帳號類型,請選擇'{0}'或'{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "請輸入使用者名稱"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "確認使用者名稱:{0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "請輸入密碼"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "確認密碼:{0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### 完成建立帳號 ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "您要設定一個新的預設地點嗎? {0}=是,{1}=否"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "預設地點已更新"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### 設定預設地點 ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[錯誤] 請輸入一個數字。例如:{0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "請輸入緯度 (右鍵貼上)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "確認已設定:{0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "請輸入經度 (右鍵貼上)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "經度已設定:{0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### 完成配置設定 ###"
+    },
+    {
+      "Key": "PokedexCatchedTelegram",
+      "Value": "--- Pokedex catched --- \n"
+    },
+    {
+      "Key": "PokedexPokemonCatchedTelegram",
+      "Value": "#{0} Name: {1} | Catched: {2} | Encountered: {3} \n"
+    },
+    {
+      "Key": "PokedexNeededTelegram",
+      "Value": "--- Pokedex needed --- \n"
+    },
+    {
+      "Key": "PokedexPokemonNeededTelegram",
+      "Value": "#{0} Name: {1} \n"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "妙蛙種子"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "妙蛙草"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "妙蛙花"
+    },
+    {
+      "Key": "charmander",
+      "Value": "小火龍"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "火恐龍"
+    },
+    {
+      "Key": "charizard",
+      "Value": "噴火龍"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "傑尼龜"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "卡咪龜"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "水箭龜"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "綠毛蟲"
+    },
+    {
+      "Key": "metapod",
+      "Value": "鐵甲蛹"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "巴大蝴"
+    },
+    {
+      "Key": "weedle",
+      "Value": "獨角蟲"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "鐵殼昆"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "大針蜂"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "波波"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "比比鳥"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "比鵰"
+    },
+    {
+      "Key": "rattata",
+      "Value": "小拉達"
+    },
+    {
+      "Key": "raticate",
+      "Value": "拉達"
+    },
+    {
+      "Key": "spearow",
+      "Value": "烈雀"
+    },
+    {
+      "Key": "fearow",
+      "Value": "大嘴雀"
+    },
+    {
+      "Key": "ekans",
+      "Value": "阿柏蛇"
+    },
+    {
+      "Key": "arbok",
+      "Value": "阿柏怪"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "皮卡丘"
+    },
+    {
+      "Key": "raichu",
+      "Value": "雷丘"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "穿山鼠"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "穿山王"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "尼多蘭"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "尼多娜"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "尼多后"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "尼多朗"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "尼多力諾"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "尼多王"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "皮皮"
+    },
+    {
+      "Key": "clefable",
+      "Value": "皮可西"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "六尾"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "九尾"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "胖丁"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "胖可丁"
+    },
+    {
+      "Key": "zubat",
+      "Value": "超音蝠"
+    },
+    {
+      "Key": "golbat",
+      "Value": "大嘴蝠"
+    },
+    {
+      "Key": "oddish",
+      "Value": "走路草"
+    },
+    {
+      "Key": "gloom",
+      "Value": "臭臭花"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "霸王花"
+    },
+    {
+      "Key": "paras",
+      "Value": "派拉斯"
+    },
+    {
+      "Key": "parasect",
+      "Value": "派拉斯特"
+    },
+    {
+      "Key": "venonat",
+      "Value": "毛球"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "末入蛾"
+    },
+    {
+      "Key": "diglett",
+      "Value": "地鼠"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "三地鼠"
+    },
+    {
+      "Key": "meowth",
+      "Value": "喵喵"
+    },
+    {
+      "Key": "persian",
+      "Value": "貓老大"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "可達鴨"
+    },
+    {
+      "Key": "golduck",
+      "Value": "哥達鴨"
+    },
+    {
+      "Key": "mankey",
+      "Value": "猴怪"
+    },
+    {
+      "Key": "primeape",
+      "Value": "火爆猴"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "卡蒂狗"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "風速狗"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "蚊香蝌蚪"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "蚊香蛙"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "快泳蛙"
+    },
+    {
+      "Key": "abra",
+      "Value": "凱西"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "勇吉拉"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "胡地"
+    },
+    {
+      "Key": "machop",
+      "Value": "腕力"
+    },
+    {
+      "Key": "machoke",
+      "Value": "豪力"
+    },
+    {
+      "Key": "machamp",
+      "Value": "怪力"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "喇叭芽"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "口呆花"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "大食花"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "瑪瑙水母"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "毒刺水母"
+    },
+    {
+      "Key": "geodude",
+      "Value": "小拳石"
+    },
+    {
+      "Key": "graveler",
+      "Value": "隆隆石"
+    },
+    {
+      "Key": "golem",
+      "Value": "隆隆岩"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "小火馬"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "烈焰馬"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "呆呆獸"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "呆河馬"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "小磁怪"
+    },
+    {
+      "Key": "magneton",
+      "Value": "三合一磁怪"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "大蔥鴨"
+    },
+    {
+      "Key": "doduo",
+      "Value": "嘟嘟"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "嘟嘟利"
+    },
+    {
+      "Key": "seel",
+      "Value": "小海獅"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "白海獅"
+    },
+    {
+      "Key": "grimer",
+      "Value": "臭泥"
+    },
+    {
+      "Key": "muk",
+      "Value": "臭臭泥"
+    },
+    {
+      "Key": "shellder",
+      "Value": "大舌貝"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "鐵甲貝"
+    },
+    {
+      "Key": "gastly",
+      "Value": "鬼斯"
+    },
+    {
+      "Key": "haunter",
+      "Value": "鬼斯通"
+    },
+    {
+      "Key": "gengar",
+      "Value": "耿鬼"
+    },
+    {
+      "Key": "onix",
+      "Value": "大岩蛇"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "素利普"
+    },
+    {
+      "Key": "hypno",
+      "Value": "素利拍"
+    },
+    {
+      "Key": "krabby",
+      "Value": "大鉗蟹"
+    },
+    {
+      "Key": "kingler",
+      "Value": "巨鉗蟹"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "雷電球"
+    },
+    {
+      "Key": "electrode",
+      "Value": "頑皮彈"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "蛋蛋"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "椰蛋樹"
+    },
+    {
+      "Key": "cubone",
+      "Value": "可拉可拉"
+    },
+    {
+      "Key": "marowak",
+      "Value": "嘎拉嘎拉"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "沙瓦郎"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "艾比郎"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "大舌頭"
+    },
+    {
+      "Key": "koffing",
+      "Value": "瓦斯彈"
+    },
+    {
+      "Key": "weezing",
+      "Value": "雙彈瓦斯"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "鐵甲犀牛"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "鐵甲暴龍"
+    },
+    {
+      "Key": "chansey",
+      "Value": "吉利蛋"
+    },
+    {
+      "Key": "tangela",
+      "Value": "蔓藤怪"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "袋龍"
+    },
+    {
+      "Key": "horsea",
+      "Value": "墨海馬"
+    },
+    {
+      "Key": "seadra",
+      "Value": "海刺龍"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "角金魚"
+    },
+    {
+      "Key": "seaking",
+      "Value": "金魚王"
+    },
+    {
+      "Key": "staryu",
+      "Value": "海星星"
+    },
+    {
+      "Key": "starmie",
+      "Value": "寶石海星"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "吸盤魔偶"
+    },
+    {
+      "Key": "scyther",
+      "Value": "飛天螳螂"
+    },
+    {
+      "Key": "jynx",
+      "Value": "迷唇姐"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "電擊獸"
+    },
+    {
+      "Key": "magmar",
+      "Value": "鴨嘴火龍"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "大甲"
+    },
+    {
+      "Key": "tauros",
+      "Value": "肯泰羅"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "鯉魚王"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "暴鯉龍"
+    },
+    {
+      "Key": "lapras",
+      "Value": "乘龍"
+    },
+    {
+      "Key": "ditto",
+      "Value": "百變怪"
+    },
+    {
+      "Key": "eevee",
+      "Value": "伊布"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "水精靈"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "雷精靈"
+    },
+    {
+      "Key": "flareon",
+      "Value": "火精靈"
+    },
+    {
+      "Key": "porygon",
+      "Value": "3D龍"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "菊石獸"
+    },
+    {
+      "Key": "omastar",
+      "Value": "多刺菊石獸"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "化石盔"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "鐮刀盔"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "化石翼龍"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "卡比獸"
+    },
+    {
+      "Key": "articuno",
+      "Value": "急凍鳥"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "閃電鳥"
+    },
+    {
+      "Key": "moltres",
+      "Value": "火焰鳥"
+    },
+    {
+      "Key": "dratini",
+      "Value": "迷你龍"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "哈克龍"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "快龍"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "超夢"
+    },
+    {
+      "Key": "mew",
+      "Value": "夢幻"
+    }
+  ],
+  "PokemonMovesetStrings": [
+    {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "電擊"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "電光石火"
+    },
+    {
+      "Key": "scratch",
+      "Value": "抓擊"
+    },
+    {
+      "Key": "ember",
+      "Value": "火苗"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "藤鞭攻擊"
+    },
+    {
+      "Key": "tackle",
+      "Value": "撞擊"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "飛葉斬"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "猛撞"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "水槍攻擊"
+    },
+    {
+      "Key": "bite",
+      "Value": "啃咬"
+    },
+    {
+      "Key": "pound",
+      "Value": "拍打"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "連環巴掌"
+    },
+    {
+      "Key": "wrap",
+      "Value": "卷緊"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "破壞光線"
+    },
+    {
+      "Key": "lick",
+      "Value": "舌舔"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "惡之波動"
+    },
+    {
+      "Key": "smog",
+      "Value": "迷霧"
+    },
+    {
+      "Key": "sludge",
+      "Value": "淤泥攻擊"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "金屬爪擊"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "夾擊"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "火焰輪轉攻擊"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "百萬角擊"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "翅膀拍擊"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "火焰放射"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "偷襲"
+    },
+    {
+      "Key": "dig",
+      "Value": "挖洞"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "過肩摔"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "十字切"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "精神切割"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "精神光線"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "地震"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "石刃"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "冷凍拳"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "心靈壓迫"
+    },
+    {
+      "Key": "discharge",
+      "Value": "放電"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "光柵加農"
+    },
+    {
+      "Key": "peck",
+      "Value": "啄擊"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "鑽孔啄擊"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "冷凍光線"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "暴風雪"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "空氣砍"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "熱風"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "雙針"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "毒突攻擊"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "燕返"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "鑽頭直擊"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "花吹雪"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "百萬吸取"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "蟲鳴"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "劇毒之牙"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "夜斬"
+    },
+    {
+      "Key": "slash",
+      "Value": "斬擊"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "泡沫光線"
+    },
+    {
+      "Key": "submission",
+      "Value": "地獄車"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "空手刀"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "掃堂腿"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "水流噴射"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "水之尾"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "種子爆彈"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "精神衝擊"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "落石"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "原始力量"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "岩石封"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "岩崩"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "力量寶石"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "影擊"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "暗影拳"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "暗影爪擊"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "妖風"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "暗影球"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "子彈拳"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "磁體炸彈"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "鋼之翼"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "鐵頭槌"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "拋物式充電"
+    },
+    {
+      "Key": "spark",
+      "Value": "電火花"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "雷電拳"
+    },
+    {
+      "Key": "thunder",
+      "Value": "雷電"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "十萬伏特"
+    },
+    {
+      "Key": "twister",
+      "Value": "龍捲風"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "龍之吐息"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "龍之波動"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "龍之爪擊"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "魅音"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "吸收之吻"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "魔法閃光"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "月爆"
+    },
+    {
+      "Key": "playRough",
+      "Value": "嬉鬧"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "毒十字"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "淤泥爆彈"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "淤泥波"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "粉塵射擊"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "泥漿噴射"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "骨頭棍"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "壓路"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "泥爆彈"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "連續切"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "蟲食"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "信號光線"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "十字剪"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "硝化衝鋒"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "爆裂火焰"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "大字火"
+    },
+    {
+      "Key": "brine",
+      "Value": "潮水"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "水之波動"
+    },
+    {
+      "Key": "scald",
+      "Value": "沸水"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "水壓"
+    },
+    {
+      "Key": "psychic",
+      "Value": "精神干擾"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "精神破壞"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "冰之礫"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "冰凍之風"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "冰之吐息"
+    },
+    {
+      "Key": "absorb",
+      "Value": "Absorb"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "億萬吸取"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "火焰拳"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "太陽光線"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "刃葉斬"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "強力鞭撻"
+    },
+    {
+      "Key": "splash",
+      "Value": "水濺躍"
+    },
+    {
+      "Key": "acid",
+      "Value": "溶解液"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "空氣刃"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "暴風"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "瓦割"
+    },
+    {
+      "Key": "cut",
+      "Value": "居合斬"
+    },
+    {
+      "Key": "swift",
+      "Value": "迅星"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "角突"
+    },
+    {
+      "Key": "stomp",
+      "Value": "踐踏"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "心靈壓迫"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "必殺門牙"
+    },
+    {
+      "Key": "slam",
+      "Value": "摔打"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "壓制"
+    },
+    {
+      "Key": "rest",
+      "Value": "睡眠"
+    },
+    {
+      "Key": "struggle",
+      "Value": "拼命"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "沸水(水箭龜)"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "水壓(水箭龜)"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "卷緊-綠"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "卷緊-粉"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "連續切"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "蟲食"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "啃咬"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "偷襲"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "龍之吐息"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "電擊"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "電火花"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "過肩摔"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "空手刀"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "火苗"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "翅膀拍擊"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "啄擊"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "舌舔"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "暗影爪擊"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "藤鞭攻擊"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "飛葉斬"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "泥漿噴射"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "冰之礫"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "冰之吐息"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "電光石火"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "抓擊"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "撞擊"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "拍打"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "居合斬"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "毒刺"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "溶解液"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "精神切割"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "滾石"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "合金爪"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "飛彈拳"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "水槍"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "水濺躍"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "水槍(水箭龜)"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "擲泥"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "意念頭錘"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "念力"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "毒針"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "泡泡"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "虛晃一招"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "鋼之翼"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "炎牙"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "岩石粉碎"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_hk.json b/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_hk.json
new file mode 100644
index 0000000..dc1067c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/Translations/translation.zh_hk.json
@@ -0,0 +1,1964 @@
+{
+  "TranslationStrings": [
+    {
+      "Key": "pokeball",
+      "Value": "精靈球"
+    },
+    {
+      "Key": "greatPokeball",
+      "Value": "高級精靈球"
+    },
+    {
+      "Key": "ultraPokeball",
+      "Value": "超級精靈球"
+    },
+    {
+      "Key": "masterPokeball",
+      "Value": "掌門精靈球"
+    },
+    {
+      "Key": "wrongAuthType",
+      "Value": "錯誤的認證資訊"
+    },
+    {
+      "Key": "loginInvalid",
+      "Value": "用戶憑證失效,登入失敗"
+    },
+    {
+      "Key": "farmPokestopsOutsideRadius",
+      "Value": "您已經走出範圍!5秒後返回起點(距離{0}公尺),請確認系統設定是否正確"
+    },
+    {
+      "Key": "farmPokestopsNoUsableFound",
+      "Value": "您附近沒有任何可用的補給站,請確認系統設定是否正確"
+    },
+    {
+      "Key": "eventFortUsed",
+      "Value": "名稱:{0} 經驗值:{1}, 金幣:{2}, 物品:{3}"
+    },
+    {
+      "Key": "eventFortFailed",
+      "Value": "名稱:{0} 資訊:操作失敗,可能被封禁。正在解封:{1}/{2}"
+    },
+    {
+      "Key": "eventFortTargeted",
+      "Value": "前往補給站:{0} (距離{1}公尺)"
+    },
+    {
+      "Key": "eventProfileLogin",
+      "Value": "登入帳號 {0}"
+    },
+    {
+      "Key": "eventUsedIncense",
+      "Value": "使用薰香,剩餘數量:{0}"
+    },
+    {
+      "Key": "eventUsedLuckyEgg",
+      "Value": "使用幸運蛋,剩餘數量:{0}"
+    },
+    {
+      "Key": "eventPokemonEvolvedSuccess",
+      "Value": "成功進化 {0} 獲得 {1} 經驗值"
+    },
+    {
+      "Key": "eventPokemonEvolvedFailed",
+      "Value": "{0} 進化失敗,原因是 {1},已取消進化 {2}"
+    },
+    {
+      "Key": "eventPokemonTransferred",
+      "Value": "{0}\t- CP值:{1}  完美度:{2}%   [已擁有 CP值:{3}  完美度:{4}%] (還有{5}顆該種類的糖果)"
+    },
+    {
+      "Key": "eventItemRecycled",
+      "Value": "{0}x {1}"
+    },
+    {
+      "Key": "eventPokemonCaptureSuccess",
+      "Value": "({0}) | ({1}) {2} 等級: {3} CP: ({4}/{5}) IV: {6}% | 捕獲機率: {7}% | 距離{8}公尺 | 使用{9}捕捉 (剩餘{10}個) | 經驗值+{11} | {12} | 座標: {13},{14}"
+    },
+    {
+      "Key": "eventPokemonCaptureFailed",
+      "Value": "({0}) | ({1}) {2} 等級: {3} CP: ({4}/{5}) IV: {6}% | 捕獲機率: {7}% | 距離{8}公尺 | 使用{9}捕捉 (剩餘{10}個) | 座標: {11},{12}"
+    },
+    {
+      "Key": "eventNoPokeballs",
+      "Value": "沒有精靈球了,我們錯過了一隻 CP值為 {1} 的 {0} "
+    },
+    {
+      "Key": "waitingForMorePokemonToEvolve",
+      "Value": "目前有 {0} 隻小精靈,再捕捉 {1} 隻小精靈後將會進化! (目前有 {2}/{3} 佔背包總量的 {4}% )"
+    },
+    {
+      "Key": "useLuckyEggsMinPokemonAmountTooHigh",
+      "Value": "當設定值 UseLuckyEggsMinPokemonAmount 設定為 {0} 將不會使用幸運蛋,請改為 <= {1}"
+    },
+    {
+      "Key": "catchMorePokemonToUseLuckyEgg",
+      "Value": "再捕捉 {0} 隻小精靈後將會使用幸運蛋!"
+    },
+    {
+      "Key": "eventUseBerry",
+      "Value": "已使用 {0} | 剩餘 {1} "
+    },
+    {
+      "Key": "itemRazzBerry",
+      "Value": "樹果"
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "{0} 重試 #{1}"
+    },
+    {
+      "Key": "catchStatus",
+      "Value": "{0}"
+    },
+    {
+      "Key": "candies",
+      "Value": "還有{0}顆該種類的糖果"
+    },
+    {
+      "Key": "unhandledGpxData",
+      "Value": "在 GPX 文件中發現異常數據,試圖跳過。"
+    },
+    {
+      "Key": "displayHighestsHeader",
+      "Value": "寵物小精靈"
+    },
+    {
+      "Key": "commonWordPerfect",
+      "Value": "完美度"
+    },
+    {
+      "Key": "commonWordName",
+      "Value": "名稱"
+    },
+    {
+      "Key": "commonWordUnknown",
+      "Value": "未知"
+    },
+    {
+      "Key": "displayHighestsCpHeader",
+      "Value": "顯示最高 CP值"
+    },
+    {
+      "Key": "displayHighestsPerfectHeader",
+      "Value": "顯示最高完美度"
+    },
+    {
+      "Key": "displayHighestsLevelHeader",
+      "Value": "顯示最高等級"
+    },
+    {
+      "Key": "welcomeWarning",
+      "Value": "確認經緯度是否正確,如果錯誤將會退出程式! 緯度:{0} 經度:{1}"
+    },
+    {
+      "Key": "incubatorPuttingEgg",
+      "Value": "正在將寵物蛋放入孵化器中:剩餘{0:0.00}公里"
+    },
+    {
+      "Key": "incubatorStatusUpdate",
+      "Value": "更新孵化器狀態:剩餘{0:0.00}公里"
+    },
+    {
+      "Key": "incubatorEggHatched",
+      "Value": "孵化器已經孵出:{0}"
+    },
+    {
+      "Key": "logEntryError",
+      "Value": "錯誤"
+    },
+    {
+      "Key": "logEntryAttention",
+      "Value": "注意"
+    },
+    {
+      "Key": "logEntryInfo",
+      "Value": "提醒"
+    },
+    {
+      "Key": "logEntryPokestop",
+      "Value": "補給站"
+    },
+    {
+      "Key": "logEntryFarming",
+      "Value": "開刷"
+    },
+    {
+      "Key": "logEntrySniper",
+      "Value": "狙擊"
+    },
+    {
+      "Key": "logEntryRecycling",
+      "Value": "刪除"
+    },
+    {
+      "Key": "logEntryPKMN",
+      "Value": "捕捉"
+    },
+    {
+      "Key": "logEntryTransfered",
+      "Value": "傳送"
+    },
+    {
+      "Key": "logEntryEvolved",
+      "Value": "進化"
+    },
+    {
+      "Key": "logEntryBerry",
+      "Value": "樹果"
+    },
+    {
+      "Key": "logEntryEgg",
+      "Value": "寵物蛋"
+    },
+    {
+      "Key": "logEntryDebug",
+      "Value": "除錯"
+    },
+    {
+      "Key": "logEntryUpdate",
+      "Value": "更新"
+    },
+    {
+      "Key": "logEntryNew",
+      "Value": "新"
+    },
+    {
+      "Key": "loggingIn",
+      "Value": "正在登入{0}帳號"
+    },
+    {
+      "Key": "ptcOffline",
+      "Value": "PTC 服務器可能關閉或您的帳號錯誤,請嘗試 Google 帳號登入"
+    },
+    {
+      "Key": "accessTokenExpired",
+      "Value": "PTC 登入憑證過期。重新登入..."
+    },
+    {
+      "Key": "invalidResponse",
+      "Value": "收到 Niantic 伺服器的無效回應"
+    },
+    {
+      "Key": "tryingAgainIn",
+      "Value": "將在 {0} 秒後重試..."
+    },
+    {
+      "Key": "accountNotVerified",
+      "Value": "帳號或密碼錯誤!退出..."
+    },
+    {
+      "Key": "openingGoogleDevicePage",
+      "Value": "正在打開 Google Device 網頁,請用 CTRL+V 貼上驗證碼"
+    },
+    {
+      "Key": "couldntCopyToClipboard",
+      "Value": "無法將驗證碼複製到剪貼板,請手動複製"
+    },
+    {
+      "Key": "couldntCopyToClipboard2",
+      "Value": "打開:{0} 後輸入 {1}"
+    },
+    {
+      "Key": "realisticTravelDetected",
+      "Value": "檢測到真實的旅行,使用用戶配置"
+    },
+    {
+      "Key": "notRealisticTravel",
+      "Value": "未檢測到真實的旅行 {0}, 使用上一次儲存的設定"
+    },
+    {
+      "Key": "coordinatesAreInvalid",
+      "Value": "無效的座標文件,使用預設座標"
+    },
+    {
+      "Key": "gotUpToDateVersion",
+      "Value": "恭喜!你已經更新至最新版本:{0}"
+    },
+    {
+      "Key": "autoUpdaterDisabled",
+      "Value": "自動更新已禁用,目前最新的版本為:{0}\n "
+    },
+    {
+      "Key": "downloadingUpdate",
+      "Value": "正在下載安裝更新..."
+    },
+    {
+      "Key": "finishedDownloadingRelease",
+      "Value": "新版本下載完成..."
+    },
+    {
+      "Key": "finishedUnpackingFiles",
+      "Value": "解壓縮完成..."
+    },
+    {
+      "Key": "finishedTransferringConfig",
+      "Value": "成功將您的設定更新至最新版..."
+    },
+    {
+      "Key": "updateFinished",
+      "Value": "更新完畢,您現在可以關閉這個視窗。"
+    },
+    {
+      "Key": "lookingForIncensePokemon",
+      "Value": "正在搜索薰香引來的小精靈..."
+    },
+    {
+      "Key": "lookingForPokemon",
+      "Value": "正在搜索小精靈..."
+    },
+    {
+      "Key": "lookingForLurePokemon",
+      "Value": "正在搜索誘餌吸引來的小精靈..."
+    },
+    {
+      "Key": "pokemonSkipped",
+      "Value": "跳過:{0}"
+    },
+    {
+      "Key": "zeroPokeballInv",
+      "Value": "您身上已沒有精靈球,將不會捕捉任何小精靈!"
+    },
+    {
+      "Key": "currentPokeballInv",
+      "Value": "精靈球: {0} | 高級球: {1} | 超級球: {2} | 掌門球: {3}"
+    },
+    {
+      "Key": "CurrentPotionInv",
+      "Value": "藥水: {0} | 超級藥水: {1} | 超高級藥水: {2} | 全滿藥水: {3}"
+    },
+    {
+      "Key": "CurrentReviveInv",
+      "Value": "更生劑: {0} | 特級更生劑: {1}"
+    },
+    {
+      "Key": "CurrentMiscItemInv",
+      "Value": "樹果: {0} | 薰香: {1} | 幸運蛋: {2} | 誘餌: {3}"
+    },
+    {
+      "Key": "maxItemsCombinedOverMaxItemStorage",
+      "Value": "[錯誤] 您設定的物品數量錯誤 (精靈球+藥水+更生劑={0}) 數量已超過您背包最大容量 ({1})"
+    },
+    {
+      "Key": "recyclingQuietly",
+      "Value": "丟棄不提醒..."
+    },
+    {
+      "Key": "invFullTransferring",
+      "Value": "背包滿了,正在傳送小精靈..."
+    },
+    {
+      "Key": "invFullTransferManually",
+      "Value": "背包滿了,請手動傳送小精靈或修改 TransferDuplicatePokemon 為 true..."
+    },
+    {
+      "Key": "invFullPokestopLooting",
+      "Value": "背包滿了,將不會拾取任何物品..."
+    },
+    {
+      "Key": "encounterProblem",
+      "Value": "發生錯誤:{0}"
+    },
+    {
+      "Key": "encounterProblemLurePokemon",
+      "Value": "發生錯誤:誘餌吸引來的小精靈 {0}"
+    },
+    {
+      "Key": "desiredDestTooFar",
+      "Value": "您要去的地方 {0}, {1} 距離目前的位置太遠了 {2}, {3}"
+    },
+    {
+      "Key": "pokemonRename",
+      "Value": "正在將小精靈 {0} ({1}) 從 {2} 重命名為 {3}."
+    },
+    {
+      "Key": "pokemonFavorite",
+      "Value": "{0}% 完美度 {1} (CP {2}) *最愛*."
+    },
+    {
+      "Key": "pokemonIgnoreFilter",
+      "Value": "[小精靈過濾器] - 已根據設定忽略 {0} "
+    },
+    {
+      "Key": "catchStatusAttempt",
+      "Value": "嘗試捕捉"
+    },
+    {
+      "Key": "catchStatusError",
+      "Value": "捕捉錯誤"
+    },
+    {
+      "Key": "catchStatusEscape",
+      "Value": "捕捉失敗"
+    },
+    {
+      "Key": "catchStatusFlee",
+      "Value": "捕捉消失"
+    },
+    {
+      "Key": "catchStatusMissed",
+      "Value": "錯過捕捉"
+    },
+    {
+      "Key": "catchStatusSuccess",
+      "Value": "捕捉成功"
+    },
+    {
+      "Key": "catchTypeNormal",
+      "Value": "一般"
+    },
+    {
+      "Key": "catchTypeLure",
+      "Value": "誘餌"
+    },
+    {
+      "Key": "catchTypeIncense",
+      "Value": "薰香"
+    },
+    {
+      "Key": "webSocketFailStart",
+      "Value": "無法啟動WebSocket服務器, 通訊埠:{0}"
+    },
+    {
+      "Key": "statsTemplateString",
+      "Value": "{0} - 運行時間 {1} - 等級: {2} | 經驗/小時: {3:0} | 捕獲/小時: {4:0} | 星塵: {5:0} | 傳送: {6:0} | 丟棄: {7:0}"
+    },
+    {
+      "Key": "statsXpTemplateString",
+      "Value": "{0} (預計升級時間 {1}小時 {2}分鐘 | {3}/{4}經驗 )"
+    },
+    {
+      "Key": "RequireInputText",
+      "Value": "按任意鍵繼續..."
+    },
+    {
+      "Key": "googleTwoFactorAuth",
+      "Value": "當您啟用了 Google 的兩步驟驗證後,需要在 auth.json 中輸入應用程式專用密碼"
+    },
+    {
+      "Key": "googleTwoFactorAuthExplanation",
+      "Value": "打開 Google App - 登入和安全性 - 密碼和帳戶登入方式 - 應用程式密碼,請設定一個新的程式專用密碼(使用其它設備)"
+    },
+    {
+      "Key": "googleError",
+      "Value": "請確認輸入了正確的信箱地址和密碼。"
+    },
+    {
+      "Key": "googleOffline",
+      "Value": "無法連接 Google 服務器,請稍後再試"
+    },
+    {
+      "Key": "missingCredentialsGoogle",
+      "Value": "您需要在 auth.json 中填寫 Google 帳戶和密碼!"
+    },
+    {
+      "Key": "missingCredentialsPtc",
+      "Value": "您需要在 auth.json 中填寫 PTC 帳戶和密碼!"
+    },
+    {
+      "Key": "snipeScan",
+      "Value": "在  {0} 搜尋狙擊列表中的小精靈..."
+    },
+    {
+      "Key": "snipeScanEx",
+      "Value": "狙擊 {0} IV: {1}  於: {2}..."
+    },
+    {
+      "Key": "noPokemonToSnipe",
+      "Value": "沒有任何小精靈可狙擊..."
+    },
+    {
+      "Key": "notEnoughPokeballsToSnipe",
+      "Value": "沒有足夠的精靈球來狙擊... ({0}/{1})"
+    },
+    {
+      "Key": "displayHighestMove1Header",
+      "Value": "技能1"
+    },
+    {
+      "Key": "displayHighestMove2Header",
+      "Value": "技能2"
+    },
+    {
+      "Key": "displayHighestCandy",
+      "Value": "糖果"
+    },
+    {
+      "Key": "ipBannedError",
+      "Value": "拒絕連線. 您的 IP 可能已被 Niantic 列入黑名單. 正在退出.."
+    },
+    {
+      "Key": "noEggsAvailable",
+      "Value": "背包裡沒有任何幸運蛋"
+    },
+    {
+      "Key": "useLuckyEggActive",
+      "Value": "幸運蛋使用中"
+    },
+    {
+      "Key": "usedLuckyEgg",
+      "Value": "使用幸運蛋"
+    },
+    {
+      "Key": "useLuckyEggAmount",
+      "Value": "背包中有幸運蛋: {0} 個"
+    },
+    {
+      "Key": "noIncenseAvailable",
+      "Value": "背包裡沒有任何薰香"
+    },
+    {
+      "Key": "useIncenseActive",
+      "Value": "薰香使用中"
+    },
+    {
+      "Key": "useIncenseAmount",
+      "Value": "背包中有薰香: {0} 個"
+    },
+    {
+      "Key": "usedIncense",
+      "Value": "使用薰香"
+    },
+    {
+      "Key": "amountPkmSeenCaught",
+      "Value": "見過的小精靈: {0}/151, 捕捉過的小精靈: {1}/151"
+    },
+    {
+      "Key": "pkmPotentialEvolveCount",
+      "Value": "[進化] 目前可進行進化的小精靈: {0}"
+    },
+    {
+      "Key": "pkmNotEnoughRessources",
+      "Value": "沒有足夠的糖果/星塵來升級小精靈"
+    },
+    {
+      "Key": "snipeServerOffline",
+      "Value": "狙擊伺服器已離線. 正在退出..."
+    },
+    {
+      "Key": "firstStartPrompt",
+      "Value": "這是你第一次啟動,你要開始設定嗎? {0}=是,{1}=否"
+    },
+    {
+      "Key": "firstStartLanguagePrompt",
+      "Value": "您要變更預設語言嗎? {0}=是,{1}=否"
+    },
+    {
+      "Key": "firstStartLanguageCodePrompt",
+      "Value": "請輸入語言代碼(zh_hk=中文香港)"
+    },
+    {
+      "Key": "firstStartLanguageConfirm",
+      "Value": "語言代碼已使用: {0}"
+    },
+    {
+      "Key": "promptError",
+      "Value": "[錯誤]錯誤的輸入,請輸入'{0}'或'{1}'"
+    },
+    {
+      "Key": "firstStartAutoGenSettings",
+      "Value": "Config/Auth 檔案將自動生成,完成後才能繼續"
+    },
+    {
+      "Key": "firstStartSetupAccount",
+      "Value": "### 設定新帳號 ###"
+    },
+    {
+      "Key": "firstStartSetupTypePrompt",
+      "Value": "請選擇帳號類型: {0}/{1}"
+    },
+    {
+      "Key": "firstStartSetupTypeConfirm",
+      "Value": "選擇帳號類型: {0}"
+    },
+    {
+      "Key": "firstStartSetupTypePromptError",
+      "Value": "[錯誤]輸入了不正確的帳號類型,請選擇'{0}'或'{1}'"
+    },
+    {
+      "Key": "firstStartSetupUsernamePrompt",
+      "Value": "請輸入用戶名"
+    },
+    {
+      "Key": "firstStartSetupUsernameConfirm",
+      "Value": "確認用戶名:{0}"
+    },
+    {
+      "Key": "firstStartSetupPasswordPrompt",
+      "Value": "請輸入密碼"
+    },
+    {
+      "Key": "firstStartSetupPasswordConfirm",
+      "Value": "確認密碼:{0}"
+    },
+    {
+      "Key": "firstStartAccountCompleted",
+      "Value": "### 建立帳號完成 ###"
+    },
+    {
+      "Key": "firstStartDefaultLocationPrompt",
+      "Value": "您要設定一個新的預設地點嗎? {0}=是,{1}=否"
+    },
+    {
+      "Key": "firstStartDefaultLocationSet",
+      "Value": "預設地點已更新"
+    },
+    {
+      "Key": "firstStartDefaultLocation",
+      "Value": "### 設定預設地點 ###"
+    },
+    {
+      "Key": "firstStartSetupDefaultLocationError",
+      "Value": "[錯誤] 請輸入一個數字。例如:{0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatPrompt",
+      "Value": "請輸入緯度 (右鍵貼上)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLatConfirm",
+      "Value": "緯度已設定成:{0}"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongPrompt",
+      "Value": "請輸入經度 (右鍵貼上)"
+    },
+    {
+      "Key": "firstStartSetupDefaultLongConfirm",
+      "Value": "經度已設定成:{0}"
+    },
+    {
+      "Key": "firstStartSetupCompleted",
+      "Value": "### 首次設定完成 ###"
+    }
+  ],
+  "PokemonStrings": [
+    {
+      "Key": "bulbasaur",
+      "Value": "奇異種子"
+    },
+    {
+      "Key": "ivysaur",
+      "Value": "奇異草"
+    },
+    {
+      "Key": "venusaur",
+      "Value": "奇異花"
+    },
+    {
+      "Key": "charmander",
+      "Value": "小火龍"
+    },
+    {
+      "Key": "charmeleon",
+      "Value": "火恐龍"
+    },
+    {
+      "Key": "charizard",
+      "Value": "噴火龍"
+    },
+    {
+      "Key": "squirtle",
+      "Value": "車厘龜"
+    },
+    {
+      "Key": "wartortle",
+      "Value": "卡美龜"
+    },
+    {
+      "Key": "blastoise",
+      "Value": "水箭龜"
+    },
+    {
+      "Key": "caterpie",
+      "Value": "綠毛蟲"
+    },
+    {
+      "Key": "metapod",
+      "Value": "鐵甲蟲"
+    },
+    {
+      "Key": "butterfree",
+      "Value": "巴他蝶"
+    },
+    {
+      "Key": "weedle",
+      "Value": "獨角蟲"
+    },
+    {
+      "Key": "kakuna",
+      "Value": "鐵殼蛹"
+    },
+    {
+      "Key": "beedrill",
+      "Value": "大針蜂"
+    },
+    {
+      "Key": "pidgey",
+      "Value": "波波"
+    },
+    {
+      "Key": "pidgeotto",
+      "Value": "比比鳥"
+    },
+    {
+      "Key": "pidgeot",
+      "Value": "大比鳥"
+    },
+    {
+      "Key": "rattata",
+      "Value": "小哥達"
+    },
+    {
+      "Key": "raticate",
+      "Value": "哥達"
+    },
+    {
+      "Key": "spearow",
+      "Value": "鬼雀"
+    },
+    {
+      "Key": "fearow",
+      "Value": "魔雀"
+    },
+    {
+      "Key": "ekans",
+      "Value": "阿柏蛇"
+    },
+    {
+      "Key": "arbok",
+      "Value": "阿柏怪"
+    },
+    {
+      "Key": "pikachu",
+      "Value": "比卡超"
+    },
+    {
+      "Key": "raichu",
+      "Value": "雷超"
+    },
+    {
+      "Key": "sandshrew",
+      "Value": "穿山鼠"
+    },
+    {
+      "Key": "sandslash",
+      "Value": "穿山王"
+    },
+    {
+      "Key": "nidoranFemale",
+      "Value": "尼美蘭"
+    },
+    {
+      "Key": "nidorina",
+      "Value": "尼美蘿"
+    },
+    {
+      "Key": "nidoqueen",
+      "Value": "尼美后"
+    },
+    {
+      "Key": "nidoranMale",
+      "Value": "尼多郎"
+    },
+    {
+      "Key": "nidorino",
+      "Value": "尼多利"
+    },
+    {
+      "Key": "nidoking",
+      "Value": "尼多王"
+    },
+    {
+      "Key": "clefairy",
+      "Value": "皮皮"
+    },
+    {
+      "Key": "clefable",
+      "Value": "皮可斯"
+    },
+    {
+      "Key": "vulpix",
+      "Value": "六尾"
+    },
+    {
+      "Key": "ninetales",
+      "Value": "九尾"
+    },
+    {
+      "Key": "jigglypuff",
+      "Value": "波波球"
+    },
+    {
+      "Key": "wigglytuff",
+      "Value": "肥波球"
+    },
+    {
+      "Key": "zubat",
+      "Value": "波音蝠"
+    },
+    {
+      "Key": "golbat",
+      "Value": "大口蝠"
+    },
+    {
+      "Key": "oddish",
+      "Value": "行路草"
+    },
+    {
+      "Key": "gloom",
+      "Value": "怪味花"
+    },
+    {
+      "Key": "vileplume",
+      "Value": "霸王花"
+    },
+    {
+      "Key": "paras",
+      "Value": "蘑菇蟲"
+    },
+    {
+      "Key": "parasect",
+      "Value": "巨菇蟲"
+    },
+    {
+      "Key": "venonat",
+      "Value": "毛毛蟲"
+    },
+    {
+      "Key": "venomoth",
+      "Value": "魔魯風"
+    },
+    {
+      "Key": "diglett",
+      "Value": "地鼠"
+    },
+    {
+      "Key": "dugtrio",
+      "Value": "三頭地鼠"
+    },
+    {
+      "Key": "meowth",
+      "Value": "喵喵怪"
+    },
+    {
+      "Key": "persian",
+      "Value": "高竇貓"
+    },
+    {
+      "Key": "psyduck",
+      "Value": "傻鴨"
+    },
+    {
+      "Key": "golduck",
+      "Value": "高超鴨"
+    },
+    {
+      "Key": "mankey",
+      "Value": "猴怪"
+    },
+    {
+      "Key": "primeape",
+      "Value": "火爆猴"
+    },
+    {
+      "Key": "growlithe",
+      "Value": "護主犬"
+    },
+    {
+      "Key": "arcanine",
+      "Value": "奉神犬"
+    },
+    {
+      "Key": "poliwag",
+      "Value": "蚊香蝌蚪"
+    },
+    {
+      "Key": "poliwhirl",
+      "Value": "蚊香蛙"
+    },
+    {
+      "Key": "poliwrath",
+      "Value": "大力蛙"
+    },
+    {
+      "Key": "abra",
+      "Value": "卡斯"
+    },
+    {
+      "Key": "kadabra",
+      "Value": "尤基納"
+    },
+    {
+      "Key": "alakazam",
+      "Value": "富迪"
+    },
+    {
+      "Key": "machop",
+      "Value": "鐵腕"
+    },
+    {
+      "Key": "machoke",
+      "Value": "大力"
+    },
+    {
+      "Key": "machamp",
+      "Value": "怪力"
+    },
+    {
+      "Key": "bellsprout",
+      "Value": "喇叭芽"
+    },
+    {
+      "Key": "weepinbell",
+      "Value": "口呆花"
+    },
+    {
+      "Key": "victreebel",
+      "Value": "大食花"
+    },
+    {
+      "Key": "tentacool",
+      "Value": "大眼水母"
+    },
+    {
+      "Key": "tentacruel",
+      "Value": "多腳水母"
+    },
+    {
+      "Key": "geodude",
+      "Value": "小拳石"
+    },
+    {
+      "Key": "graveler",
+      "Value": "滾動石"
+    },
+    {
+      "Key": "golem",
+      "Value": "滾動岩"
+    },
+    {
+      "Key": "ponyta",
+      "Value": "小火馬"
+    },
+    {
+      "Key": "rapidash",
+      "Value": "烈焰馬"
+    },
+    {
+      "Key": "slowpoke",
+      "Value": "小呆獸"
+    },
+    {
+      "Key": "slowbro",
+      "Value": "大呆獸"
+    },
+    {
+      "Key": "magnemite",
+      "Value": "小磁怪"
+    },
+    {
+      "Key": "magneton",
+      "Value": "三合一磁怪"
+    },
+    {
+      "Key": "farfetchd",
+      "Value": "火蔥鴨"
+    },
+    {
+      "Key": "doduo",
+      "Value": "多多"
+    },
+    {
+      "Key": "dodrio",
+      "Value": "多多利"
+    },
+    {
+      "Key": "seel",
+      "Value": "小海獅"
+    },
+    {
+      "Key": "dewgong",
+      "Value": "白海獅"
+    },
+    {
+      "Key": "grimer",
+      "Value": "爛泥怪"
+    },
+    {
+      "Key": "muk",
+      "Value": "爛泥獸"
+    },
+    {
+      "Key": "shellder",
+      "Value": "貝殼怪"
+    },
+    {
+      "Key": "cloyster",
+      "Value": "鐵甲貝"
+    },
+    {
+      "Key": "gastly",
+      "Value": "鬼斯"
+    },
+    {
+      "Key": "haunter",
+      "Value": "鬼斯通"
+    },
+    {
+      "Key": "gengar",
+      "Value": "耿鬼"
+    },
+    {
+      "Key": "onix",
+      "Value": "大岩蛇"
+    },
+    {
+      "Key": "drowzee",
+      "Value": "食夢獸"
+    },
+    {
+      "Key": "hypno",
+      "Value": "催眠獸"
+    },
+    {
+      "Key": "krabby",
+      "Value": "大鉗蟹"
+    },
+    {
+      "Key": "kingler",
+      "Value": "巨鉗蟹"
+    },
+    {
+      "Key": "voltorb",
+      "Value": "霹靂蛋"
+    },
+    {
+      "Key": "electrode",
+      "Value": "雷霆蛋"
+    },
+    {
+      "Key": "exeggcute",
+      "Value": "蛋蛋"
+    },
+    {
+      "Key": "exeggutor",
+      "Value": "椰樹獸"
+    },
+    {
+      "Key": "cubone",
+      "Value": "卡拉卡拉"
+    },
+    {
+      "Key": "marowak",
+      "Value": "格拉格拉"
+    },
+    {
+      "Key": "hitmonlee",
+      "Value": "沙古拉"
+    },
+    {
+      "Key": "hitmonchan",
+      "Value": "比華拉"
+    },
+    {
+      "Key": "lickitung",
+      "Value": "大舌頭"
+    },
+    {
+      "Key": "koffing",
+      "Value": "毒氣丸"
+    },
+    {
+      "Key": "weezing",
+      "Value": "毒氣雙子"
+    },
+    {
+      "Key": "rhyhorn",
+      "Value": "鐵甲犀牛"
+    },
+    {
+      "Key": "rhydon",
+      "Value": "鐵甲暴龍"
+    },
+    {
+      "Key": "chansey",
+      "Value": "吉利蛋"
+    },
+    {
+      "Key": "tangela",
+      "Value": "長籐怪"
+    },
+    {
+      "Key": "kangaskhan",
+      "Value": "袋獸"
+    },
+    {
+      "Key": "horsea",
+      "Value": "噴墨海馬"
+    },
+    {
+      "Key": "seadra",
+      "Value": "飛刺海馬"
+    },
+    {
+      "Key": "goldeen",
+      "Value": "獨角金魚"
+    },
+    {
+      "Key": "seaking",
+      "Value": "金魚王"
+    },
+    {
+      "Key": "staryu",
+      "Value": "海星星"
+    },
+    {
+      "Key": "starmie",
+      "Value": "寶石海星"
+    },
+    {
+      "Key": "mrMime",
+      "Value": "吸盤小丑"
+    },
+    {
+      "Key": "scyther",
+      "Value": "飛天螳螂"
+    },
+    {
+      "Key": "jynx",
+      "Value": "紅唇娃"
+    },
+    {
+      "Key": "electabuzz",
+      "Value": "電擊獸"
+    },
+    {
+      "Key": "magmar",
+      "Value": "鴨嘴火龍"
+    },
+    {
+      "Key": "pinsir",
+      "Value": "鉗刀甲蟲"
+    },
+    {
+      "Key": "tauros",
+      "Value": "大隻牛"
+    },
+    {
+      "Key": "magikarp",
+      "Value": "鯉魚王"
+    },
+    {
+      "Key": "gyarados",
+      "Value": "鯉魚龍"
+    },
+    {
+      "Key": "lapras",
+      "Value": "背背龍"
+    },
+    {
+      "Key": "ditto",
+      "Value": "百變怪"
+    },
+    {
+      "Key": "eevee",
+      "Value": "伊貝"
+    },
+    {
+      "Key": "vaporeon",
+      "Value": "水伊貝"
+    },
+    {
+      "Key": "jolteon",
+      "Value": "雷伊貝"
+    },
+    {
+      "Key": "flareon",
+      "Value": "火伊貝"
+    },
+    {
+      "Key": "porygon",
+      "Value": "立方獸"
+    },
+    {
+      "Key": "omanyte",
+      "Value": "菊石獸"
+    },
+    {
+      "Key": "omastar",
+      "Value": "多刺菊石獸"
+    },
+    {
+      "Key": "kabuto",
+      "Value": "萬年蟲"
+    },
+    {
+      "Key": "kabutops",
+      "Value": "鐮刀蟲"
+    },
+    {
+      "Key": "aerodactyl",
+      "Value": "化石飛龍"
+    },
+    {
+      "Key": "snorlax",
+      "Value": "卡比獸"
+    },
+    {
+      "Key": "articuno",
+      "Value": "急凍鳥"
+    },
+    {
+      "Key": "zapdos",
+      "Value": "雷鳥"
+    },
+    {
+      "Key": "moltres",
+      "Value": "火鳥"
+    },
+    {
+      "Key": "dratini",
+      "Value": "迷你龍"
+    },
+    {
+      "Key": "dragonair",
+      "Value": "哈古龍"
+    },
+    {
+      "Key": "dragonite",
+      "Value": "啟暴龍"
+    },
+    {
+      "Key": "mewtwo",
+      "Value": "超夢夢"
+    },
+    {
+      "Key": "mew",
+      "Value": "夢夢"
+    }
+  ],
+  "PokemonMovesetStrings": [
+	  {
+      "Key": "moveUnset",
+      "Value": "MoveUnset"
+    },
+    {
+      "Key": "thunderShock",
+      "Value": "電擊"
+    },
+    {
+      "Key": "quickAttack",
+      "Value": "電光石火"
+    },
+    {
+      "Key": "scratch",
+      "Value": "搔"
+    },
+    {
+      "Key": "ember",
+      "Value": "火苗"
+    },
+    {
+      "Key": "vineWhip",
+      "Value": "藤鞭"
+    },
+    {
+      "Key": "tackle",
+      "Value": "撞擊"
+    },
+    {
+      "Key": "razorLeaf",
+      "Value": "葉子飛刀"
+    },
+    {
+      "Key": "takeDown",
+      "Value": "突進"
+    },
+    {
+      "Key": "waterGun",
+      "Value": "噴水"
+    },
+    {
+      "Key": "bite",
+      "Value": "啃咬"
+    },
+    {
+      "Key": "pound",
+      "Value": "拍打"
+    },
+    {
+      "Key": "doubleSlap",
+      "Value": "連環掌擊"
+    },
+    {
+      "Key": "wrap",
+      "Value": "捲起"
+    },
+    {
+      "Key": "hyperBeam",
+      "Value": "破壞光束"
+    },
+    {
+      "Key": "lick",
+      "Value": "舔"
+    },
+    {
+      "Key": "darkPulse",
+      "Value": "闇之波動"
+    },
+    {
+      "Key": "smog",
+      "Value": "毒霧"
+    },
+    {
+      "Key": "sludge",
+      "Value": "污泥攻擊"
+    },
+    {
+      "Key": "metalClaw",
+      "Value": "金屬爪"
+    },
+    {
+      "Key": "viceGrip",
+      "Value": "夾擊"
+    },
+    {
+      "Key": "flameWheel",
+      "Value": "烽火輪"
+    },
+    {
+      "Key": "megahorn",
+      "Value": "超級角擊"
+    },
+    {
+      "Key": "wingAttack",
+      "Value": "雙翼拍擊"
+    },
+    {
+      "Key": "flamethrower",
+      "Value": "火焰噴射"
+    },
+    {
+      "Key": "suckerPunch",
+      "Value": "突襲"
+    },
+    {
+      "Key": "dig",
+      "Value": "挖洞"
+    },
+    {
+      "Key": "lowKick",
+      "Value": "下旋"
+    },
+    {
+      "Key": "crossChop",
+      "Value": "十字斬"
+    },
+    {
+      "Key": "psychoCut",
+      "Value": "念力切削"
+    },
+    {
+      "Key": "psybeam",
+      "Value": "幻象光線"
+    },
+    {
+      "Key": "earthquake",
+      "Value": "地震"
+    },
+    {
+      "Key": "stoneEdge",
+      "Value": "石刃"
+    },
+    {
+      "Key": "icePunch",
+      "Value": "冷凍拳"
+    },
+    {
+      "Key": "heartStamp",
+      "Value": "心靈烙印"
+    },
+    {
+      "Key": "discharge",
+      "Value": "放電"
+    },
+    {
+      "Key": "flashCannon",
+      "Value": "光柵炮"
+    },
+    {
+      "Key": "peck",
+      "Value": "啄"
+    },
+    {
+      "Key": "drillPeck",
+      "Value": "鑽啄"
+    },
+    {
+      "Key": "iceBeam",
+      "Value": "冷凍光束"
+    },
+    {
+      "Key": "blizzard",
+      "Value": "暴風雪"
+    },
+    {
+      "Key": "airSlash",
+      "Value": "空氣切割"
+    },
+    {
+      "Key": "heatWave",
+      "Value": "熱風"
+    },
+    {
+      "Key": "twineedle",
+      "Value": "雙針"
+    },
+    {
+      "Key": "poisonJab",
+      "Value": "毒刺"
+    },
+    {
+      "Key": "aerialAce",
+      "Value": "飛燕疾擊"
+    },
+    {
+      "Key": "drillRun",
+      "Value": "鑽地"
+    },
+    {
+      "Key": "petalBlizzard",
+      "Value": "花吹雪"
+    },
+    {
+      "Key": "megaDrain",
+      "Value": "超級吸收"
+    },
+    {
+      "Key": "bugBuzz",
+      "Value": "蟲之鳴叫"
+    },
+    {
+      "Key": "poisonFang",
+      "Value": "劇毒牙"
+    },
+    {
+      "Key": "nightSlash",
+      "Value": "試刀"
+    },
+    {
+      "Key": "slash",
+      "Value": "揮砍"
+    },
+    {
+      "Key": "bubbleBeam",
+      "Value": "泡沫光線"
+    },
+    {
+      "Key": "submission",
+      "Value": "地獄式滾動"
+    },
+    {
+      "Key": "karateChop",
+      "Value": "手刀"
+    },
+    {
+      "Key": "lowSweep",
+      "Value": "下段踢"
+    },
+    {
+      "Key": "aquaJet",
+      "Value": "水壓噴射"
+    },
+    {
+      "Key": "aquaTail",
+      "Value": "液態尾巴"
+    },
+    {
+      "Key": "seedBomb",
+      "Value": "種子爆彈"
+    },
+    {
+      "Key": "psyshock",
+      "Value": "念力衝擊"
+    },
+    {
+      "Key": "rockThrow",
+      "Value": "落石"
+    },
+    {
+      "Key": "ancientPower",
+      "Value": "原始之力"
+    },
+    {
+      "Key": "rockTomb",
+      "Value": "岩石封印"
+    },
+    {
+      "Key": "rockSlide",
+      "Value": "崩石"
+    },
+    {
+      "Key": "powerGem",
+      "Value": "力量寶石"
+    },
+    {
+      "Key": "shadowSneak",
+      "Value": "暗影擊"
+    },
+    {
+      "Key": "shadowPunch",
+      "Value": "影子拳"
+    },
+    {
+      "Key": "shadowClaw",
+      "Value": "影子爪"
+    },
+    {
+      "Key": "ominousWind",
+      "Value": "怪風"
+    },
+    {
+      "Key": "shadowBall",
+      "Value": "影子球"
+    },
+    {
+      "Key": "bulletPunch",
+      "Value": "彈子拳"
+    },
+    {
+      "Key": "magnetBomb",
+      "Value": "磁力炸彈"
+    },
+    {
+      "Key": "steelWing",
+      "Value": "鋼之翼"
+    },
+    {
+      "Key": "ironHead",
+      "Value": "鐵頭槌"
+    },
+    {
+      "Key": "parabolicCharge",
+      "Value": "聚光充電"
+    },
+    {
+      "Key": "spark",
+      "Value": "火花"
+    },
+    {
+      "Key": "thunderPunch",
+      "Value": "雷拳"
+    },
+    {
+      "Key": "thunder",
+      "Value": "轟天雷"
+    },
+    {
+      "Key": "thunderbolt",
+      "Value": "十萬伏特"
+    },
+    {
+      "Key": "twister",
+      "Value": "神龍捲"
+    },
+    {
+      "Key": "dragonBreath",
+      "Value": "龍之氣息"
+    },
+    {
+      "Key": "dragonPulse",
+      "Value": "龍之波動"
+    },
+    {
+      "Key": "dragonClaw",
+      "Value": "龍爪"
+    },
+    {
+      "Key": "disarmingVoice",
+      "Value": "魅力聲音"
+    },
+    {
+      "Key": "drainingKiss",
+      "Value": "吸收之吻"
+    },
+    {
+      "Key": "dazzlingGleam",
+      "Value": "魔術光"
+    },
+    {
+      "Key": "moonblast",
+      "Value": "月之力量"
+    },
+    {
+      "Key": "playRough",
+      "Value": "打野架"
+    },
+    {
+      "Key": "crossPoison",
+      "Value": "毒十字斬"
+    },
+    {
+      "Key": "sludgeBomb",
+      "Value": "污泥爆彈"
+    },
+    {
+      "Key": "sludgeWave",
+      "Value": "污泥波浪"
+    },
+    {
+      "Key": "gunkShot",
+      "Value": "塵埃噴射"
+    },
+    {
+      "Key": "mudShot",
+      "Value": "噴泥"
+    },
+    {
+      "Key": "boneClub",
+      "Value": "骨頭棍"
+    },
+    {
+      "Key": "bulldoze",
+      "Value": "踏平地面"
+    },
+    {
+      "Key": "mudBomb",
+      "Value": "泥漿爆彈"
+    },
+    {
+      "Key": "furyCutter",
+      "Value": "連續斬擊"
+    },
+    {
+      "Key": "bugBite",
+      "Value": "蛀蝕"
+    },
+    {
+      "Key": "signalBeam",
+      "Value": "訊號光束"
+    },
+    {
+      "Key": "xScissor",
+      "Value": "十字剪"
+    },
+    {
+      "Key": "flameCharge",
+      "Value": "硝基衝擊"
+    },
+    {
+      "Key": "flameBurst",
+      "Value": "爆裂火焰"
+    },
+    {
+      "Key": "fireBlast",
+      "Value": "大字燒"
+    },
+    {
+      "Key": "brine",
+      "Value": "潮水"
+    },
+    {
+      "Key": "waterPulse",
+      "Value": "水之波動"
+    },
+    {
+      "Key": "scald",
+      "Value": "熱湯"
+    },
+    {
+      "Key": "hydroPump",
+      "Value": "水柱巨砲"
+    },
+    {
+      "Key": "psychic",
+      "Value": "精神念力"
+    },
+    {
+      "Key": "psystrike",
+      "Value": "念力暴擊"
+    },
+    {
+      "Key": "iceShard",
+      "Value": "碎冰飛擊"
+    },
+    {
+      "Key": "icyWind",
+      "Value": "急凍風暴"
+    },
+    {
+      "Key": "frostBreath",
+      "Value": "冰之氣息"
+    },
+    {
+      "Key": "absorb",
+      "Value": "吸取"
+    },
+    {
+      "Key": "gigaDrain",
+      "Value": "極級吸收"
+    },
+    {
+      "Key": "firePunch",
+      "Value": "火之拳"
+    },
+    {
+      "Key": "solarBeam",
+      "Value": "陽光烈焰"
+    },
+    {
+      "Key": "leafBlade",
+      "Value": "葉刃斬"
+    },
+    {
+      "Key": "powerWhip",
+      "Value": "蠻力藤鞭"
+    },
+    {
+      "Key": "splash",
+      "Value": "鯉魚翻身"
+    },
+    {
+      "Key": "acid",
+      "Value": "溶解毒液"
+    },
+    {
+      "Key": "airCutter",
+      "Value": "空氣刀"
+    },
+    {
+      "Key": "hurricane",
+      "Value": "暴風"
+    },
+    {
+      "Key": "brickBreak",
+      "Value": "爆瓦片"
+    },
+    {
+      "Key": "cut",
+      "Value": "斬擊"
+    },
+    {
+      "Key": "swift",
+      "Value": "超速星"
+    },
+    {
+      "Key": "hornAttack",
+      "Value": "角擊"
+    },
+    {
+      "Key": "stomp",
+      "Value": "踐踏"
+    },
+    {
+      "Key": "headbutt",
+      "Value": "頭槌"
+    },
+    {
+      "Key": "hyperFang",
+      "Value": "必殺門牙"
+    },
+    {
+      "Key": "slam",
+      "Value": "叩擊"
+    },
+    {
+      "Key": "bodySlam",
+      "Value": "千斤鼎"
+    },
+    {
+      "Key": "rest",
+      "Value": "睡眠"
+    },
+    {
+      "Key": "struggle",
+      "Value": "掙扎"
+    },
+    {
+      "Key": "scaldBlastoise",
+      "Value": "熱湯(水箭龜)"
+    },
+    {
+      "Key": "hydroPumpBlastoise",
+      "Value": "水柱巨砲(水箭龜)"
+    },
+    {
+      "Key": "wrapGreen",
+      "Value": "捲起-綠"
+    },
+    {
+      "Key": "wrapPink",
+      "Value": "捲起-粉"
+    },
+    {
+      "Key": "furyCutterFast",
+      "Value": "連續斬擊(快)"
+    },
+    {
+      "Key": "bugBiteFast",
+      "Value": "蛀蝕(快)"
+    },
+    {
+      "Key": "biteFast",
+      "Value": "啃咬(快)"
+    },
+    {
+      "Key": "suckerPunchFast",
+      "Value": "突襲(快)"
+    },
+    {
+      "Key": "dragonBreathFast",
+      "Value": "龍之氣息(快)"
+    },
+    {
+      "Key": "thunderShockFast",
+      "Value": "電擊(快)"
+    },
+    {
+      "Key": "sparkFast",
+      "Value": "火花(快)"
+    },
+    {
+      "Key": "lowKickFast",
+      "Value": "下旋(快)"
+    },
+    {
+      "Key": "karateChopFast",
+      "Value": "手刀(快)"
+    },
+    {
+      "Key": "emberFast",
+      "Value": "火苗(快)"
+    },
+    {
+      "Key": "wingAttackFast",
+      "Value": "雙翼拍擊(快)"
+    },
+    {
+      "Key": "peckFast",
+      "Value": "啄(快)"
+    },
+    {
+      "Key": "lickFast",
+      "Value": "舔(快)"
+    },
+    {
+      "Key": "shadowClawFast",
+      "Value": "影子爪(快)"
+    },
+    {
+      "Key": "vineWhipFast",
+      "Value": "藤鞭(快)"
+    },
+    {
+      "Key": "razorLeafFast",
+      "Value": "葉子飛刀(快)"
+    },
+    {
+      "Key": "mudShotFast",
+      "Value": "噴泥(快)"
+    },
+    {
+      "Key": "iceShardFast",
+      "Value": "碎冰飛擊(快)"
+    },
+    {
+      "Key": "frostBreathFast",
+      "Value": "冰之氣息(快)"
+    },
+    {
+      "Key": "quickAttackFast",
+      "Value": "電光石火(快)"
+    },
+    {
+      "Key": "scratchFast",
+      "Value": "搔(快)"
+    },
+    {
+      "Key": "tackleFast",
+      "Value": "撞擊(快)"
+    },
+    {
+      "Key": "poundFast",
+      "Value": "拍打(快)"
+    },
+    {
+      "Key": "cutFast",
+      "Value": "斬擊(快)"
+    },
+    {
+      "Key": "poisonJabFast",
+      "Value": "毒刺(快)"
+    },
+    {
+      "Key": "acidFast",
+      "Value": "溶解毒液(快)"
+    },
+    {
+      "Key": "psychoCutFast",
+      "Value": "念力切削(快)"
+    },
+    {
+      "Key": "rockThrowFast",
+      "Value": "落石(快)"
+    },
+    {
+      "Key": "metalClawFast",
+      "Value": "金屬爪(快)"
+    },
+    {
+      "Key": "bulletPunchFast",
+      "Value": "彈子拳(快)"
+    },
+    {
+      "Key": "waterGunFast",
+      "Value": "噴水(快)"
+    },
+    {
+      "Key": "splashFast",
+      "Value": "鯉魚翻身(快)"
+    },
+    {
+      "Key": "waterGunFastBlastoise",
+      "Value": "噴水(水箭龜)(快)"
+    },
+    {
+      "Key": "mudSlapFast",
+      "Value": "泥漿撥擊(快)"
+    },
+    {
+      "Key": "zenHeadbuttFast",
+      "Value": "思念頭槌(快)"
+    },
+    {
+      "Key": "confusionFast",
+      "Value": "念力(快)"
+    },
+    {
+      "Key": "poisonStingFast",
+      "Value": "毒針(快)"
+    },
+    {
+      "Key": "bubbleFast",
+      "Value": "泡沫(快)"
+    },
+    {
+      "Key": "feintAttackFast",
+      "Value": "佯攻(快)"
+    },
+    {
+      "Key": "steelWingFast",
+      "Value": "鋼之翼(快)"
+    },
+    {
+      "Key": "fireFangFast",
+      "Value": "火之牙(快)"
+    },
+    {
+      "Key": "rockSmashFast",
+      "Value": "碎岩(快)"
+    }
+  ]
+}
diff --git a/PokemonGo.RocketBot.Window/Config/log4net.config b/PokemonGo.RocketBot.Window/Config/log4net.config
new file mode 100644
index 0000000..520e46c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/log4net.config
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<log4net>
+  <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="ERROR" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs\err.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+    </layout>
+  </appender>
+  <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="INFO" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs\info.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+    </layout>
+  </appender>
+  <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="DEBUG" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs\debug.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+    </layout>
+  </appender>
+  <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="INFO" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs\perf.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date %logger - %message%newline" />
+    </layout>
+  </appender>
+  <root>
+    <level value="ALL" />
+    <appender-ref ref="errorAppender" />
+    <appender-ref ref="infoAppender" />
+    <appender-ref ref="debugAppender" />
+  </root>
+  <logger name="Performance" additivity="false">
+    <level value="ALL" />
+    <appender-ref ref="perfAppender" />
+  </logger>
+</log4net>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Config/log4net.unix.config b/PokemonGo.RocketBot.Window/Config/log4net.unix.config
new file mode 100644
index 0000000..c84e0f7
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Config/log4net.unix.config
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<log4net>
+  <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="ERROR" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <File value="Logs/err.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+    </layout>
+  </appender>
+  <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="INFO" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs/info.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+    </layout>
+  </appender>
+  <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="DEBUG" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs/debug.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
+    </layout>
+  </appender>
+  <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
+    <filter type="log4net.Filter.LevelMatchFilter">
+      <levelToMatch value="INFO" />
+    </filter>
+    <filter type="log4net.Filter.DenyAllFilter" />
+    <file value="Logs/perf.log" />
+    <encoding value="utf-8" />
+    <preserveLogFileNameExtension value="true" />
+    <appendToFile value="true" />
+    <rollingStyle value="Date" />
+    <datePattern value="yyyyMMdd" />
+    <layout type="log4net.Layout.PatternLayout">
+      <conversionPattern value="%date %logger - %message%newline" />
+    </layout>
+  </appender>
+  <root>
+    <level value="ALL" />
+    <appender-ref ref="errorAppender" />
+    <appender-ref ref="infoAppender" />
+    <appender-ref ref="debugAppender" />
+  </root>
+  <logger name="Performance" additivity="false">
+    <level value="ALL" />
+    <appender-ref ref="perfAppender" />
+  </logger>
+</log4net>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/ConsoleEventListener.cs b/PokemonGo.RocketBot.Window/ConsoleEventListener.cs
new file mode 100644
index 0000000..ab27d46
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/ConsoleEventListener.cs
@@ -0,0 +1,358 @@
+#region using directives
+
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Globalization;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.Forms;
+using POGOProtos.Enums;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Networking.Responses;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Window
+{
+    [SuppressMessage("ReSharper", "UnusedParameter.Local")]
+    internal class ConsoleEventListener
+    {
+        private static void HandleEvent(HumanWalkingEvent humanWalkingEvent, ISession session)
+        {
+            if (session.LogicSettings.ShowVariantWalking)
+                MainForm.SetSpeedLable("Current Speed: " + Math.Round(humanWalkingEvent.CurrentWalkingSpeed, 2) +
+                                       " km/h");
+        }
+
+        private static void HandleEvent(ProfileEvent profileEvent, ISession session)
+        {
+            Logger.Write(session.Translation.GetTranslation(TranslationString.EventProfileLogin,
+                profileEvent.Profile.PlayerData.Username ?? ""));
+        }
+
+        private static void HandleEvent(ErrorEvent errorEvent, ISession session)
+        {
+            Logger.Write(errorEvent.ToString(), LogLevel.Error, force: true);
+        }
+
+        private static void HandleEvent(NoticeEvent noticeEvent, ISession session)
+        {
+            Logger.Write(noticeEvent.ToString());
+        }
+
+        private static void HandleEvent(WarnEvent warnEvent, ISession session)
+        {
+            Logger.Write(warnEvent.ToString(), LogLevel.Warning);
+            // If the event requires no input return.
+            if (!warnEvent.RequireInput) return;
+            // Otherwise require input.
+            Logger.Write(session.Translation.GetTranslation(TranslationString.RequireInputText));
+            Console.ReadKey();
+        }
+
+        private static void HandleEvent(UseLuckyEggEvent useLuckyEggEvent, ISession session)
+        {
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventUsedLuckyEgg, useLuckyEggEvent.Count),
+                LogLevel.Egg);
+        }
+
+        private static void HandleEvent(PokemonEvolveEvent pokemonEvolveEvent, ISession session)
+        {
+            var strPokemon = session.Translation.GetPokemonTranslation(pokemonEvolveEvent.Id);
+            Logger.Write(pokemonEvolveEvent.Result == EvolvePokemonResponse.Types.Result.Success
+                ? session.Translation.GetTranslation(TranslationString.EventPokemonEvolvedSuccess, strPokemon,
+                    pokemonEvolveEvent.Exp)
+                : session.Translation.GetTranslation(TranslationString.EventPokemonEvolvedFailed, pokemonEvolveEvent.Id,
+                    pokemonEvolveEvent.Result,
+                    strPokemon),
+                LogLevel.Evolve);
+        }
+
+        private static void HandleEvent(TransferPokemonEvent transferPokemonEvent, ISession session)
+        {
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventPokemonTransferred,
+                    session.Translation.GetPokemonTranslation(transferPokemonEvent.Id).PadRight(12, ' '),
+                    transferPokemonEvent.Cp.ToString().PadLeft(4, ' '),
+                    transferPokemonEvent.Perfection.ToString("0.00").PadLeft(6, ' '),
+                    transferPokemonEvent.BestCp.ToString().PadLeft(4, ' '),
+                    transferPokemonEvent.BestPerfection.ToString("0.00").PadLeft(6, ' '),
+                    transferPokemonEvent.FamilyCandies),
+                LogLevel.Transfer);
+        }
+
+        private static void HandleEvent(ItemRecycledEvent itemRecycledEvent, ISession session)
+        {
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventItemRecycled, itemRecycledEvent.Count,
+                    itemRecycledEvent.Id),
+                LogLevel.Recycling);
+        }
+
+        private static void HandleEvent(EggIncubatorStatusEvent eggIncubatorStatusEvent, ISession session)
+        {
+            Logger.Write(eggIncubatorStatusEvent.WasAddedNow
+                ? session.Translation.GetTranslation(TranslationString.IncubatorPuttingEgg,
+                    eggIncubatorStatusEvent.KmRemaining)
+                : session.Translation.GetTranslation(TranslationString.IncubatorStatusUpdate,
+                    eggIncubatorStatusEvent.KmRemaining),
+                LogLevel.Egg);
+        }
+
+        private static void HandleEvent(EggHatchedEvent eggHatchedEvent, ISession session)
+        {
+            Logger.Write(session.Translation.GetTranslation(TranslationString.IncubatorEggHatched,
+                session.Translation.GetPokemonTranslation(eggHatchedEvent.PokemonId), eggHatchedEvent.Level,
+                eggHatchedEvent.Cp, eggHatchedEvent.MaxCp, eggHatchedEvent.Perfection),
+                LogLevel.Egg);
+        }
+
+        private static void HandleEvent(FortUsedEvent fortUsedEvent, ISession session)
+        {
+            var itemString = fortUsedEvent.InventoryFull
+                ? session.Translation.GetTranslation(TranslationString.InvFullPokestopLooting)
+                : fortUsedEvent.Items;
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventFortUsed, fortUsedEvent.Name,
+                    fortUsedEvent.Exp, fortUsedEvent.Gems,
+                    itemString, fortUsedEvent.Latitude, fortUsedEvent.Longitude),
+                LogLevel.Pokestop);
+        }
+
+        private static void HandleEvent(FortFailedEvent fortFailedEvent, ISession session)
+        {
+            if (fortFailedEvent.Try != 1 && fortFailedEvent.Looted == false)
+            {
+                Logger.lineSelect(0, 1); // Replaces the last line to prevent spam.
+            }
+
+            if (fortFailedEvent.Looted)
+            {
+                Logger.Write(
+                    session.Translation.GetTranslation(TranslationString.SoftBanBypassed),
+                    LogLevel.SoftBan, ConsoleColor.Green);
+            }
+            else
+            {
+                Logger.Write(
+                    session.Translation.GetTranslation(TranslationString.EventFortFailed, fortFailedEvent.Name,
+                        fortFailedEvent.Try, fortFailedEvent.Max),
+                    LogLevel.SoftBan);
+            }
+        }
+
+        private static void HandleEvent(FortTargetEvent fortTargetEvent, ISession session)
+        {
+            var intTimeForArrival =
+                (int) (fortTargetEvent.Distance/(session.LogicSettings.WalkingSpeedInKilometerPerHour*0.8));
+
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventFortTargeted, fortTargetEvent.Name,
+                    Math.Round(fortTargetEvent.Distance), intTimeForArrival),
+                LogLevel.Info, ConsoleColor.Gray);
+        }
+
+        private static void HandleEvent(PokemonCaptureEvent pokemonCaptureEvent, ISession session)
+        {
+            Func<ItemId, string> returnRealBallName = a =>
+            {
+                // ReSharper disable once SwitchStatementMissingSomeCases
+                switch (a)
+                {
+                    case ItemId.ItemPokeBall:
+                        return session.Translation.GetTranslation(TranslationString.Pokeball);
+                    case ItemId.ItemGreatBall:
+                        return session.Translation.GetTranslation(TranslationString.GreatPokeball);
+                    case ItemId.ItemUltraBall:
+                        return session.Translation.GetTranslation(TranslationString.UltraPokeball);
+                    case ItemId.ItemMasterBall:
+                        return session.Translation.GetTranslation(TranslationString.MasterPokeball);
+                    default:
+                        return session.Translation.GetTranslation(TranslationString.CommonWordUnknown);
+                }
+            };
+
+            var catchType = pokemonCaptureEvent.CatchType;
+
+            string strStatus;
+            switch (pokemonCaptureEvent.Status)
+            {
+                case CatchPokemonResponse.Types.CatchStatus.CatchError:
+                    strStatus = session.Translation.GetTranslation(TranslationString.CatchStatusError);
+                    break;
+                case CatchPokemonResponse.Types.CatchStatus.CatchEscape:
+                    strStatus = session.Translation.GetTranslation(TranslationString.CatchStatusEscape);
+                    break;
+                case CatchPokemonResponse.Types.CatchStatus.CatchFlee:
+                    strStatus = session.Translation.GetTranslation(TranslationString.CatchStatusFlee);
+                    break;
+                case CatchPokemonResponse.Types.CatchStatus.CatchMissed:
+                    strStatus = session.Translation.GetTranslation(TranslationString.CatchStatusMissed);
+                    break;
+                case CatchPokemonResponse.Types.CatchStatus.CatchSuccess:
+                    strStatus = session.Translation.GetTranslation(TranslationString.CatchStatusSuccess);
+                    break;
+                default:
+                    strStatus = pokemonCaptureEvent.Status.ToString();
+                    break;
+            }
+
+            var catchStatus = pokemonCaptureEvent.Attempt > 1
+                ? session.Translation.GetTranslation(TranslationString.CatchStatusAttempt, strStatus,
+                    pokemonCaptureEvent.Attempt)
+                : session.Translation.GetTranslation(TranslationString.CatchStatus, strStatus);
+
+            var familyCandies = pokemonCaptureEvent.FamilyCandies > 0
+                ? session.Translation.GetTranslation(TranslationString.Candies, pokemonCaptureEvent.FamilyCandies)
+                : "";
+
+            string message;
+
+            if (pokemonCaptureEvent.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess)
+            {
+                message = session.Translation.GetTranslation(TranslationString.EventPokemonCaptureSuccess, catchStatus,
+                    catchType, session.Translation.GetPokemonTranslation(pokemonCaptureEvent.Id),
+                    pokemonCaptureEvent.Level, pokemonCaptureEvent.Cp, pokemonCaptureEvent.MaxCp,
+                    pokemonCaptureEvent.Perfection.ToString("0.00"), pokemonCaptureEvent.Probability,
+                    pokemonCaptureEvent.Distance.ToString("F2"),
+                    returnRealBallName(pokemonCaptureEvent.Pokeball), pokemonCaptureEvent.BallAmount,
+                    pokemonCaptureEvent.Exp, familyCandies, pokemonCaptureEvent.Latitude.ToString("0.000000"),
+                    pokemonCaptureEvent.Longitude.ToString("0.000000"));
+                Logger.Write(message, LogLevel.Caught);
+            }
+            else
+            {
+                message = session.Translation.GetTranslation(TranslationString.EventPokemonCaptureFailed, catchStatus,
+                    catchType, session.Translation.GetPokemonTranslation(pokemonCaptureEvent.Id),
+                    pokemonCaptureEvent.Level, pokemonCaptureEvent.Cp, pokemonCaptureEvent.MaxCp,
+                    pokemonCaptureEvent.Perfection.ToString("0.00"), pokemonCaptureEvent.Probability,
+                    pokemonCaptureEvent.Distance.ToString("F2"),
+                    returnRealBallName(pokemonCaptureEvent.Pokeball), pokemonCaptureEvent.BallAmount,
+                    pokemonCaptureEvent.Latitude.ToString("0.000000"),
+                    pokemonCaptureEvent.Longitude.ToString("0.000000"));
+                Logger.Write(message, LogLevel.Flee);
+            }
+        }
+
+        private static void HandleEvent(NoPokeballEvent noPokeballEvent, ISession session)
+        {
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventNoPokeballs, noPokeballEvent.Id,
+                    noPokeballEvent.Cp),
+                LogLevel.Caught);
+        }
+
+        private static void HandleEvent(UseBerryEvent useBerryEvent, ISession session)
+        {
+            string strBerry;
+            switch (useBerryEvent.BerryType)
+            {
+                case ItemId.ItemRazzBerry:
+                    strBerry = session.Translation.GetTranslation(TranslationString.ItemRazzBerry);
+                    break;
+                default:
+                    strBerry = useBerryEvent.BerryType.ToString();
+                    break;
+            }
+
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.EventUseBerry, strBerry, useBerryEvent.Count),
+                LogLevel.Berry);
+        }
+
+        private static void HandleEvent(SnipeEvent snipeEvent, ISession session)
+        {
+            Logger.Write(snipeEvent.ToString(), LogLevel.Sniper);
+        }
+
+        private static void HandleEvent(SnipeScanEvent snipeScanEvent, ISession session)
+        {
+            Logger.Write(snipeScanEvent.PokemonId == PokemonId.Missingno
+                ? (snipeScanEvent.Source != null ? "(" + snipeScanEvent.Source + ") " : null) +
+                  session.Translation.GetTranslation(TranslationString.SnipeScan,
+                      $"{snipeScanEvent.Bounds.Latitude},{snipeScanEvent.Bounds.Longitude}")
+                : (snipeScanEvent.Source != null ? "(" + snipeScanEvent.Source + ") " : null) +
+                  session.Translation.GetTranslation(TranslationString.SnipeScanEx,
+                      session.Translation.GetPokemonTranslation(snipeScanEvent.PokemonId),
+                      snipeScanEvent.Iv > 0
+                          ? snipeScanEvent.Iv.ToString(CultureInfo.InvariantCulture)
+                          : session.Translation.GetTranslation(TranslationString.CommonWordUnknown),
+                      $"{snipeScanEvent.Bounds.Latitude},{snipeScanEvent.Bounds.Longitude}"), LogLevel.Sniper);
+        }
+
+        private static void HandleEvent(DisplayHighestsPokemonEvent displayHighestsPokemonEvent, ISession session)
+        {
+            string strHeader;
+            //PokemonData | CP | IV | Level | MOVE1 | MOVE2 | Candy
+            switch (displayHighestsPokemonEvent.SortedBy)
+            {
+                case "Level":
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestsLevelHeader);
+                    break;
+                case "IV":
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestsPerfectHeader);
+                    break;
+                case "CP":
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestsCpHeader);
+                    break;
+                case "MOVE1":
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestMove1Header);
+                    break;
+                case "MOVE2":
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestMove2Header);
+                    break;
+                case "Candy":
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestCandy);
+                    break;
+                default:
+                    strHeader = session.Translation.GetTranslation(TranslationString.DisplayHighestsHeader);
+                    break;
+            }
+            var strPerfect = session.Translation.GetTranslation(TranslationString.CommonWordPerfect);
+            var strName = session.Translation.GetTranslation(TranslationString.CommonWordName).ToUpper();
+            var move1 = session.Translation.GetTranslation(TranslationString.DisplayHighestMove1Header);
+            var move2 = session.Translation.GetTranslation(TranslationString.DisplayHighestMove2Header);
+            var candy = session.Translation.GetTranslation(TranslationString.DisplayHighestCandy);
+
+            Logger.Write($"====== {strHeader} ======", LogLevel.Info, ConsoleColor.Yellow);
+            foreach (var pokemon in displayHighestsPokemonEvent.PokemonList)
+            {
+                var strMove1 = session.Translation.GetPokemonMovesetTranslation(pokemon.Item5);
+                var strMove2 = session.Translation.GetPokemonMovesetTranslation(pokemon.Item6);
+
+                Logger.Write(
+                    $"# CP {pokemon.Item1.Cp.ToString().PadLeft(4, ' ')}/{pokemon.Item2.ToString().PadLeft(4, ' ')} | ({pokemon.Item3.ToString("0.00")}% {strPerfect})\t| Lvl {pokemon.Item4.ToString("00")}\t {strName}: {session.Translation.GetPokemonTranslation(pokemon.Item1.PokemonId).PadRight(10, ' ')}\t {move1}: {strMove1.PadRight(20, ' ')} {move2}: {strMove2.PadRight(20, ' ')} {candy}: {pokemon.Item7}",
+                    LogLevel.Info, ConsoleColor.Yellow);
+            }
+        }
+
+        private static void HandleEvent(EvolveCountEvent evolveCountEvent, ISession session)
+        {
+            Logger.Write(
+                session.Translation.GetTranslation(TranslationString.PkmPotentialEvolveCount, evolveCountEvent.Evolves),
+                LogLevel.Evolve);
+        }
+
+        private static void HandleEvent(UpdateEvent updateEvent, ISession session)
+        {
+            Logger.Write(updateEvent.ToString(), LogLevel.Update);
+        }
+
+        internal void Listen(IEvent evt, ISession session)
+        {
+            dynamic eve = evt;
+
+            try
+            {
+                HandleEvent(eve, session);
+            }
+                // ReSharper disable once EmptyGeneralCatchClause
+            catch
+            {
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/ConsoleLogger.cs b/PokemonGo.RocketBot.Window/ConsoleLogger.cs
new file mode 100644
index 0000000..c478151
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/ConsoleLogger.cs
@@ -0,0 +1,146 @@
+#region using directives
+
+using System;
+using System.Drawing;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.Forms;
+using PokemonGo.RocketBot.Window.Models;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Window
+{
+    /// <summary>
+    ///     The ConsoleLogger is a simple logger which writes all logs to the Console.
+    /// </summary>
+    public class ConsoleLogger : ILogger
+    {
+        // Log write event definition.
+        public delegate void LogWriteHandler(object sender, LogWriteEventArgs e);
+
+        private readonly LogLevel _maxLogLevel;
+        private ISession _session;
+
+        /// <summary>
+        ///     To create a ConsoleLogger, we must define a maximum log level.
+        ///     All levels above won't be logged.
+        /// </summary>
+        /// <param name="maxLogLevel"></param>
+        internal ConsoleLogger(LogLevel maxLogLevel)
+        {
+            _maxLogLevel = maxLogLevel;
+        }
+
+        public void SetSession(ISession session)
+        {
+            _session = session;
+            LoggingStrings.SetStrings(_session);
+        }
+
+        /// <summary>
+        ///     Log a specific message by LogLevel. Won't log if the LogLevel is greater than the maxLogLevel set.
+        /// </summary>
+        /// <param name="message">The message to log. The current time will be prepended.</param>
+        /// <param name="level">Optional. Default <see cref="LogLevel.Info" />.</param>
+        /// <param name="color">Optional. Default is auotmatic</param>
+        public void Write(string message, LogLevel level = LogLevel.Info, ConsoleColor color = ConsoleColor.Black)
+        {
+            // Remember to change to a font that supports your language, otherwise it'll still show as ???.
+            if (level > _maxLogLevel)
+                return;
+
+            // Fire log write event.
+            OnLogWrite?.Invoke(this, new LogWriteEventArgs {Message = message, Level = level, Color = color});
+            message = message + "\r\n";
+            // ReSharper disable once SwitchStatementMissingSomeCases
+            switch (level)
+            {
+                case LogLevel.Error:
+                    MainForm.ColoredConsoleWrite(Color.Red,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Error}) {message}");
+                    break;
+                case LogLevel.Warning:
+                    MainForm.ColoredConsoleWrite(Color.Goldenrod,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Attention}) {message}");
+                    break;
+                case LogLevel.Info:
+                    MainForm.ColoredConsoleWrite(Color.DarkCyan,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Info}) {message}");
+                    break;
+                case LogLevel.Pokestop:
+                    MainForm.ColoredConsoleWrite(Color.Cyan,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Pokestop}) {message}");
+                    break;
+                case LogLevel.Farming:
+                    MainForm.ColoredConsoleWrite(Color.Magenta,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Farming}) {message}");
+                    break;
+                case LogLevel.Sniper:
+                    MainForm.ColoredConsoleWrite(Color.White,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Sniper}) {message}");
+                    break;
+                case LogLevel.Recycling:
+                    MainForm.ColoredConsoleWrite(Color.DarkMagenta,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Recycling}) {message}");
+                    break;
+                case LogLevel.Caught:
+                    MainForm.ColoredConsoleWrite(Color.Green,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Pkmn}) {message}");
+                    break;
+                case LogLevel.Transfer:
+                    MainForm.ColoredConsoleWrite(Color.DarkGreen,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Transferred}) {message}");
+                    break;
+                case LogLevel.Evolve:
+                    MainForm.ColoredConsoleWrite(Color.Yellow,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Evolved}) {message}");
+                    break;
+                case LogLevel.LevelUp:
+                    MainForm.ColoredConsoleWrite(Color.Yellow,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.LevelUp}) {message}");
+                    break;
+                case LogLevel.Berry:
+                    MainForm.ColoredConsoleWrite(Color.DarkGoldenrod,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Berry}) {message}");
+                    break;
+                case LogLevel.Egg:
+                    MainForm.ColoredConsoleWrite(Color.DarkGoldenrod,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Egg}) {message}");
+                    break;
+                case LogLevel.Debug:
+                    MainForm.ColoredConsoleWrite(Color.Gray,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Debug}) {message}");
+                    break;
+                case LogLevel.Update:
+                    MainForm.ColoredConsoleWrite(Color.White,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Update}) {message}");
+                    break;
+                case LogLevel.New:
+                    MainForm.ColoredConsoleWrite(Color.Green,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.New}) {message}");
+                    break;
+                default:
+                    MainForm.ColoredConsoleWrite(Color.White,
+                        $"[{DateTime.Now.ToString("HH:mm:ss")}] ({LoggingStrings.Error}) {message}");
+                    break;
+            }
+        }
+
+        public void lineSelect(int lineChar = 0, int linesUp = 1)
+        {
+        }
+
+        public event LogWriteHandler OnLogWrite;
+    }
+
+    /// <summary>
+    ///     Event args for Log Write Event.
+    /// </summary>
+    public class LogWriteEventArgs
+    {
+        public string Message { get; set; }
+        public LogLevel Level { get; set; }
+        public ConsoleColor Color { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/FodyWeavers.xml b/PokemonGo.RocketBot.Window/FodyWeavers.xml
new file mode 100644
index 0000000..2e6d4a7
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/FodyWeavers.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Weavers>
+	<Costura/>
+
+</Weavers>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/ItemBox.cs b/PokemonGo.RocketBot.Window/Forms/ItemBox.cs
new file mode 100644
index 0000000..0a97a05
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/ItemBox.cs
@@ -0,0 +1,96 @@
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+using POGOProtos.Inventory.Item;
+
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    public partial class ItemBox : UserControl
+    {
+        public DateTime expires = new DateTime(0);
+
+        public ItemBox(ItemData item)
+        {
+            InitializeComponent();
+
+            item_ = item;
+
+            pb.Image = (Image) Properties.Resources.ResourceManager.GetObject(item.ItemId.ToString());
+            lbl.Text = item.Count.ToString();
+            lblTime.Parent = pb;
+
+            foreach (Control control in Controls)
+            {
+                control.MouseEnter += childMouseEnter;
+                control.MouseLeave += childMouseLeave;
+                control.MouseClick += childMouseClick;
+            }
+
+            if (item_.ItemId == ItemId.ItemIncubatorBasic || item_.ItemId == ItemId.ItemIncubatorBasicUnlimited ||
+                item.Count < 1)
+            {
+                Enabled = false;
+            }
+        }
+
+        public ItemData item_ { get; }
+
+        public event EventHandler ItemClick;
+
+        private void childMouseClick(object sender, MouseEventArgs e)
+        {
+            OnItemClick(item_, EventArgs.Empty);
+        }
+
+        protected override void OnMouseClick(MouseEventArgs e)
+        {
+            base.OnMouseClick(e);
+            OnItemClick(item_, EventArgs.Empty);
+        }
+
+        private void childMouseLeave(object sender, EventArgs e)
+        {
+            OnMouseLeave(e);
+        }
+
+        private void childMouseEnter(object sender, EventArgs e)
+        {
+            OnMouseEnter(e);
+        }
+
+        protected override void OnMouseLeave(EventArgs e)
+        {
+            base.OnMouseLeave(e);
+            BackColor = Color.Transparent;
+        }
+
+        protected override void OnMouseEnter(EventArgs e)
+        {
+            base.OnMouseEnter(e);
+            BackColor = Color.LightGreen;
+        }
+
+        protected virtual void OnItemClick(ItemData item, EventArgs e)
+        {
+            var handler = ItemClick;
+            if (handler != null)
+            {
+                handler(item, e);
+            }
+        }
+
+        private void tmr_Tick(object sender, EventArgs e)
+        {
+            var time = expires - DateTime.UtcNow;
+            if (expires.Ticks == 0 || time.TotalSeconds < 0)
+            {
+                lblTime.Visible = false;
+            }
+            else
+            {
+                lblTime.Visible = true;
+                lblTime.Text = $"{time.Minutes}m {Math.Abs(time.Seconds)}s";
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/ItemBox.designer.cs b/PokemonGo.RocketBot.Window/Forms/ItemBox.designer.cs
new file mode 100644
index 0000000..ffe318f
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/ItemBox.designer.cs
@@ -0,0 +1,104 @@
+namespace PokemonGo.RocketBot.Window.Forms {
+    partial class ItemBox {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing) {
+            if (disposing && (components != null)) {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent() {
+            this.components = new System.ComponentModel.Container();
+            this.lbl = new System.Windows.Forms.Label();
+            this.pb = new System.Windows.Forms.PictureBox();
+            this.tmr = new System.Windows.Forms.Timer(this.components);
+            this.lblTime = new System.Windows.Forms.Label();
+            ((System.ComponentModel.ISupportInitialize)(this.pb)).BeginInit();
+            this.SuspendLayout();
+            //
+            // lbl
+            //
+            this.lbl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.lbl.BackColor = System.Drawing.Color.Transparent;
+            this.lbl.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lbl.ForeColor = System.Drawing.SystemColors.GrayText;
+            this.lbl.Location = new System.Drawing.Point(0, 64);
+            this.lbl.Margin = new System.Windows.Forms.Padding(0);
+            this.lbl.Name = "lbl";
+            this.lbl.Size = new System.Drawing.Size(64, 24);
+            this.lbl.TabIndex = 1;
+            this.lbl.Text = "999";
+            this.lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            //
+            // pb
+            //
+            this.pb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.pb.BackColor = System.Drawing.Color.Transparent;
+            this.pb.Location = new System.Drawing.Point(0, 0);
+            this.pb.Margin = new System.Windows.Forms.Padding(0);
+            this.pb.Name = "pb";
+            this.pb.Size = new System.Drawing.Size(64, 64);
+            this.pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pb.TabIndex = 0;
+            this.pb.TabStop = false;
+            //
+            // tmr
+            //
+            this.tmr.Enabled = true;
+            this.tmr.Interval = 1000;
+            this.tmr.Tick += new System.EventHandler(this.tmr_Tick);
+            //
+            // lblTime
+            //
+            this.lblTime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.lblTime.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lblTime.Location = new System.Drawing.Point(0, 0);
+            this.lblTime.Margin = new System.Windows.Forms.Padding(0);
+            this.lblTime.Name = "lblTime";
+            this.lblTime.Size = new System.Drawing.Size(64, 23);
+            this.lblTime.TabIndex = 2;
+            this.lblTime.Text = "30m 00s";
+            this.lblTime.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+            this.lblTime.Visible = false;
+            //
+            // ItemBox
+            //
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.lblTime);
+            this.Controls.Add(this.lbl);
+            this.Controls.Add(this.pb);
+            this.Cursor = System.Windows.Forms.Cursors.Default;
+            this.Name = "ItemBox";
+            this.Size = new System.Drawing.Size(64, 88);
+            ((System.ComponentModel.ISupportInitialize)(this.pb)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.PictureBox pb;
+        private System.Windows.Forms.Label lbl;
+        private System.Windows.Forms.Timer tmr;
+        private System.Windows.Forms.Label lblTime;
+    }
+}
diff --git a/PokemonGo.RocketBot.Window/Forms/ItemBox.resx b/PokemonGo.RocketBot.Window/Forms/ItemBox.resx
new file mode 100644
index 0000000..d3ab77a
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/ItemBox.resx
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="tmr.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/ItemForm.cs b/PokemonGo.RocketBot.Window/Forms/ItemForm.cs
new file mode 100644
index 0000000..c4aa1d0
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/ItemForm.cs
@@ -0,0 +1,24 @@
+using System.Drawing;
+using System.Windows.Forms;
+using POGOProtos.Inventory.Item;
+
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    public partial class ItemForm : Form
+    {
+        public ItemForm(ItemData item)
+        {
+            InitializeComponent();
+
+            pb.Image = (Image) Properties.Resources.ResourceManager.GetObject(item.ItemId.ToString());
+            numCount.Maximum = item.Count;
+
+            if (item.ItemId == ItemId.ItemLuckyEgg || item.ItemId == ItemId.ItemIncenseOrdinary)
+            {
+                btnRecycle.Text = "Use";
+                //btnRecycle.Enabled = false;
+                numCount.Visible = false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/ItemForm.designer.cs b/PokemonGo.RocketBot.Window/Forms/ItemForm.designer.cs
new file mode 100644
index 0000000..62045b4
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/ItemForm.designer.cs
@@ -0,0 +1,143 @@
+namespace PokemonGo.RocketBot.Window.Forms {
+    partial class ItemForm {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing) {
+            if (disposing && (components != null)) {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent() {
+            this.numCount = new System.Windows.Forms.NumericUpDown();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.btnRecycle = new System.Windows.Forms.Button();
+            this.btnCancel = new System.Windows.Forms.Button();
+            this.pb = new System.Windows.Forms.PictureBox();
+            ((System.ComponentModel.ISupportInitialize)(this.numCount)).BeginInit();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pb)).BeginInit();
+            this.SuspendLayout();
+            //
+            // numCount
+            //
+            this.numCount.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.numCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.numCount.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.numCount.ForeColor = System.Drawing.SystemColors.ControlDark;
+            this.numCount.Location = new System.Drawing.Point(11, 113);
+            this.numCount.Maximum = new decimal(new int[] {
+            999,
+            0,
+            0,
+            0});
+            this.numCount.Minimum = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+            this.numCount.Name = "numCount";
+            this.numCount.Size = new System.Drawing.Size(140, 29);
+            this.numCount.TabIndex = 3;
+            this.numCount.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.numCount.Value = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+            //
+            // panel1
+            //
+            this.panel1.BackColor = System.Drawing.SystemColors.Window;
+            this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.panel1.Controls.Add(this.btnRecycle);
+            this.panel1.Controls.Add(this.btnCancel);
+            this.panel1.Controls.Add(this.numCount);
+            this.panel1.Controls.Add(this.pb);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(164, 240);
+            this.panel1.TabIndex = 4;
+            //
+            // btnRecycle
+            //
+            this.btnRecycle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnRecycle.DialogResult = System.Windows.Forms.DialogResult.OK;
+            this.btnRecycle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+            this.btnRecycle.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.btnRecycle.ForeColor = System.Drawing.SystemColors.ControlDark;
+            this.btnRecycle.Location = new System.Drawing.Point(11, 151);
+            this.btnRecycle.Name = "btnRecycle";
+            this.btnRecycle.Size = new System.Drawing.Size(140, 35);
+            this.btnRecycle.TabIndex = 4;
+            this.btnRecycle.Text = "Recycle";
+            this.btnRecycle.UseVisualStyleBackColor = true;
+            //
+            // btnCancel
+            //
+            this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+            this.btnCancel.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.btnCancel.ForeColor = System.Drawing.SystemColors.ControlDark;
+            this.btnCancel.Location = new System.Drawing.Point(11, 192);
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.Size = new System.Drawing.Size(140, 35);
+            this.btnCancel.TabIndex = 4;
+            this.btnCancel.Text = "Cancel";
+            this.btnCancel.UseVisualStyleBackColor = true;
+            //
+            // pb
+            //
+            this.pb.Anchor = System.Windows.Forms.AnchorStyles.Top;
+            this.pb.Location = new System.Drawing.Point(33, 11);
+            this.pb.Name = "pb";
+            this.pb.Size = new System.Drawing.Size(96, 96);
+            this.pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pb.TabIndex = 0;
+            this.pb.TabStop = false;
+            //
+            // RecycleItemForm
+            //
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(164, 240);
+            this.Controls.Add(this.panel1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Name = "RecycleItemForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "RecycleItemForm";
+            ((System.ComponentModel.ISupportInitialize)(this.numCount)).EndInit();
+            this.panel1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.pb)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.PictureBox pb;
+        public System.Windows.Forms.NumericUpDown numCount;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Button btnRecycle;
+        private System.Windows.Forms.Button btnCancel;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/MainForm.cs b/PokemonGo.RocketBot.Window/Forms/MainForm.cs
new file mode 100644
index 0000000..c3da741
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/MainForm.cs
@@ -0,0 +1,967 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using BrightIdeasSoftware;
+using GeoCoordinatePortable;
+using GMap.NET;
+using GMap.NET.MapProviders;
+using GMap.NET.WindowsForms;
+using PokemonGo.RocketAPI.Helpers;
+using PokemonGo.RocketBot.Logic;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using PokemonGo.RocketBot.Logic.Service;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Tasks;
+using PokemonGo.RocketBot.Logic.Utils;
+using PokemonGo.RocketBot.Window.Helpers;
+using PokemonGo.RocketBot.Window.Models;
+using PokemonGo.RocketBot.Window.Plugin;
+using POGOProtos.Data;
+using POGOProtos.Inventory;
+using POGOProtos.Inventory.Item;
+using POGOProtos.Map.Fort;
+using POGOProtos.Map.Pokemon;
+using Segment;
+using Segment.Model;
+using Logger = PokemonGo.RocketBot.Logic.Logging.Logger;
+
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    public partial class MainForm : Form
+    {
+        public static MainForm Instance;
+        public static SynchronizationContext SynchronizationContext;
+        private static readonly ManualResetEvent QuitEvent = new ManualResetEvent(false);
+        private static readonly string subPath = "";
+        private static Session _session;
+        public static bool BoolNeedsSetup;
+        private static GMapMarker _playerMarker;
+        private readonly List<PointLatLng> _playerLocations = new List<PointLatLng>();
+
+        private readonly GMapOverlay _playerOverlay = new GMapOverlay("players");
+        private readonly GMapOverlay _playerRouteOverlay = new GMapOverlay("playerroutes");
+        private readonly GMapOverlay _pokemonsOverlay = new GMapOverlay("pokemons");
+        private readonly GMapOverlay _pokestopsOverlay = new GMapOverlay("pokestops");
+        private readonly GMapOverlay _searchAreaOverlay = new GMapOverlay("areas");
+
+        private PointLatLng _currentLatLng;
+        private ConsoleLogger _logger;
+        private StateMachine _machine;
+        private List<PointLatLng> _routePoints;
+        private GlobalSettings _settings;
+
+        public MainForm()
+        {
+            InitializeComponent();
+            SynchronizationContext = SynchronizationContext.Current;
+            Instance = this;
+        }
+
+        private void MainForm_Load(object sender, EventArgs e)
+        {
+            Text = @"RocketBot v" + Application.ProductVersion;
+
+            //User activity tracking, help us get more information to make RocketBot better
+            //Everything is anonymous
+            Analytics.Initialize("UzL1tnZa9Yw2qcJWRIbcwGFmWGuovXez");
+            Analytics.Client.Identify(MachineIdHelper.GetMachineId(), new Traits());
+            Analytics.Client.Track(MachineIdHelper.GetMachineId(), "App started");
+
+            speedLable.Parent = gMapControl1;
+            showMoreCheckBox.Parent = gMapControl1;
+            followTrainerCheckBox.Parent = gMapControl1;
+            togglePrecalRoute.Parent = gMapControl1;
+
+            InitializeBot();
+            InitializePokemonForm();
+            InitializeMap();
+            VersionHelper.CheckVersion();
+            if (BoolNeedsSetup)
+            {
+                //startStopBotToolStripMenuItem.Enabled = false;
+                Logger.Write("First time here? Go to settings to set your basic info.");
+                GlobalSettings.Load("");
+            }
+        }
+
+        private void InitializeMap()
+        {
+            var lat = _session.Client.Settings.DefaultLatitude;
+            var lng = _session.Client.Settings.DefaultLongitude;
+            gMapControl1.MapProvider = GoogleMapProvider.Instance;
+            gMapControl1.Manager.Mode = AccessMode.ServerOnly;
+            GMapProvider.WebProxy = null;
+            gMapControl1.Position = new PointLatLng(lat, lng);
+            gMapControl1.DragButton = MouseButtons.Left;
+
+            gMapControl1.MinZoom = 1;
+            gMapControl1.MaxZoom = 20;
+            gMapControl1.Zoom = 15;
+
+            gMapControl1.Overlays.Add(_searchAreaOverlay);
+            gMapControl1.Overlays.Add(_pokestopsOverlay);
+            gMapControl1.Overlays.Add(_pokemonsOverlay);
+            gMapControl1.Overlays.Add(_playerOverlay);
+            gMapControl1.Overlays.Add(_playerRouteOverlay);
+
+            _playerMarker = new GMapMarkerTrainer(new PointLatLng(lat, lng),
+                ResourceHelper.GetImage("Trainer_Front"));
+            _playerOverlay.Markers.Add(_playerMarker);
+            _playerMarker.Position = new PointLatLng(lat, lng);
+            _searchAreaOverlay.Polygons.Clear();
+            S2GMapDrawer.DrawS2Cells(
+                S2Helper.GetNearbyCellIds(lng, lat),
+                _searchAreaOverlay);
+        }
+
+        private void InitializeBot()
+        {
+            var strCulture = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
+
+            var culture = CultureInfo.CreateSpecificCulture("en");
+            CultureInfo.DefaultThreadCurrentCulture = culture;
+            Thread.CurrentThread.CurrentCulture = culture;
+
+            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionEventHandler;
+
+            _logger = new ConsoleLogger(LogLevel.LevelUp);
+            Logger.SetLogger(_logger, subPath);
+
+            var profilePath = Path.Combine(Directory.GetCurrentDirectory(), subPath);
+            var profileConfigPath = Path.Combine(profilePath, "config");
+            var authFile = Path.Combine(profileConfigPath, "auth.json");
+            var configFile = Path.Combine(profileConfigPath, "config.json");
+
+            BoolNeedsSetup = false;
+
+            if (File.Exists(configFile))
+            {
+                /** if (!VersionCheckState.IsLatest())
+                    settings = GlobalSettings.Load(subPath, true);
+                else **/
+                _settings = GlobalSettings.Load(subPath, true);
+                _settings.Auth.Load(authFile);
+            }
+            else
+            {
+                _settings = new GlobalSettings
+                {
+                    ProfilePath = profilePath,
+                    ProfileConfigPath = profileConfigPath,
+                    GeneralConfigPath = Path.Combine(Directory.GetCurrentDirectory(), "config"),
+                    TranslationLanguageCode = strCulture
+                };
+                BoolNeedsSetup = true;
+            }
+
+            _session = new Session(new ClientSettings(_settings), new LogicSettings(_settings));
+
+            _session.Client.ApiFailure = new ApiFailureStrategy(_session);
+
+            _machine = new StateMachine();
+            var stats = new Statistics();
+
+            // var strVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(3); NOT USED ATM
+
+            //Status bar
+            stats.DirtyEvent +=
+                () =>
+                    SetStatusText(stats.GetTemplatedStats(
+                        _session.Translation.GetTranslation(TranslationString.StatsTemplateString),
+                        _session.Translation.GetTranslation(TranslationString.StatsXpTemplateString)));
+
+            var aggregator = new StatisticsAggregator(stats);
+            var listener = new ConsoleEventListener();
+
+            _session.EventDispatcher.EventReceived += evt => listener.Listen(evt, _session);
+            _session.EventDispatcher.EventReceived += evt => aggregator.Listen(evt, _session);
+
+            if (_settings.UseWebsocket)
+            {
+                var websocket = new WebSocketInterface(_settings.WebSocketPort, _session);
+                _session.EventDispatcher.EventReceived += evt => websocket.Listen(evt, _session);
+            }
+
+            var plugins = new PluginManager(new PluginInitializerInfo
+            {
+                Logger = _logger,
+                Session = _session,
+                Settings = _settings,
+                Statistics = stats
+            });
+            plugins.InitPlugins();
+            _machine.SetFailureState(new LoginState());
+            Logger.SetLoggerContext(_session);
+
+            _session.Navigation.UpdatePositionEvent +=
+                (lat, lng) => _session.EventDispatcher.Send(new UpdatePositionEvent { Latitude = lat, Longitude = lng });
+            _session.Navigation.UpdatePositionEvent += Navigation_UpdatePositionEvent;
+
+            RouteOptimizeUtil.RouteOptimizeEvent +=
+                optimizedroute =>
+                    _session.EventDispatcher.Send(new OptimizeRouteEvent { OptimizedRoute = optimizedroute });
+            RouteOptimizeUtil.RouteOptimizeEvent += InitializePokestopsAndRoute;
+
+            Navigation.GetHumanizeRouteEvent +=
+                (route, destination) =>
+                    _session.EventDispatcher.Send(new GetHumanizeRouteEvent { Route = route, Destination = destination });
+            Navigation.GetHumanizeRouteEvent += UpdateMap;
+
+            FarmPokestopsTask.LootPokestopEvent +=
+                pokestop => _session.EventDispatcher.Send(new LootPokestopEvent { Pokestop = pokestop });
+            FarmPokestopsTask.LootPokestopEvent += UpdateMap;
+
+            CatchNearbyPokemonsTask.PokemonEncounterEvent +=
+                mappokemons =>
+                    _session.EventDispatcher.Send(new PokemonsEncounterEvent { EncounterPokemons = mappokemons });
+            CatchNearbyPokemonsTask.PokemonEncounterEvent += UpdateMap;
+
+            CatchIncensePokemonsTask.PokemonEncounterEvent +=
+                mappokemons =>
+                    _session.EventDispatcher.Send(new PokemonsEncounterEvent { EncounterPokemons = mappokemons });
+            CatchIncensePokemonsTask.PokemonEncounterEvent += UpdateMap;
+        }
+
+        private async Task StartBot()
+        {
+            await _machine.AsyncStart(new VersionCheckState(), _session);
+
+            if (_settings.UseTelegramApi)
+            {
+                _session.Telegram = new TelegramService(_settings.TelegramApiKey, _session);
+            }
+
+            _settings.CheckProxy();
+
+            QuitEvent.WaitOne();
+        }
+
+        private void InitializePokestopsAndRoute(List<FortData> pokeStops)
+        {
+            SynchronizationContext.Post(o =>
+            {
+                _pokestopsOverlay.Markers.Clear();
+                _pokestopsOverlay.Routes.Clear();
+                _playerOverlay.Markers.Clear();
+                _playerOverlay.Routes.Clear();
+                _playerLocations.Clear();
+                var routePoint =
+                    (from pokeStop in pokeStops
+                     where pokeStop != null
+                     select new PointLatLng(pokeStop.Latitude, pokeStop.Longitude)).ToList();
+
+                _routePoints = routePoint;
+                togglePrecalRoute.Enabled = true;
+
+                var route = new GMapRoute(routePoint, "Walking Path")
+                {
+                    Stroke = new Pen(Color.FromArgb(128, 0, 179, 253), 4)
+                };
+                _pokestopsOverlay.Routes.Add(route);
+
+                foreach (var pokeStop in pokeStops)
+                {
+                    var pokeStopLoc = new PointLatLng(pokeStop.Latitude, pokeStop.Longitude);
+                    var pokestopMarker = new GMapMarkerPokestops(pokeStopLoc,
+                        ResourceHelper.GetImage("Pokestop"));
+                    _pokestopsOverlay.Markers.Add(pokestopMarker);
+                }
+            }, null);
+        }
+
+        private void Navigation_UpdatePositionEvent(double lat, double lng)
+        {
+            var latlng = new PointLatLng(lat, lng);
+
+            _playerLocations.Add(latlng);
+            var currentlatlng = _currentLatLng;
+            SynchronizationContext.Post(o =>
+            {
+                _playerOverlay.Markers.Remove(_playerMarker);
+                if (!currentlatlng.IsEmpty)
+                    _playerMarker = currentlatlng.Lng < latlng.Lng
+                        ? new GMapMarkerTrainer(latlng, ResourceHelper.GetImage("Trainer_Right"))
+                        : new GMapMarkerTrainer(latlng, ResourceHelper.GetImage("Trainer_Left"));
+                _playerOverlay.Markers.Add(_playerMarker);
+                if (followTrainerCheckBox.Checked)
+                    gMapControl1.Position = latlng;
+            }, null);
+
+            _currentLatLng = latlng;
+            UpdateMap();
+            SaveLocationToDisk(lat, lng);
+        }
+
+        private static void SaveLocationToDisk(double lat, double lng)
+        {
+            var coordsPath = Path.Combine(Directory.GetCurrentDirectory(), subPath, "Config", "LastPos.ini");
+
+            File.WriteAllText(coordsPath, $"{lat}:{lng}");
+        }
+
+        private static void UnhandledExceptionEventHandler(object obj, UnhandledExceptionEventArgs args)
+        {
+            Logger.Write("Exception caught, writing LogBuffer.", force: true);
+            throw new Exception();
+        }
+
+        private void showMoreCheckBox_CheckedChanged(object sender, EventArgs e)
+        {
+            if (showMoreCheckBox.Checked)
+            {
+                followTrainerCheckBox.Visible = true;
+                togglePrecalRoute.Visible = true;
+            }
+            else
+            {
+                followTrainerCheckBox.Visible = false;
+                togglePrecalRoute.Visible = false;
+            }
+        }
+
+        private void followTrainerCheckBox_CheckedChanged(object sender, EventArgs e)
+        {
+            if (followTrainerCheckBox.Checked)
+            {
+                gMapControl1.CanDragMap = false;
+                gMapControl1.Position = _currentLatLng;
+            }
+            else
+            {
+                gMapControl1.CanDragMap = true;
+            }
+        }
+
+        private void togglePrecalRoute_CheckedChanged(object sender, EventArgs e)
+        {
+            if (togglePrecalRoute.Checked)
+            {
+                _pokestopsOverlay.Routes.Clear();
+                var route = new GMapRoute(_routePoints, "Walking Path")
+                {
+                    Stroke = new Pen(Color.FromArgb(128, 0, 179, 253), 4)
+                };
+                _pokestopsOverlay.Routes.Add(route);
+            }
+            else
+            {
+                _pokestopsOverlay.Routes.Clear();
+            }
+        }
+
+        #region UPDATEMAP
+
+        private void UpdateMap()
+        {
+            SynchronizationContext.Post(o =>
+            {
+                var route = new GMapRoute(_playerLocations, "step")
+                {
+                    Stroke = new Pen(Color.FromArgb(175, 175, 175), 2) { DashStyle = DashStyle.Dot }
+                };
+                _playerOverlay.Routes.Clear();
+                _playerOverlay.Routes.Add(route);
+            }, null);
+        }
+
+        private void UpdateMap(List<GeoCoordinate> route, GeoCoordinate destination)
+        {
+            var routePointLatLngs = new List<PointLatLng>();
+            foreach (var item in route)
+            {
+                routePointLatLngs.Add(new PointLatLng(item.Latitude, item.Longitude));
+            }
+            var routes = new GMapRoute(routePointLatLngs, routePointLatLngs.ToString())
+            {
+                Stroke = new Pen(Color.FromArgb(128, 0, 179, 253), 4) { DashStyle = DashStyle.Dash }
+            };
+            _playerRouteOverlay.Routes.Add(routes);
+            /* Logger.Write("new call");
+             List<PointLatLng> routePointLatLngs = new List<PointLatLng>();
+             Logger.Write("new route size: " +route.Count);
+             PointLatLng destinationPointLatLng = new PointLatLng(destination.Latitude, destination.Longitude);
+             foreach (var item in route)
+             {
+                 routePointLatLngs.Add(new PointLatLng(item.Latitude, item.Longitude));
+             }
+
+             List<PointLatLng> routePointsDistinct = new List<PointLatLng>(_routePoints.Distinct());
+
+             int listPosition;
+             for (listPosition = 0; listPosition < routePointsDistinct.Count; listPosition++)
+             {
+                 Logger.Write("listPosition: " + listPosition);
+                 var item = routePointsDistinct[listPosition];
+                 if (item == destinationPointLatLng)
+                     break;
+             }
+
+             if (listPosition == 0)
+                 return;
+
+             //routePointsDistinct.Remove(destinationPointLatLng);
+             routePointsDistinct.InsertRange(listPosition, routePointLatLngs);
+             //routePointsDistinct.Remove(routePointsDistinct[listPosition - 1]);
+
+
+             _pokestopsOverlay.Routes.Clear();
+             var routes = new GMapRoute(routePointsDistinct, "Walking Path")
+             {
+                 Stroke = new Pen(Color.FromArgb(128, 0, 179, 253), 4)
+             };
+             _pokestopsOverlay.Routes.Add(routes);*/
+        }
+
+        private void UpdateMap(FortData pokestop)
+        {
+            SynchronizationContext.Post(o =>
+            {
+                var pokeStopLoc = new PointLatLng(pokestop.Latitude, pokestop.Longitude);
+
+                lock (_pokestopsOverlay.Markers)
+                {
+                    for (var i = 0; i < _pokestopsOverlay.Markers.Count; i++)
+                    {
+                        var marker = _pokestopsOverlay.Markers[i];
+                        if (marker.Position == pokeStopLoc)
+                            _pokestopsOverlay.Markers.Remove(marker);
+                    }
+                }
+
+                GMapMarker pokestopMarker = new GMapMarkerPokestops(pokeStopLoc,
+                    ResourceHelper.GetImage("Pokestop_looted"));
+                //pokestopMarker.ToolTipMode = MarkerTooltipMode.OnMouseOver;
+                //pokestopMarker.ToolTip = new GMapBaloonToolTip(pokestopMarker);
+                _pokestopsOverlay.Markers.Add(pokestopMarker);
+            }, null);
+        }
+
+        private void UpdateMap(List<MapPokemon> encounterPokemons)
+        {
+            SynchronizationContext.Post(o =>
+            {
+                _pokemonsOverlay.Markers.Clear();
+
+                foreach (var pokemon in encounterPokemons)
+                {
+                    var pkmImage = ResourceHelper.GetImage("Pokemon_" + pokemon.PokemonId.GetHashCode(), 50, 50);
+                    var pointLatLng = new PointLatLng(pokemon.Latitude, pokemon.Longitude);
+                    GMapMarker pkmMarker = new GMapMarkerTrainer(pointLatLng, pkmImage);
+                    _pokemonsOverlay.Markers.Add(pkmMarker);
+                }
+            }, null);
+        }
+
+        #endregion
+
+        #region INTERFACE
+
+        public static void ColoredConsoleWrite(Color color, string text)
+        {
+            if (text.Length <= 0)
+                return;
+            var message = text;
+            if (Instance.InvokeRequired)
+            {
+                Instance.Invoke(new Action<Color, string>(ColoredConsoleWrite), color, message);
+                return;
+            }
+            Instance.logTextBox.SelectionStart = Instance.logTextBox.Text.Length;
+            Instance.logTextBox.ScrollToCaret();
+            Instance.logTextBox.SelectionColor = color;
+            Instance.logTextBox.AppendText(message);
+        }
+
+        public static void SetSpeedLable(string text)
+        {
+            if (Instance.InvokeRequired)
+            {
+                Instance.Invoke(new Action<string>(SetSpeedLable), text);
+                return;
+            }
+            Instance.speedLable.Text = text;
+        }
+
+        public static void SetStatusText(string text)
+        {
+            if (Instance.InvokeRequired)
+            {
+                Instance.Invoke(new Action<string>(SetStatusText), text);
+                return;
+            }
+            Instance.statusLabel.Text = text;
+        }
+
+        #endregion INTERFACE
+
+        #region EVENTS
+
+        private async void btnRefresh_Click(object sender, EventArgs e)
+        {
+            await ReloadPokemonList();
+        }
+
+        private void startStopBotToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            startStopBotToolStripMenuItem.Enabled = false;
+            Task.Run(StartBot);
+        }
+
+        private void todoToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            Form settingsForm = new SettingsForm(ref _settings);
+            settingsForm.ShowDialog();
+            var newLocation = new PointLatLng(_settings.DefaultLatitude, _settings.DefaultLongitude);
+            gMapControl1.Position = newLocation;
+            _playerMarker.Position = newLocation;
+            _playerLocations.Clear();
+            _playerLocations.Add(newLocation);
+            UpdateMap();
+        }
+
+        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            Analytics.Client.Track(MachineIdHelper.GetMachineId(), "App stopped");
+            Analytics.Dispose();
+            //Environment.Exit(0);
+        }
+
+        #endregion EVENTS
+
+        #region POKEMON LIST
+
+        private IEnumerable<Candy> _families;
+
+        private void InitializePokemonForm()
+        {
+            //olvPokemonList.ButtonClick += PokemonListButton_Click;
+
+            pkmnName.ImageGetter = delegate (object rowObject)
+            {
+                var pokemon = rowObject as PokemonObject;
+
+                // ReSharper disable once PossibleNullReferenceException
+                var key = pokemon.PokemonId.ToString();
+                if (!olvPokemonList.SmallImageList.Images.ContainsKey(key))
+                {
+                    var img = ResourceHelper.GetPokemonImage((int)pokemon.PokemonId);
+                    olvPokemonList.SmallImageList.Images.Add(key, img);
+                }
+                return key;
+            };
+
+            olvPokemonList.FormatRow += delegate (object sender, FormatRowEventArgs e)
+            {
+                var pok = e.Model as PokemonObject;
+                if (olvPokemonList.Objects
+                    .Cast<PokemonObject>()
+                    .Select(i => i.PokemonId)
+                    // ReSharper disable once PossibleNullReferenceException
+                    .Count(p => p == pok.PokemonId) > 1)
+                    e.Item.BackColor = Color.LightGreen;
+
+                foreach (OLVListSubItem sub in e.Item.SubItems)
+                {
+                    // ReSharper disable once PossibleNullReferenceException
+                    if (sub.Text.Equals("Evolve") && !pok.CanEvolve)
+                    {
+                        sub.CellPadding = new Rectangle(100, 100, 0, 0);
+                    }
+                }
+            };
+
+            cmsPokemonList.Opening += delegate (object sender, CancelEventArgs e)
+            {
+                e.Cancel = false;
+                cmsPokemonList.Items.Clear();
+
+                var pokemons = olvPokemonList.SelectedObjects.Cast<PokemonObject>().Select(o => o.PokemonData).ToList();
+                var canAllEvolve =
+                    olvPokemonList.SelectedObjects.Cast<PokemonObject>().Select(o => o).All(o => o.CanEvolve);
+                var count = pokemons.Count();
+
+                if (count < 1)
+                {
+                    e.Cancel = true;
+                }
+
+                var pokemonObject = olvPokemonList.SelectedObjects.Cast<PokemonObject>().Select(o => o).First();
+
+                var item = new ToolStripMenuItem();
+                var separator = new ToolStripSeparator();
+                item.Text = $"Transfer {count} pokemon";
+                item.Click += delegate { TransferPokemon(pokemons); };
+                cmsPokemonList.Items.Add(item);
+
+                item = new ToolStripMenuItem { Text = @"Rename" };
+                item.Click += delegate
+                {
+                    using (var form = count == 1 ? new NicknamePokemonForm(pokemonObject) : new NicknamePokemonForm())
+                    {
+                        if (form.ShowDialog() == DialogResult.OK)
+                        {
+                            NicknamePokemon(pokemons, form.txtNickname.Text);
+                        }
+                    }
+                };
+                cmsPokemonList.Items.Add(item);
+
+                if (canAllEvolve)
+                {
+                    item = new ToolStripMenuItem { Text = $"Evolve {count} pokemon" };
+                    item.Click += delegate { EvolvePokemon(pokemons); };
+                    cmsPokemonList.Items.Add(item);
+                }
+
+                if (count != 1) return;
+                item = new ToolStripMenuItem { Text = @"PowerUp" };
+                item.Click += delegate { PowerUpPokemon(pokemons); };
+                cmsPokemonList.Items.Add(item);
+                cmsPokemonList.Items.Add(separator);
+
+                item = new ToolStripMenuItem { Text = @"Transfer Clean Up (Keep highest IV)" };
+                item.Click += delegate { CleanUpTransferPokemon(pokemonObject, "IV"); };
+                cmsPokemonList.Items.Add(item);
+
+                item = new ToolStripMenuItem { Text = @"Transfer Clean Up (Keep highest CP)" };
+                item.Click += delegate { CleanUpTransferPokemon(pokemonObject, "CP"); };
+                cmsPokemonList.Items.Add(item);
+
+                item = new ToolStripMenuItem { Text = @"Evolve Clean Up (Highest IV)" };
+                item.Click += delegate { CleanUpEvolvePokemon(pokemonObject, "IV"); };
+                cmsPokemonList.Items.Add(item);
+
+                item = new ToolStripMenuItem { Text = @"Evolve Clean Up (Highest CP)" };
+                item.Click += delegate { CleanUpEvolvePokemon(pokemonObject, "CP"); };
+                cmsPokemonList.Items.Add(item);
+
+                cmsPokemonList.Items.Add(separator);
+            };
+        }
+
+        private async void olvPokemonList_ButtonClick(object sender, CellClickEventArgs e)
+        {
+            try
+            {
+                var pokemon = e.Model as PokemonObject;
+                var cName = olvPokemonList.AllColumns[e.ColumnIndex].AspectToStringFormat;
+                if (cName.Equals("Transfer"))
+                {
+                    // ReSharper disable once PossibleNullReferenceException
+                    TransferPokemon(new List<PokemonData> { pokemon.PokemonData });
+                }
+                else if (cName.Equals("Power Up"))
+                {
+                    // ReSharper disable once PossibleNullReferenceException
+                    PowerUpPokemon(new List<PokemonData> { pokemon.PokemonData });
+                }
+                else if (cName.Equals("Evolve"))
+                {
+                    // ReSharper disable once PossibleNullReferenceException
+                    EvolvePokemon(new List<PokemonData> { pokemon.PokemonData });
+                }
+            }
+            catch (Exception ex)
+            {
+                Logger.Write(ex.ToString(), LogLevel.Error);
+                await ReloadPokemonList();
+            }
+        }
+
+        private async void TransferPokemon(IEnumerable<PokemonData> pokemons)
+        {
+            SetState(false);
+            foreach (var pokemon in pokemons)
+            {
+                await TransferSpecificPokemonTask.Execute(_session, pokemon.Id);
+            }
+            await ReloadPokemonList();
+        }
+
+        private async void PowerUpPokemon(IEnumerable<PokemonData> pokemons)
+        {
+            SetState(false);
+            foreach (var pokemon in pokemons)
+            {
+                await LevelUpSpecificPokemonTask.Execute(_session, pokemon.Id);
+            }
+            await ReloadPokemonList();
+        }
+
+        private async void EvolvePokemon(IEnumerable<PokemonData> pokemons)
+        {
+            SetState(false);
+            foreach (var pokemon in pokemons)
+            {
+                await EvolveSpecificPokemonTask.Execute(_session, pokemon.Id);
+            }
+            await ReloadPokemonList();
+        }
+
+        private async void CleanUpTransferPokemon(PokemonObject pokemon, string type)
+        {
+            var et = pokemon.EvolveTimes;
+            var pokemonCount =
+                olvPokemonList.Objects
+                    .Cast<PokemonObject>()
+                    .Count(p => p.PokemonId == pokemon.PokemonId);
+
+            if (pokemonCount < et)
+            {
+                await ReloadPokemonList();
+                return;
+            }
+
+            if (et == 0)
+                et = 1;
+
+            if (type.Equals("IV"))
+            {
+                var pokemons =
+                    olvPokemonList.Objects.Cast<PokemonObject>()
+                        .Where(p => p.PokemonId == pokemon.PokemonId)
+                        .Select(p => p.PokemonData)
+                        .OrderBy(p => p.Cp)
+                        .ThenBy(PokemonInfo.CalculatePokemonPerfection)
+                        .Take(pokemonCount - et);
+
+                TransferPokemon(pokemons);
+            }
+            else if (type.Equals("CP"))
+            {
+                var pokemons =
+                    olvPokemonList.Objects.Cast<PokemonObject>()
+                        .Where(p => p.PokemonId == pokemon.PokemonId)
+                        .Select(p => p.PokemonData)
+                        .OrderBy(PokemonInfo.CalculatePokemonPerfection)
+                        .ThenBy(p => p.Cp)
+                        .Take(pokemonCount - et);
+
+                TransferPokemon(pokemons);
+            }
+        }
+
+        private async void CleanUpEvolvePokemon(PokemonObject pokemon, string type)
+        {
+            var et = pokemon.EvolveTimes;
+
+            if (et < 1)
+            {
+                await ReloadPokemonList();
+                return;
+            }
+
+            if (type.Equals("IV"))
+            {
+                var pokemons =
+                    olvPokemonList.Objects.Cast<PokemonObject>()
+                        .Where(p => p.PokemonId == pokemon.PokemonId)
+                        .Select(p => p.PokemonData)
+                        .OrderByDescending(p => p.Cp)
+                        .ThenByDescending(PokemonInfo.CalculatePokemonPerfection)
+                        .Take(et);
+
+                EvolvePokemon(pokemons);
+            }
+            else if (type.Equals("CP"))
+            {
+                var pokemons =
+                    olvPokemonList.Objects.Cast<PokemonObject>()
+                        .Where(p => p.PokemonId == pokemon.PokemonId)
+                        .Select(p => p.PokemonData)
+                        .OrderByDescending(PokemonInfo.CalculatePokemonPerfection)
+                        .ThenByDescending(p => p.Cp)
+                        .Take(et);
+
+                EvolvePokemon(pokemons);
+            }
+        }
+
+        public async void NicknamePokemon(IEnumerable<PokemonData> pokemons, string nickname)
+        {
+            SetState(false);
+            var pokemonDatas = pokemons as IList<PokemonData> ?? pokemons.ToList();
+            foreach (var pokemon in pokemonDatas)
+            {
+                var newName = new StringBuilder(nickname);
+                newName.Replace("{Name}", Convert.ToString(pokemon.PokemonId));
+                newName.Replace("{CP}", Convert.ToString(pokemon.Cp));
+                newName.Replace("{IV}",
+                    Convert.ToString(Math.Round(_session.Inventory.GetPerfect(pokemon)), CultureInfo.InvariantCulture));
+                newName.Replace("{IA}", Convert.ToString(pokemon.IndividualAttack));
+                newName.Replace("{ID}", Convert.ToString(pokemon.IndividualDefense));
+                newName.Replace("{IS}", Convert.ToString(pokemon.IndividualStamina));
+                if (nickname.Length > 12)
+                {
+                    Logger.Write($"\"{newName}\" is too long, please choose another name");
+                    if (pokemonDatas.Count() == 1)
+                    {
+                        SetState(true);
+                        return;
+                    }
+                    continue;
+                }
+                await RenameSpecificPokemonTask.Execute(_session, pokemon, nickname);
+            }
+            await ReloadPokemonList();
+        }
+
+        private async Task ReloadPokemonList()
+        {
+            SetState(false);
+            try
+            {
+                await _session.Inventory.RefreshCachedInventory();
+                var itemTemplates = await _session.Client.Download.GetItemTemplates();
+                var inventory = await _session.Inventory.GetCachedInventory();
+                var profile = await _session.Client.Player.GetPlayer();
+                var inventoryAppliedItems =
+                    await _session.Inventory.GetAppliedItems();
+
+                var appliedItems =
+                    inventoryAppliedItems.Where(aItems => aItems?.Item != null)
+                        .SelectMany(aItems => aItems.Item)
+                        .ToDictionary(item => item.ItemId, item => TimeHelper.FromUnixTimeUtc(item.ExpireMs));
+
+                PokemonObject.Initilize(itemTemplates);
+
+                var pokemons =
+                    inventory.InventoryDelta.InventoryItems.Select(i => i?.InventoryItemData?.PokemonData)
+                        .Where(p => p != null && p.PokemonId > 0)
+                        .OrderByDescending(PokemonInfo.CalculatePokemonPerfection)
+                        .ThenByDescending(key => key.Cp)
+                        .OrderBy(key => key.PokemonId);
+                _families = inventory.InventoryDelta.InventoryItems
+                    .Select(i => i.InventoryItemData.Candy)
+                    .Where(p => p != null && p.FamilyId > 0)
+                    .OrderByDescending(p => p.FamilyId);
+
+                var pokemonObjects = new List<PokemonObject>();
+                foreach (var pokemon in pokemons)
+                {
+                    var pokemonObject = new PokemonObject(pokemon);
+                    var family = _families.First(i => (int)i.FamilyId <= (int)pokemon.PokemonId);
+                    pokemonObject.Candy = family.Candy_;
+                    pokemonObjects.Add(pokemonObject);
+                }
+
+                var prevTopItem = olvPokemonList.TopItemIndex;
+                olvPokemonList.SetObjects(pokemonObjects);
+                olvPokemonList.TopItemIndex = prevTopItem;
+
+                var pokemoncount =
+                    inventory.InventoryDelta.InventoryItems
+                        .Select(i => i.InventoryItemData?.PokemonData)
+                        .Count(p => p != null && p.PokemonId > 0);
+                var eggcount =
+                    inventory.InventoryDelta.InventoryItems
+                        .Select(i => i.InventoryItemData?.PokemonData)
+                        .Count(p => p != null && p.IsEgg);
+                lblPokemonList.Text =
+                    $"{pokemoncount + eggcount} / {profile.PlayerData.MaxPokemonStorage} ({pokemoncount} pokemon, {eggcount} eggs)";
+
+                var items =
+                    inventory.InventoryDelta.InventoryItems
+                        .Select(i => i.InventoryItemData?.Item)
+                        .Where(i => i != null)
+                        .OrderBy(i => i.ItemId);
+                var itemscount =
+                    inventory.InventoryDelta.InventoryItems
+                        .Select(i => i.InventoryItemData?.Item)
+                        .Where(i => i != null)
+                        .Sum(i => i.Count) + 1;
+
+                flpItems.Controls.Clear();
+                foreach (var item in items)
+                {
+                    var box = new ItemBox(item);
+                    if (appliedItems.ContainsKey(item.ItemId))
+                        box.expires = appliedItems[item.ItemId];
+                    box.ItemClick += ItemBox_ItemClick;
+                    flpItems.Controls.Add(box);
+                }
+
+                lblInventory.Text = itemscount + @" / " + profile.PlayerData.MaxItemStorage;
+            }
+            catch (ArgumentNullException)
+            {
+                Logger.Write("Please start the bot or wait until login is finished before loading Pokemon List",
+                    LogLevel.Warning);
+                SetState(true);
+                return;
+            }
+            catch (Exception ex)
+            {
+                Logger.Write(ex.ToString(), LogLevel.Error);
+            }
+
+            SetState(true);
+        }
+
+        private async void ItemBox_ItemClick(object sender, EventArgs e)
+        {
+            var item = (ItemData)sender;
+
+            using (var form = new ItemForm(item))
+            {
+                var result = form.ShowDialog();
+                if (result != DialogResult.OK) return;
+                SetState(false);
+                switch (item.ItemId)
+                {
+                    case ItemId.ItemLuckyEgg:
+                        {
+                            if (_session.Client == null)
+                            {
+                                Logger.Write($"Bot must be running first!", LogLevel.Warning);
+                                SetState(true);
+                                return;
+                            }
+                            await UseLuckyEggTask.Execute(_session);
+                        }
+                        break;
+                    case ItemId.ItemIncenseOrdinary:
+                        {
+                            if (_session.Client == null)
+                            {
+                                Logger.Write($"Bot must be running first!", LogLevel.Error);
+                                SetState(true);
+                                return;
+                            }
+                            await UseIncenseTask.Execute(_session);
+                        }
+                        break;
+                    default:
+                        {
+                            await
+                                RecycleSpecificItemTask.Execute(_session, item.ItemId, decimal.ToInt32(form.numCount.Value));
+                        }
+                        break;
+                }
+                await ReloadPokemonList();
+            }
+        }
+
+        private void SetState(bool state)
+        {
+            btnRefresh.Enabled = state;
+            olvPokemonList.Enabled = state;
+            flpItems.Enabled = state;
+        }
+
+        #endregion POKEMON LIST
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/MainForm.designer.cs b/PokemonGo.RocketBot.Window/Forms/MainForm.designer.cs
new file mode 100644
index 0000000..da0c4bc
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/MainForm.designer.cs
@@ -0,0 +1,591 @@
+using System.Windows.Forms;
+
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+            this.logTextBox = new System.Windows.Forms.RichTextBox();
+            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+            this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel();
+            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+            this.startStopBotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.settingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.showAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.showAllToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+            this.gMapControl1 = new GMap.NET.WindowsForms.GMapControl();
+            this.olvPokemonList = new BrightIdeasSoftware.ObjectListView();
+            this.pkmnName = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnCP = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnAtkIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnDefIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnStaIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnCandy = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnCandyToEvolve = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnEvolveTimes = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnNickname = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnLevel = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnMove1 = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnMove2 = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnTransferButton = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnPowerUpButton = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.pkmnEvolveButton = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
+            this.cmsPokemonList = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.largePokemonImageList = new System.Windows.Forms.ImageList(this.components);
+            this.smallPokemonImageList = new System.Windows.Forms.ImageList(this.components);
+            this.btnRefresh = new System.Windows.Forms.Button();
+            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+            this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+            this.togglePrecalRoute = new System.Windows.Forms.CheckBox();
+            this.followTrainerCheckBox = new System.Windows.Forms.CheckBox();
+            this.showMoreCheckBox = new System.Windows.Forms.CheckBox();
+            this.speedLable = new System.Windows.Forms.Label();
+            this.lblInventory = new System.Windows.Forms.Label();
+            this.flpItems = new System.Windows.Forms.FlowLayoutPanel();
+            this.lblPokemonList = new System.Windows.Forms.Label();
+            this.statusStrip1.SuspendLayout();
+            this.menuStrip1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.olvPokemonList)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+            this.splitContainer1.Panel1.SuspendLayout();
+            this.splitContainer1.Panel2.SuspendLayout();
+            this.splitContainer1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+            this.splitContainer2.Panel1.SuspendLayout();
+            this.splitContainer2.Panel2.SuspendLayout();
+            this.splitContainer2.SuspendLayout();
+            this.SuspendLayout();
+            //
+            // logTextBox
+            //
+            this.logTextBox.BackColor = System.Drawing.Color.Black;
+            this.logTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.logTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.logTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
+            this.logTextBox.ForeColor = System.Drawing.Color.White;
+            this.logTextBox.ImeMode = System.Windows.Forms.ImeMode.Off;
+            this.logTextBox.Location = new System.Drawing.Point(0, 0);
+            this.logTextBox.Name = "logTextBox";
+            this.logTextBox.ReadOnly = true;
+            this.logTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;
+            this.logTextBox.Size = new System.Drawing.Size(611, 244);
+            this.logTextBox.TabIndex = 0;
+            this.logTextBox.Text = "";
+            //
+            // statusStrip1
+            //
+            this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
+            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.statusLabel});
+            this.statusStrip1.Location = new System.Drawing.Point(0, 498);
+            this.statusStrip1.Name = "statusStrip1";
+            this.statusStrip1.Size = new System.Drawing.Size(1254, 22);
+            this.statusStrip1.TabIndex = 1;
+            this.statusStrip1.Text = "statusStrip1";
+            //
+            // statusLabel
+            //
+            this.statusLabel.Name = "statusLabel";
+            this.statusLabel.Size = new System.Drawing.Size(43, 17);
+            this.statusLabel.Text = "Status";
+            //
+            // menuStrip1
+            //
+            this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
+            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.startStopBotToolStripMenuItem,
+            this.settingToolStripMenuItem});
+            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+            this.menuStrip1.Name = "menuStrip1";
+            this.menuStrip1.Size = new System.Drawing.Size(1254, 25);
+            this.menuStrip1.TabIndex = 2;
+            this.menuStrip1.Text = "menuStrip1";
+            //
+            // startStopBotToolStripMenuItem
+            //
+            this.startStopBotToolStripMenuItem.Name = "startStopBotToolStripMenuItem";
+            this.startStopBotToolStripMenuItem.Size = new System.Drawing.Size(85, 21);
+            this.startStopBotToolStripMenuItem.Text = "▶ Start Bot";
+            this.startStopBotToolStripMenuItem.Click += new System.EventHandler(this.startStopBotToolStripMenuItem_Click);
+            //
+            // settingToolStripMenuItem
+            //
+            this.settingToolStripMenuItem.Name = "settingToolStripMenuItem";
+            this.settingToolStripMenuItem.Size = new System.Drawing.Size(66, 21);
+            this.settingToolStripMenuItem.Text = "Settings";
+            this.settingToolStripMenuItem.Click += new System.EventHandler(this.todoToolStripMenuItem_Click);
+            //
+            // showAllToolStripMenuItem
+            //
+            this.showAllToolStripMenuItem.Name = "showAllToolStripMenuItem";
+            this.showAllToolStripMenuItem.Size = new System.Drawing.Size(32, 19);
+            //
+            // showAllToolStripMenuItem1
+            //
+            this.showAllToolStripMenuItem1.Name = "showAllToolStripMenuItem1";
+            this.showAllToolStripMenuItem1.Size = new System.Drawing.Size(32, 19);
+            //
+            // gMapControl1
+            //
+            this.gMapControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.gMapControl1.Bearing = 0F;
+            this.gMapControl1.CanDragMap = true;
+            this.gMapControl1.EmptyTileColor = System.Drawing.Color.Navy;
+            this.gMapControl1.GrayScaleMode = false;
+            this.gMapControl1.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
+            this.gMapControl1.LevelsKeepInMemmory = 5;
+            this.gMapControl1.Location = new System.Drawing.Point(3, 3);
+            this.gMapControl1.MarkersEnabled = true;
+            this.gMapControl1.MaxZoom = 2;
+            this.gMapControl1.MinZoom = 2;
+            this.gMapControl1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
+            this.gMapControl1.Name = "gMapControl1";
+            this.gMapControl1.NegativeMode = false;
+            this.gMapControl1.PolygonsEnabled = true;
+            this.gMapControl1.RetryLoadTile = 0;
+            this.gMapControl1.RoutesEnabled = true;
+            this.gMapControl1.ScaleMode = GMap.NET.WindowsForms.ScaleModes.Integer;
+            this.gMapControl1.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
+            this.gMapControl1.ShowTileGridLines = false;
+            this.gMapControl1.Size = new System.Drawing.Size(605, 219);
+            this.gMapControl1.TabIndex = 23;
+            this.gMapControl1.Zoom = 0D;
+            //
+            // olvPokemonList
+            //
+            this.olvPokemonList.AllColumns.Add(this.pkmnName);
+            this.olvPokemonList.AllColumns.Add(this.pkmnCP);
+            this.olvPokemonList.AllColumns.Add(this.pkmnAtkIV);
+            this.olvPokemonList.AllColumns.Add(this.pkmnDefIV);
+            this.olvPokemonList.AllColumns.Add(this.pkmnStaIV);
+            this.olvPokemonList.AllColumns.Add(this.pkmnIV);
+            this.olvPokemonList.AllColumns.Add(this.pkmnCandy);
+            this.olvPokemonList.AllColumns.Add(this.pkmnCandyToEvolve);
+            this.olvPokemonList.AllColumns.Add(this.pkmnEvolveTimes);
+            this.olvPokemonList.AllColumns.Add(this.pkmnNickname);
+            this.olvPokemonList.AllColumns.Add(this.pkmnLevel);
+            this.olvPokemonList.AllColumns.Add(this.pkmnMove1);
+            this.olvPokemonList.AllColumns.Add(this.pkmnMove2);
+            this.olvPokemonList.AllColumns.Add(this.pkmnTransferButton);
+            this.olvPokemonList.AllColumns.Add(this.pkmnPowerUpButton);
+            this.olvPokemonList.AllColumns.Add(this.pkmnEvolveButton);
+            this.olvPokemonList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.olvPokemonList.CellEditUseWholeCell = false;
+            this.olvPokemonList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.pkmnName,
+            this.pkmnCP,
+            this.pkmnAtkIV,
+            this.pkmnDefIV,
+            this.pkmnStaIV,
+            this.pkmnIV,
+            this.pkmnCandy,
+            this.pkmnCandyToEvolve,
+            this.pkmnEvolveTimes,
+            this.pkmnNickname,
+            this.pkmnLevel,
+            this.pkmnMove1,
+            this.pkmnMove2,
+            this.pkmnTransferButton,
+            this.pkmnPowerUpButton,
+            this.pkmnEvolveButton});
+            this.olvPokemonList.ContextMenuStrip = this.cmsPokemonList;
+            this.olvPokemonList.Cursor = System.Windows.Forms.Cursors.Default;
+            this.olvPokemonList.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.olvPokemonList.FullRowSelect = true;
+            this.olvPokemonList.GridLines = true;
+            this.olvPokemonList.LargeImageList = this.largePokemonImageList;
+            this.olvPokemonList.Location = new System.Drawing.Point(3, 3);
+            this.olvPokemonList.Name = "olvPokemonList";
+            this.olvPokemonList.RowHeight = 32;
+            this.olvPokemonList.ShowGroups = false;
+            this.olvPokemonList.Size = new System.Drawing.Size(633, 299);
+            this.olvPokemonList.SmallImageList = this.smallPokemonImageList;
+            this.olvPokemonList.TabIndex = 25;
+            this.olvPokemonList.UseCompatibleStateImageBehavior = false;
+            this.olvPokemonList.View = System.Windows.Forms.View.Details;
+            this.olvPokemonList.ButtonClick += new System.EventHandler<BrightIdeasSoftware.CellClickEventArgs>(this.olvPokemonList_ButtonClick);
+            //
+            // pkmnName
+            //
+            this.pkmnName.AspectName = "PokemonId";
+            this.pkmnName.AspectToStringFormat = "";
+            this.pkmnName.Text = "Name";
+            this.pkmnName.Width = 120;
+            //
+            // pkmnCP
+            //
+            this.pkmnCP.AspectName = "Cp";
+            this.pkmnCP.Text = "CP";
+            this.pkmnCP.Width = 40;
+            //
+            // pkmnAtkIV
+            //
+            this.pkmnAtkIV.AspectName = "IndividualAttack";
+            this.pkmnAtkIV.Text = "Atk IV";
+            this.pkmnAtkIV.Width = 45;
+            //
+            // pkmnDefIV
+            //
+            this.pkmnDefIV.AspectName = "IndividualDefense";
+            this.pkmnDefIV.Text = "Def IV";
+            this.pkmnDefIV.Width = 45;
+            //
+            // pkmnStaIV
+            //
+            this.pkmnStaIV.AspectName = "IndividualStamina";
+            this.pkmnStaIV.Text = "Sta IV";
+            this.pkmnStaIV.Width = 45;
+            //
+            // pkmnIV
+            //
+            this.pkmnIV.AspectName = "GetIV";
+            this.pkmnIV.AspectToStringFormat = "{0:P2}";
+            this.pkmnIV.Text = "IV %";
+            this.pkmnIV.Width = 52;
+            //
+            // pkmnCandy
+            //
+            this.pkmnCandy.AspectName = "Candy";
+            this.pkmnCandy.Text = "Candy";
+            this.pkmnCandy.Width = 46;
+            //
+            // pkmnCandyToEvolve
+            //
+            this.pkmnCandyToEvolve.AspectName = "CandyToEvolve";
+            this.pkmnCandyToEvolve.Text = "CtE";
+            this.pkmnCandyToEvolve.Width = 31;
+            //
+            // pkmnEvolveTimes
+            //
+            this.pkmnEvolveTimes.AspectName = "EvolveTimes";
+            this.pkmnEvolveTimes.Text = "# Evolves";
+            this.pkmnEvolveTimes.Width = 66;
+            //
+            // pkmnNickname
+            //
+            this.pkmnNickname.AspectName = "Nickname";
+            this.pkmnNickname.Text = "Nickname";
+            this.pkmnNickname.Width = 80;
+            //
+            // pkmnLevel
+            //
+            this.pkmnLevel.AspectName = "GetLv";
+            this.pkmnLevel.Text = "Lv";
+            this.pkmnLevel.Width = 50;
+            //
+            // pkmnMove1
+            //
+            this.pkmnMove1.AspectName = "Move1";
+            this.pkmnMove1.Text = "Move1";
+            //
+            // pkmnMove2
+            //
+            this.pkmnMove2.AspectName = "Move2";
+            this.pkmnMove2.Text = "Move2";
+            //
+            // pkmnTransferButton
+            //
+            this.pkmnTransferButton.AspectName = "Id";
+            this.pkmnTransferButton.AspectToStringFormat = "Transfer";
+            this.pkmnTransferButton.ButtonSizing = BrightIdeasSoftware.OLVColumn.ButtonSizingMode.CellBounds;
+            this.pkmnTransferButton.IsButton = true;
+            this.pkmnTransferButton.Text = "";
+            //
+            // pkmnPowerUpButton
+            //
+            this.pkmnPowerUpButton.AspectName = "Id";
+            this.pkmnPowerUpButton.AspectToStringFormat = "Power Up";
+            this.pkmnPowerUpButton.ButtonSizing = BrightIdeasSoftware.OLVColumn.ButtonSizingMode.CellBounds;
+            this.pkmnPowerUpButton.IsButton = true;
+            this.pkmnPowerUpButton.Text = "";
+            //
+            // pkmnEvolveButton
+            //
+            this.pkmnEvolveButton.AspectName = "Id";
+            this.pkmnEvolveButton.AspectToStringFormat = "Evolve";
+            this.pkmnEvolveButton.ButtonSizing = BrightIdeasSoftware.OLVColumn.ButtonSizingMode.CellBounds;
+            this.pkmnEvolveButton.IsButton = true;
+            this.pkmnEvolveButton.Text = "";
+            //
+            // cmsPokemonList
+            //
+            this.cmsPokemonList.Name = "cmsPokemonList";
+            this.cmsPokemonList.ShowImageMargin = false;
+            this.cmsPokemonList.Size = new System.Drawing.Size(36, 4);
+            //
+            // largePokemonImageList
+            //
+            this.largePokemonImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+            this.largePokemonImageList.ImageSize = new System.Drawing.Size(96, 96);
+            this.largePokemonImageList.TransparentColor = System.Drawing.Color.Transparent;
+            //
+            // smallPokemonImageList
+            //
+            this.smallPokemonImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+            this.smallPokemonImageList.ImageSize = new System.Drawing.Size(32, 32);
+            this.smallPokemonImageList.TransparentColor = System.Drawing.Color.Transparent;
+            //
+            // btnRefresh
+            //
+            this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnRefresh.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+            this.btnRefresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.btnRefresh.Location = new System.Drawing.Point(3, 446);
+            this.btnRefresh.Name = "btnRefresh";
+            this.btnRefresh.Size = new System.Drawing.Size(633, 26);
+            this.btnRefresh.TabIndex = 26;
+            this.btnRefresh.Text = "Refresh";
+            this.btnRefresh.UseVisualStyleBackColor = true;
+            this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
+            //
+            // splitContainer1
+            //
+            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer1.Location = new System.Drawing.Point(0, 25);
+            this.splitContainer1.Name = "splitContainer1";
+            //
+            // splitContainer1.Panel1
+            //
+            this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+            //
+            // splitContainer1.Panel2
+            //
+            this.splitContainer1.Panel2.Controls.Add(this.lblInventory);
+            this.splitContainer1.Panel2.Controls.Add(this.flpItems);
+            this.splitContainer1.Panel2.Controls.Add(this.lblPokemonList);
+            this.splitContainer1.Panel2.Controls.Add(this.olvPokemonList);
+            this.splitContainer1.Panel2.Controls.Add(this.btnRefresh);
+            this.splitContainer1.Size = new System.Drawing.Size(1254, 473);
+            this.splitContainer1.SplitterDistance = 611;
+            this.splitContainer1.TabIndex = 27;
+            //
+            // splitContainer2
+            //
+            this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+            this.splitContainer2.Name = "splitContainer2";
+            this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+            //
+            // splitContainer2.Panel1
+            //
+            this.splitContainer2.Panel1.Controls.Add(this.logTextBox);
+            //
+            // splitContainer2.Panel2
+            //
+            this.splitContainer2.Panel2.Controls.Add(this.togglePrecalRoute);
+            this.splitContainer2.Panel2.Controls.Add(this.followTrainerCheckBox);
+            this.splitContainer2.Panel2.Controls.Add(this.showMoreCheckBox);
+            this.splitContainer2.Panel2.Controls.Add(this.speedLable);
+            this.splitContainer2.Panel2.Controls.Add(this.gMapControl1);
+            this.splitContainer2.Size = new System.Drawing.Size(611, 473);
+            this.splitContainer2.SplitterDistance = 244;
+            this.splitContainer2.TabIndex = 0;
+            //
+            // togglePrecalRoute
+            //
+            this.togglePrecalRoute.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.togglePrecalRoute.AutoSize = true;
+            this.togglePrecalRoute.BackColor = System.Drawing.Color.Transparent;
+            this.togglePrecalRoute.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+            this.togglePrecalRoute.Checked = true;
+            this.togglePrecalRoute.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.togglePrecalRoute.Enabled = false;
+            this.togglePrecalRoute.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.togglePrecalRoute.Location = new System.Drawing.Point(420, 53);
+            this.togglePrecalRoute.Name = "togglePrecalRoute";
+            this.togglePrecalRoute.Size = new System.Drawing.Size(184, 19);
+            this.togglePrecalRoute.TabIndex = 27;
+            this.togglePrecalRoute.Text = "Toggle Pre-Calculated Route";
+            this.togglePrecalRoute.UseVisualStyleBackColor = false;
+            this.togglePrecalRoute.Visible = false;
+            this.togglePrecalRoute.CheckedChanged += new System.EventHandler(this.togglePrecalRoute_CheckedChanged);
+            //
+            // followTrainerCheckBox
+            //
+            this.followTrainerCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.followTrainerCheckBox.AutoSize = true;
+            this.followTrainerCheckBox.BackColor = System.Drawing.Color.Transparent;
+            this.followTrainerCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+            this.followTrainerCheckBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.followTrainerCheckBox.Location = new System.Drawing.Point(472, 28);
+            this.followTrainerCheckBox.Name = "followTrainerCheckBox";
+            this.followTrainerCheckBox.Size = new System.Drawing.Size(132, 19);
+            this.followTrainerCheckBox.TabIndex = 26;
+            this.followTrainerCheckBox.Text = "Map Follow Trainer";
+            this.followTrainerCheckBox.UseVisualStyleBackColor = false;
+            this.followTrainerCheckBox.Visible = false;
+            this.followTrainerCheckBox.CheckedChanged += new System.EventHandler(this.followTrainerCheckBox_CheckedChanged);
+            //
+            // showMoreCheckBox
+            //
+            this.showMoreCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.showMoreCheckBox.AutoSize = true;
+            this.showMoreCheckBox.BackColor = System.Drawing.Color.Transparent;
+            this.showMoreCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+            this.showMoreCheckBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.showMoreCheckBox.Location = new System.Drawing.Point(453, 3);
+            this.showMoreCheckBox.Name = "showMoreCheckBox";
+            this.showMoreCheckBox.Size = new System.Drawing.Size(151, 19);
+            this.showMoreCheckBox.TabIndex = 25;
+            this.showMoreCheckBox.Text = "Show Advance Options";
+            this.showMoreCheckBox.UseVisualStyleBackColor = false;
+            this.showMoreCheckBox.CheckedChanged += new System.EventHandler(this.showMoreCheckBox_CheckedChanged);
+            //
+            // speedLable
+            //
+            this.speedLable.AutoSize = true;
+            this.speedLable.BackColor = System.Drawing.Color.Transparent;
+            this.speedLable.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.speedLable.Location = new System.Drawing.Point(1, 3);
+            this.speedLable.Name = "speedLable";
+            this.speedLable.Size = new System.Drawing.Size(0, 15);
+            this.speedLable.TabIndex = 24;
+            //
+            // lblInventory
+            //
+            this.lblInventory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.lblInventory.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lblInventory.Location = new System.Drawing.Point(3, 432);
+            this.lblInventory.Name = "lblInventory";
+            this.lblInventory.Size = new System.Drawing.Size(633, 12);
+            this.lblInventory.TabIndex = 33;
+            this.lblInventory.Text = "0 / 0 ";
+            this.lblInventory.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            //
+            // flpItems
+            //
+            this.flpItems.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.flpItems.AutoScroll = true;
+            this.flpItems.BackColor = System.Drawing.SystemColors.Window;
+            this.flpItems.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.flpItems.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
+            this.flpItems.Location = new System.Drawing.Point(3, 317);
+            this.flpItems.Name = "flpItems";
+            this.flpItems.Size = new System.Drawing.Size(633, 111);
+            this.flpItems.TabIndex = 32;
+            //
+            // lblPokemonList
+            //
+            this.lblPokemonList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.lblPokemonList.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.lblPokemonList.Location = new System.Drawing.Point(3, 303);
+            this.lblPokemonList.Name = "lblPokemonList";
+            this.lblPokemonList.Size = new System.Drawing.Size(633, 11);
+            this.lblPokemonList.TabIndex = 27;
+            this.lblPokemonList.Text = "0 / 0";
+            this.lblPokemonList.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            //
+            // MainForm
+            //
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1254, 520);
+            this.Controls.Add(this.splitContainer1);
+            this.Controls.Add(this.statusStrip1);
+            this.Controls.Add(this.menuStrip1);
+            this.ForeColor = System.Drawing.SystemColors.ControlText;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MainMenuStrip = this.menuStrip1;
+            this.Name = "MainForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "RocketBot";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
+            this.Load += new System.EventHandler(this.MainForm_Load);
+            this.statusStrip1.ResumeLayout(false);
+            this.statusStrip1.PerformLayout();
+            this.menuStrip1.ResumeLayout(false);
+            this.menuStrip1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.olvPokemonList)).EndInit();
+            this.splitContainer1.Panel1.ResumeLayout(false);
+            this.splitContainer1.Panel2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+            this.splitContainer1.ResumeLayout(false);
+            this.splitContainer2.Panel1.ResumeLayout(false);
+            this.splitContainer2.Panel2.ResumeLayout(false);
+            this.splitContainer2.Panel2.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+            this.splitContainer2.ResumeLayout(false);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.RichTextBox logTextBox;
+        private System.Windows.Forms.StatusStrip statusStrip1;
+        private System.Windows.Forms.MenuStrip menuStrip1;
+        private System.Windows.Forms.ToolStripMenuItem settingToolStripMenuItem;
+        private System.Windows.Forms.ToolStripStatusLabel statusLabel;
+        private System.Windows.Forms.ToolStripMenuItem startStopBotToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem showAllToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem showAllToolStripMenuItem1;
+        private GMap.NET.WindowsForms.GMapControl gMapControl1;
+        private BrightIdeasSoftware.ObjectListView olvPokemonList;
+        private BrightIdeasSoftware.OLVColumn pkmnName;
+        private BrightIdeasSoftware.OLVColumn pkmnCP;
+        private BrightIdeasSoftware.OLVColumn pkmnAtkIV;
+        private BrightIdeasSoftware.OLVColumn pkmnDefIV;
+        private BrightIdeasSoftware.OLVColumn pkmnStaIV;
+        private BrightIdeasSoftware.OLVColumn pkmnIV;
+        private BrightIdeasSoftware.OLVColumn pkmnTransferButton;
+        private System.Windows.Forms.Button btnRefresh;
+        private System.Windows.Forms.ImageList smallPokemonImageList;
+        private System.Windows.Forms.ImageList largePokemonImageList;
+        private BrightIdeasSoftware.OLVColumn pkmnPowerUpButton;
+        private BrightIdeasSoftware.OLVColumn pkmnEvolveButton;
+        private System.Windows.Forms.SplitContainer splitContainer1;
+        private System.Windows.Forms.SplitContainer splitContainer2;
+        private System.Windows.Forms.Label lblPokemonList;
+        private BrightIdeasSoftware.OLVColumn pkmnCandy;
+        private BrightIdeasSoftware.OLVColumn pkmnCandyToEvolve;
+        private BrightIdeasSoftware.OLVColumn pkmnEvolveTimes;
+        private System.Windows.Forms.ContextMenuStrip cmsPokemonList;
+        private System.Windows.Forms.FlowLayoutPanel flpItems;
+        private System.Windows.Forms.Label lblInventory;
+        private BrightIdeasSoftware.OLVColumn pkmnNickname;
+        private BrightIdeasSoftware.OLVColumn pkmnLevel;
+        private BrightIdeasSoftware.OLVColumn pkmnMove1;
+        private BrightIdeasSoftware.OLVColumn pkmnMove2;
+        private Label speedLable;
+        private CheckBox togglePrecalRoute;
+        private CheckBox followTrainerCheckBox;
+        private CheckBox showMoreCheckBox;
+    }
+}
diff --git a/PokemonGo.RocketBot.Window/Forms/MainForm.resx b/PokemonGo.RocketBot.Window/Forms/MainForm.resx
new file mode 100644
index 0000000..b1ea799
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/MainForm.resx
@@ -0,0 +1,677 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>132, 18</value>
+  </metadata>
+  <metadata name="cmsPokemonList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>540, 18</value>
+  </metadata>
+  <metadata name="largePokemonImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>357, 18</value>
+  </metadata>
+  <metadata name="smallPokemonImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>247, 18</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>58</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA
+        IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAB1e3iTdnx5/3Z8
+        ef9wdnP/UVJR/09PT/8zMzP/RkZG/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFCTdXt4/XZ8
+        ef91e3j/SElI/0hISP9QUFD/NTU1/z09Pf8+Pj7/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/XZ8
+        ef92fHn/P0JB/2lpaf8zMzP/Hx8f/3Nzc//09PT/Ly8v/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/WF1a/3Jycv+enp7/a2tr/8bGxv9ISEj/19fX/0VFRf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/1ldW/9RUVH/c3Nz/+np/P/09P7/6urr/1NTU/8hISH/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3V7eP93fXr/IyUk/+rq7P/a2vz/2Nj7/9/f/P/39/n/bGxs/yoqKv9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9JTUv/MTIy/1VVVf9gYGD/9PT8/93d/P/c3Pz/8PD9//39/f+QkJD/Hh4e/05O
+        Tv9QUFD/UFBQ/1BQUP9QUFD/VltY/2pra//9/f3/qKio/4ODg//y8v3/8fH7/2ZmZv9PT0//QEBP/ykp
+        lv8ZGSH/TExM/1BQUP9QUFD/UFBQ/3Z8ef9ESEb/UFBQ/2BgYP8ZGRn/r6+v/87Ozv9ub27/ampq/0ND
+        TP9AQO7/MzO5/xkZIf9PT0//UFBQ/1BQUP92fHn/dnx5/3B1c/9vdXL/b3Vy/y8xMP+wsLD/Li4u/4KC
+        gv8gIFD/QUHw/0BA7v8sLKH/Kysr/09PT/9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef9wdnP/GBka/zIy
+        t/8vL67/Pz/o/0FB7/9BQe//QUHv/xYWQv9MTEz/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/2pv
+        bf8aGjf/PDzb/0FB7/9BQe//QUHv/0FB7/8tLaX/MjIy/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef91e3j/ZWto/xkaNf84OMz/QEDu/0FB7/9BQe//Pz/n/x0dI/9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3V7eP9scW//KSwx/x8fcv85OdP/QUHx/0FB7/8YGD//UVFR/3V7eP12fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef9hZmP/Njk4/x8gPP8bHGH/DAwk/2JlZP11e3iPdXx493Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP93fXr/cnh1/2hta/d0enePAAD//wAA
+        //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA
+        AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAB3fXcNdXt4n3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/1ZYV/9QUFD/UFBQ/1BQUP9PT0//RkZG/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFCfUVFRDXV7eJ92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef9hY2L/T09P/1BQUP9QUFD/T09P/zY2Nv8BAQH/Kioq/1BQUP9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFCfdXt493Z8
+        ef92fHn/dnx5/3Z8ef92fHn/a3Bu/1FRUf9QUFD/UFBQ/1BQUP9RUVH/Hx8f/x8fH/8JCQn/HBwc/09P
+        T/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UPd2fHn/dnx5/3Z8ef92fHn/dXt4/3R6dv9GRkb/HR0d/y8vL/9QUFD/T09P/1BQUP8MDAz/jIyM/7+/
+        v/8TExP/ERER/0pKSv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef93fXr/PkA//wICAv8xMTH/CgoK/w8PD/85OTn/QEBA/wEB
+        Af/Gxsb//Pz8/9nZ2f8jIyP/ERER/1FRUf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/0dLSf8BAQH/eHh4//r6+v+zs7P/AQEB/wAA
+        AP8CAgL/Dw8P//X19f/+/v7//v7+/39/f/8LCwv/UVFR/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3V7eP9cYF7/AgMD/3t7e//7+/v/vLy8/xAQ
+        EP82Njb/v7+//19fX/8FBQX/k5OT//39/f/+/v7/f39//wsLC/9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/eH57/xkaGf9MTEz//f39/7q6
+        uv8GBgb/b29v//n5+f/8/P3//f39/4iIiP8DAwP/ampq//n5+f9/f3//CwsL/1FRUf9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef93fXr/Ghsa/0xM
+        TP/f39//ExMT/3Fxcf/8/P3/9fX9/9vb/P/+/v7//Pz9/7S0tP8PDw//QUFB/21tbf8KCgr/UVFR/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3V7
+        eP9eYmD/AQEB/xoaGv9LS0v//Pz8//j4/v+7u/n//Pz+//v7/v/6+v7//f39/9fX1/8kJCT/AgIC/woK
+        Cv9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3d+ev8rLSz/DAwM/9/f3//39/3/ycn7/+Tk/P/Fxfr/0dH7//Ly/v/39/7//f39/+zs
+        7P9FRUX/AgIC/zExMf9RUVH/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3V7eP92fHn/eH57/0hMSv8NDQ3/19fX//z8/f/Kyvr/8vL+/87O+//8/P7/zMz7/8nJ
+        +v/29v7//f3+//r6+v9ubm7/AgIC/yUlJf9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/ZGpn/0VJR/8kJiX/CwsL/wICAv8kJCT/6+vr//z8/f/d3fz/8vL+/8LC
+        +v/V1fv//Pz+/9XV+////////v7+//39/f+UlJT/BQUF/xkZGf9OTk7/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/0pOTP8AAAD/EhIS/0hISP+Hh4f/v7+//ysrK/9GRkb/+vr6//7+
+        /v/Pz/v/8vL9/9LS+//Ozvv/8PD9//39/f/9/f3//f39//v7+/+srKz/AAAB/xAQEP9LS0v/T09P/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/cHVy/w8QD/9CQkL/+fn5//39/f/8/Pz/29vb/xIS
+        Ev9ycnL//f39//39/v/Pz/v/0tL7//7+/v/q6ur/a2tr/zIyMv9BQUH/rq6u/zg4Of8dHWP/CQki/wsL
+        C/9HR0f/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP91e3j/ZWpo/wcHB/9paWn//f39//39
+        /f/7+/v/uLi4/wMDA/+bm5v//f39//7+///9/f7/9vb2/y4uLv8WFhb/e3t7/09PT/8BAQH/GBhW/0JC
+        8/89PeD/DAwq/wgICf9ERET/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/VVpY/wIC
+        Av+AgID/wsLC/8HBwf+/v7//XFxc/wcHB//FxcX//v7+//39/f+srKz/BQUF/83Nzf9ubm7/yMjI/2Bg
+        Yf8KCiX/QUHy/0BA7f8/P+X/Dw8w/wcHB/9GRkb/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/Q0dF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xgZGP/g4OD//f39/5SUlP8bGxv/zc7N/wMD
+        A/9tbW3/nJyd/wQEDv9AQOv/QUHu/0BA7f8/P+T/Dg4q/wsLDP9NTU3/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/dnx5/3Z8ef92fHn/a3Fu/2pvbf9qb23/am9t/2lvbP9pb2z/FhcX/y4uLv/x8fH/wMDA/wAA
+        AP+wsLD/ycrJ/+rq6v87Ozz/Dw84/0JC9P9BQe//QUHv/0BA7f89Pdv/BgYV/x4eHv9RUVH/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP9rcW7/DAwM/1ZW
+        Vv+5ubn/BAQG/wMDA/83Nzf/HBwc/wMDDP80NL//QEDu/0FB7/9BQe//QUHv/0FB7v8uLqX/AAAA/z4+
+        Pv9PT0//UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP9gZWP/BgYG/wYGDf82NsP/LCyh/xsbYP8gIHX/OjrU/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0JC
+        8/8RET3/EhIS/1FRUf9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef9SVlT/AQEB/yYmi/9BQfD/QkLy/0FB8f9AQO3/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QEDt/zMzuf8AAAD/QUFB/09PT/9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3d9ev9FSUb/AQEC/ysrm/9BQfD/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QkLy/w0NLP8gICD/UVFR/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3d9ev86PTz/AQED/y0tn/9BQfD/QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//JSWI/wcHCP9PT0//UFBQ/1BQUP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3d9ev8zNjT/AQED/ysr
+        mP9BQfH/QEDu/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA7f85OdD/AAAA/0FBQf9PT0//UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8
+        ef84Ozn/AAAB/x0dZ/9AQOz/QEDu/0FB7/9BQe//QUHv/0FB7/9BQe//QUHu/0FB8f8JCR//LCwt/1BQ
+        UP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3d9ev9NUU//BwcH/wkJIf8uLqr/QUHy/0FB7v9AQO7/QUHv/0FB7/9BQe//QkL0/xYW
+        VP8aGhr/UlJS/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef9scm//Ki0s/wEBAf8MDCv/KCiU/zw82/9CQvT/QUHy/0BA
+        7f9AQO7/IyN//w8PD/9RUVH/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP93fnr/Zmto/zI1NP8JCgr/AQEE/w0N
+        MP8eHm7/Ly+t/zg4zP8mJof/BgYH/09PTv9obGr/dXt493Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/d316/3R6
+        d/9ZXlz/Njk4/xscHP8ICAn/AAAA/wAAAP8CAgL/XWBe/3V8efd1e3iXdnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3V7eP93fXr/eX98/3R6d/9rcG7/YGRi/1leW/9zeXb/dXt4l3N7ewl1e3ibdXx433Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3V7eP91e3j/dHp333V7eJtze3sJAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAdnx2A3V6dyd1e3iRdnx5/3V8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP93fXr/XmFg/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/05O
+        Tv9OTk7/UFBQ/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQkVBQUCdRUVEDdXt4KXV7
+        eL91e3j7dnx5/3Z8ef92e3n/dXx5/3Z8ef91fHn/dXx5/3Z8ef9rb2z/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9PT0//TExM/ygoKP8eHh7/RkZG/1FRUf9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ+1BQ
+        UL9QUFApdXt4iXV8eP12fHn/dnx5/3Z8ef92fHn/dnx5/3V8eP92fHn/dnx5/3B1c/9WV1f/UFBQ/1BQ
+        UP9PT0//UFBQ/09PT/9PT0//QkJC/woKCv8CAgL/FBQU/0FBQf9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP1QUFCJdXt47XZ8ef92fHn/dnx5/3V8ef92fHn/dnx5/3Z8ef91e3j/c3h2/1td
+        XP9QUFD/T09P/09PT/9QUFD/UFBQ/09PT/9RUVH/MTEx/wAAAP8XFxf/BwcH/wgICP8yMjL/T09P/1BQ
+        UP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFDtdnx5/3Z8ef91fHn/dnx5/3Z8ef92e3n/dXx5/3Z8
+        ef92fXn/ZGdl/05OT/9FRUX/TExM/1FRUf9PT0//UFBQ/09PT/9TU1P/Hx8f/wMDA/+IiIj/Z2dn/wsL
+        C/8FBQX/Li4u/01NTf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3V8eP9wdnP/RUVF/x0dHf8NDQ3/Ghoa/z4+Pv9SUlL/T09P/09PT/9QUFD/Dw8P/xYW
+        Fv/Hx8f/6enp/3p6ev8ODg7/BgYG/yQkJP9MTEz/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dXx5/3Z8
+        ef92fHn/dnx5/3V8ef92fHn/dnx5/3B1cv8/Pz//BQUE/wUFBf8fHx//BwcH/wMDA/8eHh7/RERE/0xM
+        TP9DQ0P/AgIC/z8/P//f39//+vr6//7+/v+rq6v/Ghoa/wAAAP8eHh7/UlJS/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3Z8ef91fHn/dnx5/3Z8ef91e3j/c3l2/0FDQv8KCgr/DAwM/2BgYP+9vb3/eHh4/xoa
+        Gv8BAQH/DQ0N/xgYGP8aGhr/AAAA/2RkZP/w8PD//Pz8//39/f/+/v7/kJCQ/wQEBP8QEBD/UlJS/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8ef92fHn/dnx5/3V7eP95f3z/TVFP/woLCv8BAQH/fn5+/+jo
+        6P/7+/v/2dnZ/zg4OP8CAgL/AAAA/wAAAP8DAwP/CgoK/4+Pj//7+/v//v7+//7+/v/+/v7/tbW1/wgI
+        CP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dXx5/3Z8ef92fHn/dXt4/3d9ev9cYF7/BQUF/w4O
+        Dv+CgoL//Pz8//j4+P/Kysr/JSUl/wUFBf8kJCT/jIyM/5WVlf8oKCj/AwMD/0xMTP/Nzc3//Pz8//39
+        /f/+/v7/tra2/wgICP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91fHn/dnx5/2tx
+        b/8hIiH/BwcH/2hoaP/q6ur/9/f3/7Ozs/8uLi7/CgoK/1hYWP/FxcX//Pz9//r6+v+8vLz/Li4u/wEB
+        Af83Nzf/xsbG//z8/P/+/v7/t7e3/wgICP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8
+        ef92fHn/dnx5/1FVU/8KCgr/OTk5/9ra2v/+/v7/yMjI/y0tLf8BAQH/cXFx/+bm5v/7+/v//f3+//39
+        /f/8/Pz/xcXF/0FBQf8CAgL/MDAw/7CwsP/6+vr/tbW1/wgICP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dXx5/3Z8ef92fHn/dnx5/1BUUv8JCgr/ODg4/9ra2v/m5ub/Kioq/wsLC/9wcHD//f39//z8
+        /f/39/7/2dn7//b2/v/+/v7//Pz8/+vr6/9ycnL/CwsL/wwMDP+AgID/q6ur/wgICP8QEBD/UlJS/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91fHn/dnx4/250cf8lJyb/CAgI/2ZmZv9hYWH/BwcH/2Rk
+        ZP/q6un//Pz9//f3/v/Q0Pv/29v8//z8///+/v7//v7+//39/f/29vb/goKC/xoaGv8HBwf/PT09/wYG
+        Bv8PDw//UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8ef92fHn/dXt4/3h+e/9bYF3/AQEB/wwM
+        DP8JCQn/OTk5/9nZ2f/8/P3/+fn+/8TE+v/Bwfr//Pz+//39/v/4+P7/9PT9//7+/v/9/f3/8/Pz/6Ki
+        ov8bGxv/AQEB/wEBAf8QEBD/VFRU/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dXx5/3Z8ef92fHn/dnx5/3V7
+        eP96gH3/MjU0/wQEBP8JCQn/u7y8//39/f/5+f3/y8v7/9ra/P/Ly/r/z8/6/9bW+//Cwvr/7Oz9//j4
+        /v/8/P7//f39//z8/P/X19f/NjY2/wYGBv8DAwP/NTU1/05OTv9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef91fHn/dXt4/3V7eP92fHj/VlpY/wYGBv8kJCT/+fn6//7+/v/y8v3/t7f5//X1/v/8/P7/tLT4/9jY
+        +//39/7/7e39/8fH+v/i4vz//v7///39/f/8/Pz/09PT/1lZWf8KCgr/CAgI/ysrK/9MTEz/T09P/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3V7eP90enf/dXt4/3h+e/97gX7/Y2hm/xAREP8KCgr/p6en//39/f/8/P7/2Nj7/8rK
+        +v/y8v3/wMD6//Hx/v/5+f7/w8P6/9/f/P/Bwfr/7Oz9//7+/v/+/v7//Pz8/+Xl5f9zc3P/AQEB/wYG
+        Bv8hISH/UFBQ/1BQUP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3R6d/9vdXL/YGZj/0tPTf8xNDP/FBUU/wUFBf8EBAT/Gxsb/6ur
+        q//39/j//Pz+/+Xl/P/Kyvr/6ur9/+7u/f+ysvj/zs77//r6/v/4+P7/w8P6//z8/v///////v7+//39
+        /f/9/f3/kpKS/xoaGv8BAQH/GBgY/0RERP9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/bXNw/z1AP/8jJSP/Dg8O/wIDAv8AAAD/CgoK/ygp
+        KP9ERET/BgYG/zIyMv/Jycn//Pz9//39/v/+/v7/7u79/8nJ+v/l5f3/y8v6/9LS+//g4Pz/zc37//v7
+        /v/9/f3//f39//39/f/7+/v/9PT0/6enp/8uLi7/AQEB/xQUFP8+Pj7/UVFR/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/XmNg/wwNDP8AAAD/EhIS/0FB
+        Qf94eHj/tLW1/9LS0v/g4OD/W1tb/wICAv9ERET/9vb2//39/v/+/v7/5eX9/8XF+v/39/7/6en9/76+
+        +f/W1vv/8/P9//39/f/9/f3//v7+//7+/v/+/v7/+/v7//b29v+np6f/AAAA/wEBAv8MDAz/QUFB/1FR
+        Uf9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/cnh1/zU4
+        N/8DBAP/MjIy/9HR0f/8/Pz//v7+//39/f/6+vr/5OTk/1RUVP8EBAT/ZWVl/+zs7P/9/f3//f3+/9zc
+        +//Kyvr/zc36/+Hh/P/+/v7/9/f4/9PT0/+Kior/S0tL/0lJSf9ubm7/y8vL/729vf8sLC3/DQ0r/xMT
+        QP8CAgn/CAgI/zQ0NP9PT0//T09P/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/2txbv8nKSj/BAQE/1VVVf/j4+P//f39//7+/v/+/v7//f39/83Nzf81NTX/Dg4O/4WF
+        hf/x8fH//f39//39/v/q6v3/6ur9//v7/v/9/f3/tLS0/zMzM/8DAwP/BAQE/wUFBf8AAAD/JSUl/ysr
+        LP8QEDP/NjbE/zw82v8dHWn/AAAB/wkJCf8xMTH/UVFR/09PT/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dXt4/3Z8ef9pbmv/DxAQ/wgICP9sbGz//f39//v7+//8/Pz/+/v7//n5
+        +f+5ubn/BgYG/xcXF/+qqqr//f39//39/f/9/f///f3+//39/f/t7e3/KCgo/wAAAP8xMTH/rKys/7Ky
+        sv9fX1//AAAA/wICA/8oKI//QkL1/0BA7v8/P+j/Ghpb/wAAAv8GBgb/MzMz/1BQUP9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V7eP93fXr/XWJf/xITE/8AAAD/hISE/97e
+        3v/g4OD/4ODg/9/f3//e3t7/hYWF/wcHB/8QEBD/ycnJ//39/f/+/v7//v7+//39/f+Pj4//AQEB/0lJ
+        Sf/b29v/qKio/6mpqf/u7u7/c3Nz/wMDA/8SEkP/Q0P3/0BA7f9AQOz/QEDr/yMjev8FBQ7/BQUF/y4u
+        Lv9OTk7/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91e3j/dXt4/0xQ
+        Tv8KCwv/ERER/0BAQP9CQkL/QkJC/0JCQv8/Pz//OTk5/woKCv8CAgL/QEBA/9XV1f/9/f3//v7+//39
+        /f9kZGT/CgoK/5CQkP+/wMD/CQkJ/xISEv+qqqr/xMTF/xYWFv8ICBr/Pz/r/0FB7/9BQe7/QUHu/z8/
+        5v8kJHf/AQEC/wkJCf80NDT/UVFR/09PT/9QUFD/T09P/1BQUP9QUFD/T09P/1BQUP9QUFD/dnt5/3Z8
+        ef92fHn/dXt4/3R6d/9AQ0H/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CAgI/15e
+        Xv/o6Oj/+/v7//39/f9gYGD/DAwM/5iYmP+/v7//AQEB/wsLC/+mpqb/zc3N/xwcHP8HBxf/Pz/p/0FB
+        7/9BQe7/QEDu/0BA7v9BQev/HR1c/wAAAf8JCQn/R0dH/1FRUf9PT0//UFBQ/1BQUP9PT0//UFBQ/1BQ
+        UP9PT0//dnx5/3Z8ef92fHn/dnx5/3Z8ef94fnv/ZWpn/2BlY/9gZWP/YGVj/2BlY/9gZWP/YGVj/2Fm
+        Y/9dYmD/FBUU/wAAAP9jY2P/9fX1//z8/P+Pj4//AAAA/05OTv/f39//uru6/7m6uf/v7+//dnZ2/wAA
+        AP8SEkT/Q0P2/0BA7f9BQe7/QUHv/0FB7/8/P+z/Pz/k/xoaXP8BAQX/FhYW/0pKSv9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dXt5/3Z8ef91e3j/d357/3h/fP94f3v/eH98/3h/
+        fP94f3v/eH98/3h+e/96gH3/VVpX/w8QEP8FBQX/mZmZ//n5+f/V1dX/AwME/wkJCf9bW1v/srKy/7i4
+        uP+EhIT/Dw8Q/wQED/8pKZr/QkL0/0BA7v9BQe//QEDu/0FB7/9BQe//QUHv/zc3yf8ODjD/BAQE/y0t
+        Lf9PT0//T09P/1BQUP9QUFD/T09P/1BQUP9QUFD/dnt5/3Z8ef92fHn/dXx5/3V8ef91e3j/dXt4/3V7
+        eP91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP91e3j/dHp3/0hMSv8ICQn/IyMj/62trf97e3v/AgIF/wIC
+        Bv8CAgL/GRkZ/xwcHP8ICAn/AgIJ/x0dbP8+PuT/QEDt/0BA7v9BQe7/QUHv/0BA7/9BQe7/QEDu/0JC
+        8v8rK5r/AAAA/w8PD/9GRkb/T09P/1BQUP9PT0//UFBQ/1BQUP9PT0//dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92e3j/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dnx5/3Z8ef92fHn/dXt4/3d9ev9FSEf/BAQE/wYG
+        B/8EBAn/KCiN/zQ0wf8bG2T/Dw8z/w8PMv8VFUv/Ly+t/0FB8P9AQO7/QUHv/0FB7/9BQe7/QUHv/0FB
+        7/9BQe7/QUHv/0BA7f9DQ/X/FBRG/wAAAP8iIiL/U1NT/09PT/9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/dXt5/3Z8ef92fHn/dnx5/3Z8ef92e3n/dnx5/3Z8ef92e3n/dnx5/3Z8ef92fHn/dXt4/3Z7
+        ef92fHn/LzEw/wICAv8EBA7/OTnN/0JC9v9AQO//PDzd/zs72/8/P+n/QkLz/0FB7v9AQO7/QEDu/0FB
+        7/9BQe//QEDu/0FB7/9BQe//QEDu/0BA7v9BQfL/Ly+o/wUFEP8HBwf/SkpK/1BQUP9PT0//T09P/1BQ
+        UP9QUFD/dnt5/3Z8ef92fHn/dXx5/3V8ef91e3j/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8
+        ef92fHj/dXt4/3V7eP91e3j/a3Bt/yQmJv8AAAD/ExNI/zs72P9AQO7/QEDv/0FB7/9AQO//QEDu/0BA
+        7v9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA7/9AQOz/PT3g/xUVSf8AAAD/MTEx/1FR
+        Uf9PT0//UFBQ/1BQUP9PT0//dnx5/3Z8ef92fHn/dnx5/3Z8ef92e3j/dnt5/3Z8ef92e3n/dnt5/3Z8
+        ef92e3n/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/2txbv8jJSX/AQEB/xQURv86OtP/QUHu/0BA
+        7v9BQe7/QUHv/0FB7/9BQe7/QUHv/0FB7/9BQe7/QUHv/0FB7/9BQe7/QUHv/0FB7/9BQe7/QUHv/ysr
+        nP8FBRD/FBQU/0pKSv9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dXt5/3Z8ef92fHn/dnx5/3Z8
+        ef92e3n/dnx5/3Z8ef92e3n/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z9ef9nbWr/FRYW/wEB
+        Av8VFUn/Pj7i/0FB8P9AQO7/QEDu/0FB7/9BQe//QEDu/0FB7/9BQe//QEDu/0FB7/9BQe//QEDu/0FB
+        7/9BQe//QUHv/zo60/8ODi//CQkJ/zw8PP9QUFD/T09P/1BQUP9QUFD/dnt5/3Z8ef92fHn/dXx5/3V8
+        ef91e3j/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ef92fHj/dXt4/3Z8ef92fHj/dXt4/3V7
+        eP92fXr/Wl9c/xMUFP8BAQL/Gxtc/z4+4v9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA
+        7/9BQe7/QUHv/0BA7/9BQe7/QEDu/0FB7/8cHGb/AgID/yoqK/9PT0//UFBQ/1BQUP9PT0//dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z7ef92e3n/dnx5/3Z7
+        ef92e3n/dnx5/3Z7ef91e3j/dn15/11iX/8XGBj/AQEC/xYWSf85OtD/QUHu/0BA7v9AQO7/QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QEDu/0JC9P8wMK//AAAA/xkZGf9MTEz/T09P/1BQ
+        UP9QUFD/dnt5/3V7ef92fHn/dXt5/3Z8ef92fHn/dnx4/3Z8ef92fHn/dnx4/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ef9aX1z/EBIR/wEBAv8SEj7/NzfG/0FB
+        8f9AQO3/QUHu/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QEDu/0FB8P89Pd7/BAQN/w0N
+        Df9FRUX/T09P/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8eP92fHn/dnx5/3Z8
+        eP92fHn/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dXt4/3V7eP92fHn/WV1b/xQV
+        Ff8AAAH/DQ0v/ywsof9CQvH/QEDu/0BA7f9BQe//QUHv/0FB7v9BQe//QUHv/0FB7v9BQe//QUHu/0BA
+        7f9DQ/X/EBA5/wQEBf87Ozv/UVFR/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z7ef92e3n/dnx5/3Z7ef92e3n/dnx5/3Z7ef92e3n/dnx5/3Z7
+        ef91e3j/dn15/2pwbf8sLi3/BQUF/wEBBP8TE0b/NjbE/z8/6v9BQe//QUHu/0BA7v9AQO7/QUHv/0FB
+        7/9BQe//QUHv/0BA7f9DQ/n/ICB2/wAAAP8qKir/U1NT/09PT/9QUFD/dnt5/3V7ef92fHn/dXt5/3Z8
+        ef92fHn/dnx4/3Z8ef92fHn/dnx4/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ev9xd3T/QURC/xMUFP8BAQH/CQkh/x0dbf8xMbX/QEDs/0JC
+        9P9BQfH/QEDt/0BA7f9AQO7/QUHv/0BA7v9CQvT/Kiqb/wEBBP8fHx//U1NT/09PT/9PT0//dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8eP92fHn/dnx5/3Z8eP92fHn/dnt5/3Z8ef92e3n/dnt5/3Z8
+        ef92e3n/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dnx5/3V7eP92fHn/dHp3/2FnZP8yNTT/AgID/wEB
+        Bf8HBxz/GBhX/ysrn/86Otf/Q0P3/0ND+P9CQvL/QEDt/0BA6/9AQO7/MTG1/wQEEP8UFBX/UlJS/09P
+        T/9RUlH/dnx5/3Z8ef92fHn/dnx5/3V8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8
+        ef92e3j/dXt4/3Z8ef92e3j/dXt4/3Z8ef92e3j/dXt4/3Z8ef92e3j/dnx5/3Z7ef92fHn/dXt4/3V7
+        eP96gX3/ZGlm/zc6Of8XGBj/BgYH/wAAAP8DAwj/ERE9/yAgdf8uLqj/OTnR/z093/8+PuX/NTW//wgI
+        G/8LCwz/T09P/1JTU/9qb2z/dXx5/3Z8ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXx5/3Z8ef92fHn/dXx5/3Z8ef92fHn/dXx5/3Z8ef92fHn/dXx5/3Z8ef92fHn/dnx5/3Z8
+        ef91fHn/dnx5/3V7eP91e3j/d316/3Z8ef9obmv/SExK/y0vL/8XFxf/BAUG/wAAAP8DAwr/Cwsp/xIS
+        Qf8WFlD/FRVL/wQEDP8GBgf/Tk5O/2RnZv91e3j/dXt47XZ8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        ef92fHn/dnx5/3V7ef92fHn/dXt4/3Z7ef91e3j/dXt4/3Z7ef91e3j/dXt4/3Z7ef91e3j/dXt4/3Z7
+        ef91e3j/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3V7eP92fHn/dnx5/3J4df9obmv/UldV/zo9
+        PP8kJib/Dg8Q/wMEBf8AAAD/AAAA/wAAAP8CAgL/WFpZ/3R6d/91e3jtdXt4h3V7efl1fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef91fHn/dXt4/3R6
+        d/90enf/d316/3uBfv97gX7/dXt3/2txbv9gZWP/U1dV/0xQTv9ESEb/b3Vy/3Z9efl1e3iHdXp4I3V7
+        ebd1fHn9dnx5/3Z8ef92fHn/dnx5/3V7ef92fHn/dnx5/3V7ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXx5/3Z7ef92fHn/dXx5/3Z7ef92fHn/dXx5/3Z7
+        ef92fHn/dXx5/3Z7ef92fHn/dXt4/3V7eP91e3j/dnx5/3d9ev94fnv/eX98/3l/fP94f3v/dnx5/XV7
+        ebd1engjc3t7A3V7eCd1e3d/dXx4z3V7eOd2fHn/dnx5/3Z7ef92fHn/dnx5/3Z7ef92fHn/dnt4/3Z8
+        ef92e3j/dnt4/3Z8ef92e3j/dnt4/3Z8ef92e3j/dnt4/3Z8ef92e3j/dnx5/3V8ef92fHn/dnx5/3V8
+        ef92fHn/dnx5/3V8ef92fHn/dnx5/3V8ef92fHn/dnx5/3V8ef92fHn/dXt4/3V7eP91e3j/dXt4/3V7
+        eOd0e3fPdXt3f3V7eCdze3sDAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+        AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+        //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+        AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+        //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+        AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+        //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA
+        AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8Bd3d3D3Z7eY92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3l/fP9qb2z/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9RUVH/VlZW/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUI9VVVUP////Af///wH///8Bd313L3V7eN92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3d9ev9zeXb/U1RT/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9RUVH/TU1N/zAwMP8/Pz//VVVV/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ31FRUS////8Bd3d3D3V8
+        ee92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef93fnr/W1xb/01N
+        Tf9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9PT0//VVVV/yQkJP8AAAD/AgIC/y8vL/9WVlb/UFBQ/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFDvVVVVD3Z8eH92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP95f3z/ZWhm/01NTf9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1FRUf8PDw//AAAA/wMD
+        A/8AAAD/IyMj/1NTU/9RUVH/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUH91e3jfdnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3V7eP94fnv/bnNx/09PT/9PT0//T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/T09P/1JS
+        Uv9GRkb/AgIC/wAAAP8AAAD/AQEB/wAAAP8XFxf/Tk5O/1NTU/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFDfdnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef93fXr/dHp3/1RVVf9SUVL/VlZW/1NTU/9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/09PT/9VVVX/NDQ0/wAAAP8AAAD/fHx8/yMjI/8AAAD/AAAA/w0NDf9GRkb/VVVV/05O
+        Tv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/d356/2BiYf9SUVL/Q0ND/zIy
+        Mv9DQ0P/VlZW/1FRUf9PT0//UFBQ/1BQUP9PT0//VVVV/yAgIP8AAAD/DQ0N/+vr6//j4+P/LCws/wAA
+        AP8CAgL/BgYG/zs7O/9WVlb/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/d356/2xw
+        bv9JSEj/HR0d/wEBAf8AAAD/AwMD/yMjI/9MTEz/VlZW/09PT/9PT0//T09P/09PT/8QEBD/AAAA/zk5
+        Of///////////+/v7/9KSkr/AAAA/wMDA/8BAQH/MDAw/1RUVP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z7ef9BQUH/CQkI/wAAAP8AAAD/AAAA/wAAAP8AAAD/CAgI/zMzM/9SUlL/VVVV/1hY
+        WP9FRUX/BQUF/wAAAP9wcHD///////n5+f/+/v7//////2tra/8AAAD/AgIC/wAAAP8vLy//VFRU/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dHp3/3yCf/9CQ0P/AgEB/wICAv8AAAD/Li4u/5mZmf8pKSn/AAAA/wIC
+        Av8AAAD/FRUV/ysrK/81NTX/Ly8v/wAAAP8AAAD/rKys///////8/Pz//f39//z8/P//////jIyM/wAA
+        AP8AAAD/FhYW/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/3+Fgv9HSkj/AAAA/wQEBP8AAAD/YGBg//T0
+        9P//////9PT0/2lpaf8AAAD/AgIC/wAAAP8AAAD/AQEB/wUFBf8AAAD/CAgI/93d3f///////f39////
+        ///9/f3//////+/v7/8RERH/AAAA/xYWFv9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/32DgP9XW1n/AgIC/wID
+        A/8AAAD/goKC///////7+/v/+/v7//////9zc3P/AAAA/wQEBP8AAAD/AAAA/wAAAP8EBAT/AAAA/zQ0
+        NP///////Pz8//7+/v///////v7+///////s7Oz/ERER/wAAAP8WFhb/VFRU/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3qA
+        ff9ma2j/CAkJ/wMDA/8AAAD/h4eH///////4+Pj//////+3t7f9CQkL/AAAA/wMDA/8AAAD/TU1N/7S0
+        tP81NTX/AAAA/wEBAf8RERH/urq6///////7+/v//v7+//7+/v//////7u7u/xEREf8AAAD/FhYW/1RU
+        VP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHr/Ghsa/wAAAP8AAAD/aWlp///////4+Pj//////93d3f8qKir/AAAA/wAA
+        AP8gICD/tra2////////////9PT0/1NTU/8AAAD/AgIC/wICAv+Tk5P///////z8/P/8/Pz//////+7u
+        7v8RERH/AAAA/xYWFv9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3Z8ef92fHn/dnx5/3R6d/9+hIH/RkpI/wAAAP8AAAD/PT4+//v7+//7+/v//////9nZ
+        2f8aGhr/AAAA/wAAAP9TU1P/7+/v///////6+vz/+vr7//39/f//////fHx8/wAAAP8DAwP/AAAA/2pq
+        av/9/f3//f39///////v7+//ERER/wAAAP8WFhb/VFRU/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef91e3j/eX98/x4fH/8AAAD/FRUV/+Dg
+        4P///////////+rq6v8oKCj/AAAA/wAAAP9sbGz///////39/f/7+/v//v7////////+/v7/+/v7////
+        //+mpqb/CAgI/wEBAf8AAAD/Q0ND/+rq6v//////6+vr/xEREf8AAAD/FhYW/1RUVP9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3h+
+        e/8bHRz/AAAA/xMTE//d3d3///////7+/v9MTEz/AAAA/wAAAP9oaGj///////z8/P/7+/3//////+Dg
+        /P/q6v3///////7+/v/7+/v//////8zMzP8eHh7/AAAA/wAAAP8iIiL/1NTU//X19f8QEBD/AAAA/xYW
+        Fv9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/dnx5/3R6d/99g4D/TVFP/wAAAP8AAAD/QkJC//////+AgID/AAAA/wAAAP9fX1////////z8
+        /P/8/P7//////93d/P+rq/n/+Pj////////+/v///v7///v7+///////6enp/z4+Pv8AAAD/AAAA/xER
+        Ef+ampr/FxcX/wAAAP8VFRX/VFRU/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3uBfv8iIyL/AAAA/wICAv9XV1f/ERER/wAA
+        AP87Ozv/+fn5/////v/8/P7//////+Li/f+wsPn/9vb+///////9/f///////////////////Pz8//7+
+        /v/8/Pz/aGho/wAAAP8CAgL/AgIC/wICAv8AAAD/FBQU/1NTU/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP97gX7/YWZj/wIC
+        Av8BAQH/AgIC/wAAAP8VFRX/39/f///////7+/3//////+bm/f+FhfX/2Nj8///////9/f////////Pz
+        /v/s7P3///////7+///9/f3//Pz8//////+QkJD/AQEB/wEBAf8DAwP/AAAA/xYWFv9XV1f/Tk5O/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dHp3/36Egf81ODb/AAAA/wgICP8AAAD/i4yM///////6+vv//////+Dg/f+rq/j/8vL+/6ur
+        +P/b2/z/8fH+/8jI+/+trfj/4OD8///////+/v///v7///7+/v/7+/v//////7m5uf8UFBT/AAAA/wMD
+        A/8EBAT/PT09/1ZWVv9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP94f3v/bXNw/wsLC/8AAAD/Kioq//X19f/+/v///////+fn
+        /f+hofj/+/v////////39/7/lpb2/7Ky+P/X1/z/+fn////////t7f7/4eH9///////+/v////////r6
+        +v//////19fX/ywsLP8AAAD/AwMD/wEBAf8xMTH/VlZW/1BQUP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP90enf/dXt4/3B2c/8PDw//AAAA/zc3
+        N//8/Pz//f3+/////v/39/7/rKz4/97e/P///////////8nJ+//Z2fz////////////x8f7/ra35/6Ki
+        9//c3Pz///////7+////////+/v7///////x8fH/SUlJ/wAAAP8EBAT/AAAA/yYmJv9UVFT/UVFR/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91e3j/dHp3/3V7eP94fnv/fIJ//36E
+        gf99hIH/Jykn/wAAAP8AAAD/ZGRk///////7+/z///////b2/v+oqPj/1dX8//f3/v+urvn/6en+////
+        ///19f7/rKz5/+bm/f/+/v//qKj4/97e/P///////v7////////9/f3//f39//////9xcXH/AAAA/wQE
+        BP8AAAD/Gxsb/1BQUP9SUlL/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/fIJ//36F
+        gf97gn//bnRx/1dcWf87Pj3/ICIh/w0NDf8DAwP/BwcH/wAAAP+Ojo7///////r6+///////+Pj+/8LC
+        +v+2tvn/3Nz8///////29v7/jo72/8jI+////////f3///X1/v+wsPn//Pz///////////////////39
+        /f/8/Pz//////5qamv8CAgL/AgIC/wAAAP8SEhL/SkpK/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP93fnv/dXp3/1pfXP8/QkD/IiQj/wsMC/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwP/AQEB/7a2
+        tv//////+/v7//7+/////////v7////////w8P7/qKj4/9/f/f+urvj/4OD9////////////trb5//T0
+        /v///////////////////////v7+//v7+///////uLi4/xISEv8AAAD/AAAA/wkJCf9DQ0P/VVVV/05O
+        Tv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/eX98/ygqKf8AAAD/AQEB/wAAAP8AAAD/AAAA/wAAAP8KCwv/MjIy/3Jz
+        cv+QkJH/Dw8P/wAAAP8UFBT/19fX///////8/Pz//f3////////29v7/pKT4/+vr/f//////8vL+/52d
+        9//Ozvv/vb36/8fH+////////f3+//v7+//8/Pz//Pz8//z8/P/7+/v/+vr6///////W1tb/Ly8v/wAA
+        AP8BAQL/BAQE/zs7O/9WVlb/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3R6d/8UFRT/AAAA/wEBAf8MDAz/Pz8//3Fx
+        cf+xsbH/4+Tk//7+/v/8/Pz//////52dnf8AAAD/AAAA/y8vL//x8fH///////39/v//////+/v//6qq
+        +P/f3/z///////////+7u/n/x8f7/+bm/f///////Pz8//7+/v////////////////////////////7+
+        /v/29vb//////62trf8AAAD/AgIC/wEBAv8BAQH/MzMz/1ZWVv9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP98g3//UVVT/wAA
+        AP8AAAD/Dw8P/9TU1P///////f39///////+/v7/+/v7//n5+f//////c3Nz/wAAAP8AAAD/UlJS////
+        ///8/Pz//v7+///////4+P7/q6v4/9DQ+//T0/v/s7P5////////////+/v8///////y8vL/o6Oj/2Zm
+        Zv9hYWH/Y2Nj/6Ojo//z8/P//////8DAwP8NDQ7/AAAA/w8PKf8CAgP/AAAB/wAAAP8rKyv/VVVV/1BQ
+        UP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dHp3/3+Fgv89QT//AAAA/wAAAP8nJyf/6enp///////7+/v////////////+/v7//f39////
+        //9LS0v/AAAA/wAAAP93d3f///////v7+//+/v////////j4/v/MzPv/zMz7//b2/v//////+/v8////
+        //+xsbH/Ghoa/wAAAP8BAQH/AAAA/wEBAf8AAAD/MDAw/5mZmf8WFhf/AAAA/x8fa/9GRvr/JSWE/wAA
+        AP8BAQL/AAAA/yQkJP9VVVX/UFBQ/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef91e3j/fYOA/ywuLf8AAAD/AAAA/0VFRf/7+/v//v7+//7+
+        /v////////////39/f//////7Ozs/ygoKP8AAAD/AAAA/5+fn///////+/v7///////+/v//////////
+        ///+/v///Pz8//////+oqKj/AQEB/wAAAP8AAAD/BAQE/xEREf8EBAT/AAAA/wAAAf8AAAD/AQEA/yUl
+        gf9FRf3/QEDv/0ZG//8qKpn/AQEB/wEBAv8AAAD/IiIi/1NTU/9RUVH/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dXt4/3Z9ev93fXn/HB0d/wAA
+        AP8AAAD/ZWVl///////6+vr/+/v7//v7+//7+/v/+Pj4///////Nzc3/DAwM/wAAAP8JCQn/xcXF////
+        ///8/Pz///////39///9/f///f39///////h4eH/EBAQ/wAAAP8AAAD/WFhY/9ra2v/+/v7/19fX/2Ji
+        Yv8AAAD/BAQD/wMDB/86OtL/Q0P2/0BA7P9AQOv/Rkb//y4uov8BAQP/AQEC/wAAAP8cHBz/UlJS/1BQ
+        UP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef91e3j/eoB9/21zcP8ODw//AgIC/wAAAP+Hh4f///////39/f/////////////////8/Pz//////7m5
+        uf8HBwf/AAAA/x4eHv/j4+P///////39/f////////////v7+///////fHx8/wAAAP8AAAD/bW1t////
+        ///k5OT/wcHB//Dw8P//////enp6/wAAAP8AAAD/HBxo/0VF/v9AQOz/QUHv/0BA6v9FRf//MzOt/wQE
+        Cf8BAQH/AAAA/xwcHP9TU1P/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3R6d/98g3//YGRi/wUFBf8BAQH/BgYG/3R0dP+MjIz/g4OD/4SE
+        hP+EhIT/hISE/35+fv+Li4v/Jycn/wAAAP8AAAD/Ojo6//j4+P///////v7+///////+/v7//////zg4
+        OP8AAAD/FBQU//Hx8f/Z2tr/FhYW/wAAAP87Ozv/+Pj4//Dw8f8ZGRv/AAAA/w4OL/9BQfH/QUHv/0FB
+        7/9BQe//QEDq/0ZG//80NLD/BAQG/wEBAf8AAAD/IyMj/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/c3l2/36Egf9PVFL/AAAA/wIC
+        Av8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/BQUF/wAAAP9fX1////////z8
+        /P/+/v7///////v7+/8rKyv/AAAA/z8/P///////gYKB/wAAAP8NDQ3/AAAA/7u7u///////Pz9A/wAA
+        AP8ICBj/PT3i/0JC8/9BQe7/QUHv/0FB7/9AQOr/RUX//zQ0qv8EBAT/AQEC/wAAAP8tLS3/VlZW/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef90enf/foWB/z9DQf8AAAD/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+        AP8EBQT/AAAA/4iIiP//////+vr6///////9/f3/LS0t/wAAAP8uLi7//////7i4uP8BAQH/AAAA/xoa
+        Gv/h4eH//////zY2N/8AAAD/Cwsi/z8/6P9CQvH/QUHu/0FB7/9BQe//QUHv/z8/6v9GRv//MjKi/wEB
+        Af8BAQL/AQEB/z09Pf9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef96gH3/YWZj/1dbWf9YXFr/WFxa/1hcWv9YXFr/WFxa/1hc
+        Wv9YXFr/V1tZ/1peXP9QU1L/CQkJ/wEBAf8AAAD/ra2t///////5+fn//////1JSUv8AAAD/AQEB/8LC
+        wv//////s7Sz/3h5eP/Ozs7//////8XFxf8AAAH/AAAA/xQUR/9ERPn/QEDt/0FB7/9BQe//QUHv/0FB
+        7/9BQe//Pz/q/0dH//8oKIj/AAAA/wAAAf8LCwv/TU1N/1FRUf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3qBfv98g4D/fIOA/3yD
+        gP98g4D/fIOA/3yDgP98g4D/fIOA/3yDgP97gn//gomG/1BVUv8AAAD/AAAA/w4ODv/Q0ND/////////
+        //+ysrL/AAAA/wAAAP8nJyf/2tra///////9/f3//////97e3v8qKir/AAAA/wAAAP8pKZn/RUX+/0BA
+        7P9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOz/RUX8/xkZVP8AAAD/AAAA/yMjIv9VVVX/T09P/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP91e3j/dXt4/3R5d/9+hYH/P0NB/wAA
+        AP8AAAD/Jycn/+np6f//////3Nzc/woKC/8AAAD/AAAB/w0NDf9eXl7/gYGB/2NjY/8ODg7/AAAC/wAA
+        AP8QEDz/QUHw/0FB7/9BQe7/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHt/0JC9P8/P+L/CQkb/wAA
+        AP8AAAH/PT09/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/32DgP8wMjH/AAAA/wAAAP9LS0v/4uLi/yoqKv8AAAD/BgYQ/wAAAP8AAAD/AAAA/wAA
+        AP8AAAD/AAAC/wAAAP8NDS//PDze/0ND9f9AQO3/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9AQOv/RUX+/y0tnP8AAAD/AAAA/xYWFv9TU1P/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP92fHn/eH97/yAhIf8AAAD/BQUF/w0ND/8AAAD/FRZG/z09
+        3/8iIn7/CQke/wQEBf8CAgL/BAQF/wkJIP8gIHf/QEDr/0ND9v9AQOz/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA7f9ERPj/FBRB/wAAAP8AAAD/Nzc3/1VVVf9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3l/fP9xd3T/FBQU/wAA
+        AP8AAAD/DQ0m/0RE8f9DQ/b/RUX+/0BA6/82Nsf/MTG1/zY2x/9AQOr/Rkb//0JC8f9AQO3/QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOz/RET7/zMztP8AAAD/AAAA/xQU
+        FP9SUlL/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef90enf/e4F+/2dsaf8KCwv/AAAA/wAAAP8nJ4z/RUX//z8/5/9BQfH/Q0P3/0VF+/9DQ/j/QUHx/0BA
+        6/9BQe7/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA
+        7f9ERPf/FRVC/wAAAP8AAAH/Pj4+/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6d/99g4D/W2Bd/wQEBf8AAAD/AAAA/ywsof9GRv//Pz/p/0BA
+        7f9AQOz/QEDt/0FB7v9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9AQOz/RET8/zIyr/8AAAD/AAAA/x0dHf9VVVX/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/3+Fgv9QVVL/AAAB/wEB
+        Af8CAgb/MjKy/0ZG//9AQOr/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9CQvH/Dg4u/wAAAP8GBgf/SUlJ/1JS
+        Uv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef9zeXb/f4aC/0VJRv8AAAD/AQEB/wMDCf8zM7X/RUX//0BA6v9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOv/RUX//ycn
+        hf8AAAD/AAAA/zExMf9VVVX/T09P/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6d/9/hYL/OTw7/wAAAP8BAQH/BAQL/zY2uv9FRf//QEDq/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHt/0ND9v86OtT/BQUL/wAAAP8XFxj/U1NT/09PT/9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3yDf/80Nzb/AAAA/wEB
+        Af8FBQz/Nja6/0VF//9AQOr/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOz/RET6/xQUR/8AAAD/BgYI/0lJSf9SUlL/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP91fHj/fYSA/ywuLf8AAAD/AQEB/wUFC/82NrX/RUX//0BA6v9BQe7/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QEDr/0VF//8mJof/AAAA/wAA
+        AP83Nzj/VVVV/09PT/9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ef95f3z/KSsq/wAAAP8BAQH/AwQI/y8wpP9GRv//QEDu/0BA
+        7P9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA
+        7f9DQ/n/NjbC/wICAP8AAAD/IyMj/1ZWVv9PT0//UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/d316/3l/fP8tMC7/AAAA/wEB
+        Av8AAAD/IiJw/0RE9f9DQ/j/QEDq/0FB7v9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe7/QUHw/0FB6/8LCyT/AAAA/xERE/9SUlL/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP92fHn/fYOA/zc6OP8AAAD/AQEC/wAAAP8RETn/OTnQ/0ZG//9BQfD/QEDr/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA7P9FRf3/GRla/wAAAP8GBgj/SkpK/1JS
+        Uv9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3V7eP9+hYH/TlJQ/wYGBv8AAAD/AAAA/wMDC/8iInr/QUHr/0VF
+        /v9BQe//QEDr/0FB7v9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOv/RUX//ygo
+        lP8AAAD/AAAA/zw8PP9UVFT/T09P/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/36Egf9lamj/HB4d/wAA
+        AP8BAQL/AAAA/woKI/8rK5//QUHv/0VF//9CQvP/QEDr/0BA7P9BQe7/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QEDt/0RE+v8zM73/AAAA/wAAAP8vLy//VlZW/09PT/9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef90enf/eoB9/3uBfv9ESEb/CAkJ/wAAAP8BAAH/AAAA/wsLJv8lJYj/PT3f/0VF//9FRf3/QkL0/0BA
+        7f9AQOv/QEDt/0FB7v9BQe//QUHv/0FB7v9CQvT/PDzc/wUFEP8AAAD/JCQk/1VVVf9PT0//UFBQ/09P
+        T/92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP91e3j/foSB/250cf81ODf/BQUG/wAAAP8AAAH/AAAA/wYH
+        Ff8aGl3/LS2i/zw82/9ERPr/Rkb//0RE+/9CQvL/QEDt/0BA6/9AQOv/QEDt/0BA6v8LCyf/AAAA/xkZ
+        Gv9UVFT/T09P/09PT/9UVVT/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6d/94fnv/foWB/2lu
+        a/85PDr/DA0O/wAAAP8AAAD/AAAA/wAAAP8GBhD/ExND/yMjf/8zM7n/Pj7l/0RE+/9GRv//RUX+/0VF
+        +/9HR///ERE5/wAAAP8RERP/UVFR/09PT/9RUVH/b3Rx/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3R6d/95f3z/foWB/3F3dP9MUE7/ISMj/wUGCP8AAAD/AAAA/wAAAP8AAAD/AQEA/wkJ
+        G/8UFEf/ICB0/ygok/8uLqf/NDS5/w8PLv8AAAD/CgoM/01OTf9PTk7/aW1r/3l/fP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3R6d/93fXr/fYSA/3uCfv9pbmv/R0pJ/yYn
+        J/8NDhD/AAAB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/AQEB/wgICP9JSEj/Y2Vk/3h/
+        fP91e3j/dXt433Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6
+        d/91e3j/eX98/36Egf98g3//cXd0/1pfXP9CRkT/Ky0t/xcYGv8JCgz/AQED/wAAAP8AAAD/AAAA/wAA
+        AP8BAQH/UlRT/3l/fP91e3j/dXt433Z8eH92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP90enf/dHp3/3d9ev98gn//f4WC/32DgP93fnr/bnNw/2Fm
+        ZP9UWFb/SEtK/zw/Pv87Pj3/LzEw/2lubP95gHz/dXt4/3Z8eH93d3cPdXt5z3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3R6
+        d/90enf/dnx5/3h+e/96gX7/fYOA/36Egf9/hYL/f4WC/32EgP93fXr/dnx5/3V7ec93d3cP////AXN7
+        ex91fHnvdnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/dXt4/3V7eP90enf/dHp3/3R6d/90enf/dnx5/3V8
+        ee9ze3sf////Af///wH///8Bd3d3D3V8d291fHi/dXx4v3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef91fHi/dXx4v3V8d293d3cP////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.cs b/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.cs
new file mode 100644
index 0000000..35f6cfc
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Windows.Forms;
+
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    public partial class NicknamePokemonForm : Form
+    {
+        public NicknamePokemonForm()
+        {
+            InitializeComponent();
+            txtNickname.Text = @"{IV}_{Name}";
+            txtNickname.KeyDown += TxtNickname_KeyDown;
+        }
+
+        public NicknamePokemonForm(PokemonObject pokemon)
+        {
+            InitializeComponent();
+            txtNickname.Text = pokemon.Nickname;
+            txtNickname.KeyDown += TxtNickname_KeyDown;
+        }
+
+        private void TxtNickname_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.KeyCode == Keys.Enter)
+            {
+                DialogResult = DialogResult.OK;
+                Close();
+            }
+            if (e.KeyCode == Keys.Escape)
+            {
+                DialogResult = DialogResult.Cancel;
+                Close();
+            }
+        }
+
+        private void closeRenameBtn_Click(object sender, EventArgs e)
+        {
+            DialogResult = DialogResult.Cancel;
+            Close();
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.designer.cs b/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.designer.cs
new file mode 100644
index 0000000..256b1a2
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.designer.cs
@@ -0,0 +1,164 @@
+namespace PokemonGo.RocketBot.Window.Forms {
+    partial class NicknamePokemonForm {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing) {
+            if (disposing && (components != null)) {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent() {
+            this.pnl = new System.Windows.Forms.Panel();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtNickname = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.btnNickname = new System.Windows.Forms.Button();
+            this.closeRenameBtn = new System.Windows.Forms.Label();
+            this.pnl.SuspendLayout();
+            this.SuspendLayout();
+            //
+            // pnl
+            //
+            this.pnl.BackColor = System.Drawing.SystemColors.Window;
+            this.pnl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.pnl.Controls.Add(this.closeRenameBtn);
+            this.pnl.Controls.Add(this.label4);
+            this.pnl.Controls.Add(this.label3);
+            this.pnl.Controls.Add(this.label2);
+            this.pnl.Controls.Add(this.txtNickname);
+            this.pnl.Controls.Add(this.label1);
+            this.pnl.Controls.Add(this.btnNickname);
+            this.pnl.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.pnl.Location = new System.Drawing.Point(0, 0);
+            this.pnl.Name = "pnl";
+            this.pnl.Size = new System.Drawing.Size(401, 205);
+            this.pnl.TabIndex = 0;
+            //
+            // label4
+            //
+            this.label4.AutoSize = true;
+            this.label4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+            this.label4.Location = new System.Drawing.Point(191, 98);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(186, 45);
+            this.label4.TabIndex = 9;
+            this.label4.Text = "{IA} : Pokemon Individual Attack\r\n{ID} : Pokemon Individual Defense\r\n{IS} : Pokem" +
+    "on Individual Stamina";
+            //
+            // label3
+            //
+            this.label3.AutoSize = true;
+            this.label3.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+            this.label3.Location = new System.Drawing.Point(13, 98);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(142, 45);
+            this.label3.TabIndex = 8;
+            this.label3.Text = "{Name} : Pokemon Name\r\n{CP} : Pokemon CP\r\n{IV} : Pokemon IV %";
+            //
+            // label2
+            //
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
+            this.label2.Location = new System.Drawing.Point(11, 79);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(105, 15);
+            this.label2.TabIndex = 7;
+            this.label2.Text = "Rename Template:";
+            //
+            // txtNickname
+            //
+            this.txtNickname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.txtNickname.Font = new System.Drawing.Font("Segoe UI", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.txtNickname.Location = new System.Drawing.Point(16, 41);
+            this.txtNickname.Name = "txtNickname";
+            this.txtNickname.Size = new System.Drawing.Size(372, 35);
+            this.txtNickname.TabIndex = 0;
+            this.txtNickname.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            //
+            // label1
+            //
+            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.label1.Font = new System.Drawing.Font("Segoe UI", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label1.ForeColor = System.Drawing.SystemColors.ControlDark;
+            this.label1.Location = new System.Drawing.Point(11, 7);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(377, 30);
+            this.label1.TabIndex = 6;
+            this.label1.Text = "Nickname Pokemon";
+            this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+            //
+            // btnNickname
+            //
+            this.btnNickname.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnNickname.DialogResult = System.Windows.Forms.DialogResult.OK;
+            this.btnNickname.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+            this.btnNickname.Font = new System.Drawing.Font("Segoe UI", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.btnNickname.ForeColor = System.Drawing.SystemColors.ControlDark;
+            this.btnNickname.Location = new System.Drawing.Point(133, 160);
+            this.btnNickname.Name = "btnNickname";
+            this.btnNickname.Size = new System.Drawing.Size(140, 32);
+            this.btnNickname.TabIndex = 1;
+            this.btnNickname.Text = "Rename";
+            this.btnNickname.UseVisualStyleBackColor = true;
+            //
+            // closeRenameBtn
+            //
+            this.closeRenameBtn.AutoSize = true;
+            this.closeRenameBtn.Font = new System.Drawing.Font("Segoe UI Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.closeRenameBtn.ForeColor = System.Drawing.Color.Gray;
+            this.closeRenameBtn.Location = new System.Drawing.Point(382, 0);
+            this.closeRenameBtn.Name = "closeRenameBtn";
+            this.closeRenameBtn.Size = new System.Drawing.Size(16, 17);
+            this.closeRenameBtn.TabIndex = 10;
+            this.closeRenameBtn.Text = "X";
+            this.closeRenameBtn.Click += new System.EventHandler(this.closeRenameBtn_Click);
+            //
+            // NicknamePokemonForm
+            //
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(401, 205);
+            this.Controls.Add(this.pnl);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Name = "NicknamePokemonForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "NicknamePokemonForm";
+            this.pnl.ResumeLayout(false);
+            this.pnl.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Panel pnl;
+        private System.Windows.Forms.Button btnNickname;
+        public System.Windows.Forms.TextBox txtNickname;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label closeRenameBtn;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.resx b/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/NicknamePokemonForm.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/SettingForm.Designer.cs b/PokemonGo.RocketBot.Window/Forms/SettingForm.Designer.cs
new file mode 100644
index 0000000..343921c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/SettingForm.Designer.cs
@@ -0,0 +1,2929 @@
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    partial class SettingsForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
+            this.enableAdvSettingCb = new System.Windows.Forms.CheckBox();
+            this.cancelBtn = new System.Windows.Forms.Button();
+            this.tabControl = new System.Windows.Forms.TabControl();
+            this.tabAuth = new System.Windows.Forms.TabPage();
+            this.GoogleApiBox = new System.Windows.Forms.TextBox();
+            this.GoogleApiLabel = new System.Windows.Forms.Label();
+            this.tbWalkingSpeed = new System.Windows.Forms.TextBox();
+            this.TravelSpeedText = new System.Windows.Forms.Label();
+            this.cbLanguage = new System.Windows.Forms.ComboBox();
+            this.label26 = new System.Windows.Forms.Label();
+            this.proxyGb = new System.Windows.Forms.GroupBox();
+            this.proxyPortTb = new System.Windows.Forms.TextBox();
+            this.proxyUserTb = new System.Windows.Forms.TextBox();
+            this.proxyPwTb = new System.Windows.Forms.TextBox();
+            this.label24 = new System.Windows.Forms.Label();
+            this.label25 = new System.Windows.Forms.Label();
+            this.proxyHostTb = new System.Windows.Forms.TextBox();
+            this.useProxyAuthCb = new System.Windows.Forms.CheckBox();
+            this.label19 = new System.Windows.Forms.Label();
+            this.useProxyCb = new System.Windows.Forms.CheckBox();
+            this.label23 = new System.Windows.Forms.Label();
+            this.ResetLocationBtn = new System.Windows.Forms.Button();
+            this.trackBar = new System.Windows.Forms.TrackBar();
+            this.AdressBox = new System.Windows.Forms.TextBox();
+            this.FindAdressBtn = new System.Windows.Forms.Button();
+            this.gMapCtrl = new GMap.NET.WindowsForms.GMapControl();
+            this.UserLoginBox = new System.Windows.Forms.TextBox();
+            this.UserPasswordBox = new System.Windows.Forms.TextBox();
+            this.tbLatitude = new System.Windows.Forms.TextBox();
+            this.tbLongitude = new System.Windows.Forms.TextBox();
+            this.authTypeLabel = new System.Windows.Forms.Label();
+            this.longiLabel = new System.Windows.Forms.Label();
+            this.authTypeCb = new System.Windows.Forms.ComboBox();
+            this.latLabel = new System.Windows.Forms.Label();
+            this.UserLabel = new System.Windows.Forms.Label();
+            this.PasswordLabel = new System.Windows.Forms.Label();
+            this.tabDevice = new System.Windows.Forms.TabPage();
+            this.label22 = new System.Windows.Forms.Label();
+            this.label20 = new System.Windows.Forms.Label();
+            this.label21 = new System.Windows.Forms.Label();
+            this.RandomIDBtn = new System.Windows.Forms.Button();
+            this.deviceTypeCb = new System.Windows.Forms.ComboBox();
+            this.RandomDeviceBtn = new System.Windows.Forms.Button();
+            this.FirmwareFingerprintTb = new System.Windows.Forms.TextBox();
+            this.label14 = new System.Windows.Forms.Label();
+            this.FirmwareTypeTb = new System.Windows.Forms.TextBox();
+            this.label13 = new System.Windows.Forms.Label();
+            this.FirmwareTagsTb = new System.Windows.Forms.TextBox();
+            this.label12 = new System.Windows.Forms.Label();
+            this.FirmwareBrandTb = new System.Windows.Forms.TextBox();
+            this.label11 = new System.Windows.Forms.Label();
+            this.HardwareModelTb = new System.Windows.Forms.TextBox();
+            this.label10 = new System.Windows.Forms.Label();
+            this.HardwareManufacturerTb = new System.Windows.Forms.TextBox();
+            this.label9 = new System.Windows.Forms.Label();
+            this.DeviceModelBootTb = new System.Windows.Forms.TextBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.DeviceModelIdentifierTb = new System.Windows.Forms.TextBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.DeviceModelTb = new System.Windows.Forms.TextBox();
+            this.label15 = new System.Windows.Forms.Label();
+            this.DeviceBrandTb = new System.Windows.Forms.TextBox();
+            this.label16 = new System.Windows.Forms.Label();
+            this.AndroidBootloaderTb = new System.Windows.Forms.TextBox();
+            this.label17 = new System.Windows.Forms.Label();
+            this.AndroidBoardNameTb = new System.Windows.Forms.TextBox();
+            this.BoardName = new System.Windows.Forms.Label();
+            this.DeviceIdTb = new System.Windows.Forms.TextBox();
+            this.deviceIdlb = new System.Windows.Forms.Label();
+            this.label18 = new System.Windows.Forms.Label();
+            this.tabPokemon = new System.Windows.Forms.TabPage();
+            this.tcPokemonDetail = new System.Windows.Forms.TabControl();
+            this.tabCatch = new System.Windows.Forms.TabPage();
+            this.label47 = new System.Windows.Forms.Label();
+            this.cbAutoFavoritePokemon = new System.Windows.Forms.CheckBox();
+            this.tbFavoriteMinIvPercentage = new System.Windows.Forms.TextBox();
+            this.groupBox10 = new System.Windows.Forms.GroupBox();
+            this.cbUseBerriesOperator = new System.Windows.Forms.ComboBox();
+            this.label52 = new System.Windows.Forms.Label();
+            this.tbUseBerriesMinCp = new System.Windows.Forms.TextBox();
+            this.label54 = new System.Windows.Forms.Label();
+            this.tbUseBerriesMinIv = new System.Windows.Forms.TextBox();
+            this.label56 = new System.Windows.Forms.Label();
+            this.tbUseBerriesBelowCatchProbability = new System.Windows.Forms.TextBox();
+            this.tbMaxPokeballsPerPokemon = new System.Windows.Forms.TextBox();
+            this.label43 = new System.Windows.Forms.Label();
+            this.groupBox9 = new System.Windows.Forms.GroupBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.tbUseMasterBallBelowCatchProbability = new System.Windows.Forms.TextBox();
+            this.tbUseGreatBallAboveCp = new System.Windows.Forms.TextBox();
+            this.label42 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.tbUseUltraBallBelowCatchProbability = new System.Windows.Forms.TextBox();
+            this.tbUseUltraBallAboveCp = new System.Windows.Forms.TextBox();
+            this.label41 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.tbUseGreatBallBelowCatchProbability = new System.Windows.Forms.TextBox();
+            this.tbUseMasterBallAboveCp = new System.Windows.Forms.TextBox();
+            this.label40 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.tbUseUltraBallAboveIv = new System.Windows.Forms.TextBox();
+            this.tbUseGreatBallAboveIv = new System.Windows.Forms.TextBox();
+            this.label36 = new System.Windows.Forms.Label();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.cbIgnoreAll = new System.Windows.Forms.CheckBox();
+            this.clbIgnore = new System.Windows.Forms.CheckedListBox();
+            this.tBMaxBerriesToUsePerPokemon = new System.Windows.Forms.TextBox();
+            this.label27 = new System.Windows.Forms.Label();
+            this.cbUseEggIncubators = new System.Windows.Forms.CheckBox();
+            this.cbCatchPoke = new System.Windows.Forms.CheckBox();
+            this.tabTransfer = new System.Windows.Forms.TabPage();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.cbNotTransferAll = new System.Windows.Forms.CheckBox();
+            this.clbTransfer = new System.Windows.Forms.CheckedListBox();
+            this.groupBox8 = new System.Windows.Forms.GroupBox();
+            this.cbUseKeepMinLvl = new System.Windows.Forms.CheckBox();
+            this.label37 = new System.Windows.Forms.Label();
+            this.tbKeepMinLvl = new System.Windows.Forms.TextBox();
+            this.groupBox7 = new System.Windows.Forms.GroupBox();
+            this.cbTransferDuplicatePokemonOnCapture = new System.Windows.Forms.CheckBox();
+            this.cbTransferDuplicatePokemon = new System.Windows.Forms.CheckBox();
+            this.cbTransferWeakPokemon = new System.Windows.Forms.CheckBox();
+            this.tbKeepMinDuplicatePokemon = new System.Windows.Forms.TextBox();
+            this.label35 = new System.Windows.Forms.Label();
+            this.cbPrioritizeIvOverCp = new System.Windows.Forms.CheckBox();
+            this.tbKeepMinIV = new System.Windows.Forms.TextBox();
+            this.cbKeepMinOperator = new System.Windows.Forms.ComboBox();
+            this.tbKeepMinCp = new System.Windows.Forms.TextBox();
+            this.label38 = new System.Windows.Forms.Label();
+            this.label39 = new System.Windows.Forms.Label();
+            this.tabPowerUp = new System.Windows.Forms.TabPage();
+            this.cbPowerUpFav = new System.Windows.Forms.CheckBox();
+            this.groupBox6 = new System.Windows.Forms.GroupBox();
+            this.tbPowerUpMinIV = new System.Windows.Forms.TextBox();
+            this.cbPowerUpCondiction = new System.Windows.Forms.ComboBox();
+            this.tbPowerUpMinCP = new System.Windows.Forms.TextBox();
+            this.label31 = new System.Windows.Forms.Label();
+            this.label30 = new System.Windows.Forms.Label();
+            this.cbPowerUpMinStarDust = new System.Windows.Forms.ComboBox();
+            this.label28 = new System.Windows.Forms.Label();
+            this.cbPowerUpType = new System.Windows.Forms.ComboBox();
+            this.label29 = new System.Windows.Forms.Label();
+            this.groupBox4 = new System.Windows.Forms.GroupBox();
+            this.cbPowerUpAll = new System.Windows.Forms.CheckBox();
+            this.clbPowerUp = new System.Windows.Forms.CheckedListBox();
+            this.cbAutoPowerUp = new System.Windows.Forms.CheckBox();
+            this.tabEvo = new System.Windows.Forms.TabPage();
+            this.label53 = new System.Windows.Forms.Label();
+            this.tbUseLuckyEggsMinPokemonAmount = new System.Windows.Forms.TextBox();
+            this.cbUseLuckyEggsWhileEvolving = new System.Windows.Forms.CheckBox();
+            this.groupBox5 = new System.Windows.Forms.GroupBox();
+            this.label34 = new System.Windows.Forms.Label();
+            this.tbEvoAboveIV = new System.Windows.Forms.TextBox();
+            this.cbEvoAllAboveIV = new System.Windows.Forms.CheckBox();
+            this.label32 = new System.Windows.Forms.Label();
+            this.cbEvolveAllPokemonWithEnoughCandy = new System.Windows.Forms.CheckBox();
+            this.label33 = new System.Windows.Forms.Label();
+            this.tbEvolveKeptPokemonsAtStorageUsagePercentage = new System.Windows.Forms.TextBox();
+            this.cbKeepPokemonsThatCanEvolve = new System.Windows.Forms.CheckBox();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.cbEvolveAll = new System.Windows.Forms.CheckBox();
+            this.clbEvolve = new System.Windows.Forms.CheckedListBox();
+            this.tabItems = new System.Windows.Forms.TabPage();
+            this.groupBox14 = new System.Windows.Forms.GroupBox();
+            this.cbVerboseRecycling = new System.Windows.Forms.CheckBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.tbRecycleInventoryAtUsagePercentage = new System.Windows.Forms.TextBox();
+            this.groupBox13 = new System.Windows.Forms.GroupBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.tbTotalAmountOfPokeballsToKeep = new System.Windows.Forms.TextBox();
+            this.label44 = new System.Windows.Forms.Label();
+            this.tbTotalAmountOfPotionsToKeep = new System.Windows.Forms.TextBox();
+            this.label45 = new System.Windows.Forms.Label();
+            this.tbTotalAmountOfRevivesToKeep = new System.Windows.Forms.TextBox();
+            this.label46 = new System.Windows.Forms.Label();
+            this.tbTotalAmountOfBerriesToKeep = new System.Windows.Forms.TextBox();
+            this.groupBox12 = new System.Windows.Forms.GroupBox();
+            this.cbUseIncenseConstantly = new System.Windows.Forms.CheckBox();
+            this.groupBox11 = new System.Windows.Forms.GroupBox();
+            this.cbUseLuckyEggConstantly = new System.Windows.Forms.CheckBox();
+            this.tabAdvSetting = new System.Windows.Forms.TabPage();
+            this.groupBox18 = new System.Windows.Forms.GroupBox();
+            this.cbEnableHumanizedThrows = new System.Windows.Forms.CheckBox();
+            this.tbForceExcellentThrowOverCp = new System.Windows.Forms.TextBox();
+            this.tbForceGreatThrowOverCp = new System.Windows.Forms.TextBox();
+            this.label66 = new System.Windows.Forms.Label();
+            this.label55 = new System.Windows.Forms.Label();
+            this.label60 = new System.Windows.Forms.Label();
+            this.tbForceExcellentThrowOverIv = new System.Windows.Forms.TextBox();
+            this.tbNiceThrowChance = new System.Windows.Forms.TextBox();
+            this.label61 = new System.Windows.Forms.Label();
+            this.label62 = new System.Windows.Forms.Label();
+            this.tbForceGreatThrowOverIv = new System.Windows.Forms.TextBox();
+            this.tbGreatThrowChance = new System.Windows.Forms.TextBox();
+            this.label63 = new System.Windows.Forms.Label();
+            this.label64 = new System.Windows.Forms.Label();
+            this.tbCurveThrowChance = new System.Windows.Forms.TextBox();
+            this.tbExcellentThrowChance = new System.Windows.Forms.TextBox();
+            this.label65 = new System.Windows.Forms.Label();
+            this.groupBox17 = new System.Windows.Forms.GroupBox();
+            this.cbRandomizeRecycle = new System.Windows.Forms.CheckBox();
+            this.label51 = new System.Windows.Forms.Label();
+            this.tbRandomRecycleValue = new System.Windows.Forms.TextBox();
+            this.groupBox16 = new System.Windows.Forms.GroupBox();
+            this.cbShowWalkingSpeed = new System.Windows.Forms.CheckBox();
+            this.cbUseWalkingSpeedVariant = new System.Windows.Forms.CheckBox();
+            this.cbDisableHumanWalking = new System.Windows.Forms.CheckBox();
+            this.label57 = new System.Windows.Forms.Label();
+            this.tbWalkingSpeedVariantInKilometerPerHour = new System.Windows.Forms.TextBox();
+            this.label58 = new System.Windows.Forms.Label();
+            this.tbMaxSpawnLocationOffset = new System.Windows.Forms.TextBox();
+            this.label59 = new System.Windows.Forms.Label();
+            this.tbMaxTravelDistanceInMeters = new System.Windows.Forms.TextBox();
+            this.groupBox15 = new System.Windows.Forms.GroupBox();
+            this.label48 = new System.Windows.Forms.Label();
+            this.tbDelayBetweenRecycle = new System.Windows.Forms.TextBox();
+            this.label49 = new System.Windows.Forms.Label();
+            this.tbDelayBetweenPlayerActions = new System.Windows.Forms.TextBox();
+            this.label50 = new System.Windows.Forms.Label();
+            this.tbDelayBetweenPokemonCatch = new System.Windows.Forms.TextBox();
+            this.saveBtn = new System.Windows.Forms.Button();
+            this.tabControl.SuspendLayout();
+            this.tabAuth.SuspendLayout();
+            this.proxyGb.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.trackBar)).BeginInit();
+            this.tabDevice.SuspendLayout();
+            this.tabPokemon.SuspendLayout();
+            this.tcPokemonDetail.SuspendLayout();
+            this.tabCatch.SuspendLayout();
+            this.groupBox10.SuspendLayout();
+            this.groupBox9.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.tabTransfer.SuspendLayout();
+            this.groupBox1.SuspendLayout();
+            this.groupBox8.SuspendLayout();
+            this.groupBox7.SuspendLayout();
+            this.tabPowerUp.SuspendLayout();
+            this.groupBox6.SuspendLayout();
+            this.groupBox4.SuspendLayout();
+            this.tabEvo.SuspendLayout();
+            this.groupBox5.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.tabItems.SuspendLayout();
+            this.groupBox14.SuspendLayout();
+            this.groupBox13.SuspendLayout();
+            this.groupBox12.SuspendLayout();
+            this.groupBox11.SuspendLayout();
+            this.tabAdvSetting.SuspendLayout();
+            this.groupBox18.SuspendLayout();
+            this.groupBox17.SuspendLayout();
+            this.groupBox16.SuspendLayout();
+            this.groupBox15.SuspendLayout();
+            this.SuspendLayout();
+            //
+            // enableAdvSettingCb
+            //
+            this.enableAdvSettingCb.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.enableAdvSettingCb.AutoSize = true;
+            this.enableAdvSettingCb.Location = new System.Drawing.Point(752, 513);
+            this.enableAdvSettingCb.Name = "enableAdvSettingCb";
+            this.enableAdvSettingCb.Size = new System.Drawing.Size(162, 19);
+            this.enableAdvSettingCb.TabIndex = 32;
+            this.enableAdvSettingCb.Text = "Enable Advanced Settings";
+            this.enableAdvSettingCb.UseVisualStyleBackColor = true;
+            this.enableAdvSettingCb.Click += new System.EventHandler(this.enableAdvSettingCb_Click);
+            //
+            // cancelBtn
+            //
+            this.cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.cancelBtn.Location = new System.Drawing.Point(810, 540);
+            this.cancelBtn.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.cancelBtn.Name = "cancelBtn";
+            this.cancelBtn.Size = new System.Drawing.Size(104, 32);
+            this.cancelBtn.TabIndex = 31;
+            this.cancelBtn.Text = "Cancel";
+            this.cancelBtn.UseVisualStyleBackColor = true;
+            this.cancelBtn.Click += new System.EventHandler(this.cancelBtn_Click);
+            //
+            // tabControl
+            //
+            this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.tabControl.Controls.Add(this.tabAuth);
+            this.tabControl.Controls.Add(this.tabDevice);
+            this.tabControl.Controls.Add(this.tabPokemon);
+            this.tabControl.Controls.Add(this.tabItems);
+            this.tabControl.Controls.Add(this.tabAdvSetting);
+            this.tabControl.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.tabControl.Location = new System.Drawing.Point(0, 0);
+            this.tabControl.Name = "tabControl";
+            this.tabControl.SelectedIndex = 0;
+            this.tabControl.Size = new System.Drawing.Size(928, 507);
+            this.tabControl.TabIndex = 30;
+            //
+            // tabAuth
+            //
+            this.tabAuth.BackColor = System.Drawing.SystemColors.Control;
+            this.tabAuth.Controls.Add(this.GoogleApiBox);
+            this.tabAuth.Controls.Add(this.GoogleApiLabel);
+            this.tabAuth.Controls.Add(this.tbWalkingSpeed);
+            this.tabAuth.Controls.Add(this.TravelSpeedText);
+            this.tabAuth.Controls.Add(this.cbLanguage);
+            this.tabAuth.Controls.Add(this.label26);
+            this.tabAuth.Controls.Add(this.proxyGb);
+            this.tabAuth.Controls.Add(this.ResetLocationBtn);
+            this.tabAuth.Controls.Add(this.trackBar);
+            this.tabAuth.Controls.Add(this.AdressBox);
+            this.tabAuth.Controls.Add(this.FindAdressBtn);
+            this.tabAuth.Controls.Add(this.gMapCtrl);
+            this.tabAuth.Controls.Add(this.UserLoginBox);
+            this.tabAuth.Controls.Add(this.UserPasswordBox);
+            this.tabAuth.Controls.Add(this.tbLatitude);
+            this.tabAuth.Controls.Add(this.tbLongitude);
+            this.tabAuth.Controls.Add(this.authTypeLabel);
+            this.tabAuth.Controls.Add(this.longiLabel);
+            this.tabAuth.Controls.Add(this.authTypeCb);
+            this.tabAuth.Controls.Add(this.latLabel);
+            this.tabAuth.Controls.Add(this.UserLabel);
+            this.tabAuth.Controls.Add(this.PasswordLabel);
+            this.tabAuth.Location = new System.Drawing.Point(4, 24);
+            this.tabAuth.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.tabAuth.Name = "tabAuth";
+            this.tabAuth.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.tabAuth.Size = new System.Drawing.Size(920, 479);
+            this.tabAuth.TabIndex = 0;
+            this.tabAuth.Text = "Auth";
+            //
+            // GoogleApiBox
+            //
+            this.GoogleApiBox.Location = new System.Drawing.Point(140, 142);
+            this.GoogleApiBox.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.GoogleApiBox.Name = "GoogleApiBox";
+            this.GoogleApiBox.Size = new System.Drawing.Size(184, 23);
+            this.GoogleApiBox.TabIndex = 33;
+            //
+            // GoogleApiLabel
+            //
+            this.GoogleApiLabel.AutoSize = true;
+            this.GoogleApiLabel.Location = new System.Drawing.Point(6, 144);
+            this.GoogleApiLabel.Name = "GoogleApiLabel";
+            this.GoogleApiLabel.Size = new System.Drawing.Size(91, 15);
+            this.GoogleApiLabel.TabIndex = 32;
+            this.GoogleApiLabel.Text = "Google API Key:";
+            //
+            // tbWalkingSpeed
+            //
+            this.tbWalkingSpeed.Location = new System.Drawing.Point(140, 241);
+            this.tbWalkingSpeed.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbWalkingSpeed.Name = "tbWalkingSpeed";
+            this.tbWalkingSpeed.Size = new System.Drawing.Size(184, 23);
+            this.tbWalkingSpeed.TabIndex = 30;
+            //
+            // TravelSpeedText
+            //
+            this.TravelSpeedText.AutoSize = true;
+            this.TravelSpeedText.Location = new System.Drawing.Point(6, 244);
+            this.TravelSpeedText.Name = "TravelSpeedText";
+            this.TravelSpeedText.Size = new System.Drawing.Size(131, 15);
+            this.TravelSpeedText.TabIndex = 31;
+            this.TravelSpeedText.Text = "Walking Speed (KM/H):";
+            //
+            // cbLanguage
+            //
+            this.cbLanguage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbLanguage.FormattingEnabled = true;
+            this.cbLanguage.Items.AddRange(new object[] {
+            "Google",
+            "PTC"});
+            this.cbLanguage.Location = new System.Drawing.Point(140, 10);
+            this.cbLanguage.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.cbLanguage.Name = "cbLanguage";
+            this.cbLanguage.Size = new System.Drawing.Size(184, 23);
+            this.cbLanguage.TabIndex = 29;
+            //
+            // label26
+            //
+            this.label26.AutoSize = true;
+            this.label26.Location = new System.Drawing.Point(6, 12);
+            this.label26.Name = "label26";
+            this.label26.Size = new System.Drawing.Size(62, 15);
+            this.label26.TabIndex = 28;
+            this.label26.Text = "Language:";
+            //
+            // proxyGb
+            //
+            this.proxyGb.Controls.Add(this.proxyPortTb);
+            this.proxyGb.Controls.Add(this.proxyUserTb);
+            this.proxyGb.Controls.Add(this.proxyPwTb);
+            this.proxyGb.Controls.Add(this.label24);
+            this.proxyGb.Controls.Add(this.label25);
+            this.proxyGb.Controls.Add(this.proxyHostTb);
+            this.proxyGb.Controls.Add(this.useProxyAuthCb);
+            this.proxyGb.Controls.Add(this.label19);
+            this.proxyGb.Controls.Add(this.useProxyCb);
+            this.proxyGb.Controls.Add(this.label23);
+            this.proxyGb.Location = new System.Drawing.Point(9, 272);
+            this.proxyGb.Name = "proxyGb";
+            this.proxyGb.Size = new System.Drawing.Size(315, 195);
+            this.proxyGb.TabIndex = 27;
+            this.proxyGb.TabStop = false;
+            this.proxyGb.Text = "Proxy Setting";
+            this.proxyGb.Visible = false;
+            //
+            // proxyPortTb
+            //
+            this.proxyPortTb.Location = new System.Drawing.Point(131, 76);
+            this.proxyPortTb.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.proxyPortTb.Name = "proxyPortTb";
+            this.proxyPortTb.Size = new System.Drawing.Size(172, 23);
+            this.proxyPortTb.TabIndex = 36;
+            //
+            // proxyUserTb
+            //
+            this.proxyUserTb.Location = new System.Drawing.Point(131, 132);
+            this.proxyUserTb.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.proxyUserTb.Name = "proxyUserTb";
+            this.proxyUserTb.Size = new System.Drawing.Size(172, 23);
+            this.proxyUserTb.TabIndex = 34;
+            //
+            // proxyPwTb
+            //
+            this.proxyPwTb.Location = new System.Drawing.Point(131, 163);
+            this.proxyPwTb.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.proxyPwTb.Name = "proxyPwTb";
+            this.proxyPwTb.PasswordChar = '*';
+            this.proxyPwTb.Size = new System.Drawing.Size(172, 23);
+            this.proxyPwTb.TabIndex = 35;
+            //
+            // label24
+            //
+            this.label24.AutoSize = true;
+            this.label24.Location = new System.Drawing.Point(6, 135);
+            this.label24.Name = "label24";
+            this.label24.Size = new System.Drawing.Size(63, 15);
+            this.label24.TabIndex = 32;
+            this.label24.Text = "Username:";
+            //
+            // label25
+            //
+            this.label25.AutoSize = true;
+            this.label25.Location = new System.Drawing.Point(6, 166);
+            this.label25.Name = "label25";
+            this.label25.Size = new System.Drawing.Size(60, 15);
+            this.label25.TabIndex = 33;
+            this.label25.Text = "Password:";
+            //
+            // proxyHostTb
+            //
+            this.proxyHostTb.Location = new System.Drawing.Point(131, 45);
+            this.proxyHostTb.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.proxyHostTb.Name = "proxyHostTb";
+            this.proxyHostTb.Size = new System.Drawing.Size(172, 23);
+            this.proxyHostTb.TabIndex = 30;
+            //
+            // useProxyAuthCb
+            //
+            this.useProxyAuthCb.AutoSize = true;
+            this.useProxyAuthCb.Location = new System.Drawing.Point(6, 105);
+            this.useProxyAuthCb.Name = "useProxyAuthCb";
+            this.useProxyAuthCb.Size = new System.Drawing.Size(159, 19);
+            this.useProxyAuthCb.TabIndex = 29;
+            this.useProxyAuthCb.Text = "Use Proxy Authentication";
+            this.useProxyAuthCb.UseVisualStyleBackColor = true;
+            this.useProxyAuthCb.CheckedChanged += new System.EventHandler(this.useProxyAuthCb_CheckedChanged);
+            //
+            // label19
+            //
+            this.label19.AutoSize = true;
+            this.label19.Location = new System.Drawing.Point(6, 48);
+            this.label19.Name = "label19";
+            this.label19.Size = new System.Drawing.Size(35, 15);
+            this.label19.TabIndex = 28;
+            this.label19.Text = "Host:";
+            //
+            // useProxyCb
+            //
+            this.useProxyCb.AutoSize = true;
+            this.useProxyCb.Location = new System.Drawing.Point(6, 22);
+            this.useProxyCb.Name = "useProxyCb";
+            this.useProxyCb.Size = new System.Drawing.Size(77, 19);
+            this.useProxyCb.TabIndex = 30;
+            this.useProxyCb.Text = "Use Proxy\r\n";
+            this.useProxyCb.UseVisualStyleBackColor = true;
+            this.useProxyCb.CheckedChanged += new System.EventHandler(this.useProxyCb_CheckedChanged);
+            //
+            // label23
+            //
+            this.label23.AutoSize = true;
+            this.label23.Location = new System.Drawing.Point(6, 79);
+            this.label23.Name = "label23";
+            this.label23.Size = new System.Drawing.Size(32, 15);
+            this.label23.TabIndex = 29;
+            this.label23.Text = "Port:";
+            //
+            // ResetLocationBtn
+            //
+            this.ResetLocationBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.ResetLocationBtn.Location = new System.Drawing.Point(802, 445);
+            this.ResetLocationBtn.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.ResetLocationBtn.Name = "ResetLocationBtn";
+            this.ResetLocationBtn.Size = new System.Drawing.Size(110, 25);
+            this.ResetLocationBtn.TabIndex = 26;
+            this.ResetLocationBtn.Text = "Reset Location";
+            this.ResetLocationBtn.UseVisualStyleBackColor = true;
+            this.ResetLocationBtn.Click += new System.EventHandler(this.ResetLocationBtn_Click);
+            //
+            // trackBar
+            //
+            this.trackBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.trackBar.BackColor = System.Drawing.SystemColors.Info;
+            this.trackBar.Location = new System.Drawing.Point(867, 5);
+            this.trackBar.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.trackBar.Maximum = 18;
+            this.trackBar.Minimum = 2;
+            this.trackBar.Name = "trackBar";
+            this.trackBar.Orientation = System.Windows.Forms.Orientation.Vertical;
+            this.trackBar.Size = new System.Drawing.Size(45, 150);
+            this.trackBar.TabIndex = 25;
+            this.trackBar.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
+            this.trackBar.Value = 2;
+            this.trackBar.Scroll += new System.EventHandler(this.trackBar_Scroll);
+            //
+            // AdressBox
+            //
+            this.AdressBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.AdressBox.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.AdressBox.ForeColor = System.Drawing.Color.Gray;
+            this.AdressBox.Location = new System.Drawing.Point(330, 445);
+            this.AdressBox.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.AdressBox.Name = "AdressBox";
+            this.AdressBox.Size = new System.Drawing.Size(350, 25);
+            this.AdressBox.TabIndex = 25;
+            this.AdressBox.Text = "Enter an address or a coordinate";
+            this.AdressBox.Enter += new System.EventHandler(this.AdressBox_Enter);
+            this.AdressBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.AdressBox_KeyPress);
+            this.AdressBox.Leave += new System.EventHandler(this.AdressBox_Leave);
+            //
+            // FindAdressBtn
+            //
+            this.FindAdressBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.FindAdressBtn.Location = new System.Drawing.Point(686, 445);
+            this.FindAdressBtn.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.FindAdressBtn.Name = "FindAdressBtn";
+            this.FindAdressBtn.Size = new System.Drawing.Size(110, 25);
+            this.FindAdressBtn.TabIndex = 25;
+            this.FindAdressBtn.Text = "Find Location";
+            this.FindAdressBtn.UseVisualStyleBackColor = true;
+            this.FindAdressBtn.Click += new System.EventHandler(this.FindAdressBtn_Click);
+            //
+            // gMapCtrl
+            //
+            this.gMapCtrl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.gMapCtrl.BackColor = System.Drawing.SystemColors.Info;
+            this.gMapCtrl.Bearing = 0F;
+            this.gMapCtrl.CanDragMap = true;
+            this.gMapCtrl.EmptyTileColor = System.Drawing.Color.Navy;
+            this.gMapCtrl.GrayScaleMode = false;
+            this.gMapCtrl.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
+            this.gMapCtrl.LevelsKeepInMemmory = 5;
+            this.gMapCtrl.Location = new System.Drawing.Point(330, 5);
+            this.gMapCtrl.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.gMapCtrl.MarkersEnabled = true;
+            this.gMapCtrl.MaxZoom = 18;
+            this.gMapCtrl.MinZoom = 0;
+            this.gMapCtrl.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionWithoutCenter;
+            this.gMapCtrl.Name = "gMapCtrl";
+            this.gMapCtrl.NegativeMode = false;
+            this.gMapCtrl.PolygonsEnabled = true;
+            this.gMapCtrl.RetryLoadTile = 0;
+            this.gMapCtrl.RoutesEnabled = true;
+            this.gMapCtrl.ScaleMode = GMap.NET.WindowsForms.ScaleModes.Integer;
+            this.gMapCtrl.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
+            this.gMapCtrl.ShowTileGridLines = false;
+            this.gMapCtrl.Size = new System.Drawing.Size(582, 430);
+            this.gMapCtrl.TabIndex = 22;
+            this.gMapCtrl.Zoom = 0D;
+            this.gMapCtrl.OnMapZoomChanged += new GMap.NET.MapZoomChanged(this.gMapCtrl_OnMapZoomChanged);
+            this.gMapCtrl.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gMapCtrl_MouseClick);
+            this.gMapCtrl.MouseUp += new System.Windows.Forms.MouseEventHandler(this.gMapCtrl_MouseUp);
+            //
+            // UserLoginBox
+            //
+            this.UserLoginBox.Location = new System.Drawing.Point(140, 76);
+            this.UserLoginBox.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.UserLoginBox.Name = "UserLoginBox";
+            this.UserLoginBox.Size = new System.Drawing.Size(184, 23);
+            this.UserLoginBox.TabIndex = 11;
+            //
+            // UserPasswordBox
+            //
+            this.UserPasswordBox.Location = new System.Drawing.Point(140, 109);
+            this.UserPasswordBox.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.UserPasswordBox.Name = "UserPasswordBox";
+            this.UserPasswordBox.PasswordChar = '*';
+            this.UserPasswordBox.Size = new System.Drawing.Size(184, 23);
+            this.UserPasswordBox.TabIndex = 12;
+            //
+            // tbLatitude
+            //
+            this.tbLatitude.Location = new System.Drawing.Point(140, 175);
+            this.tbLatitude.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbLatitude.Name = "tbLatitude";
+            this.tbLatitude.Size = new System.Drawing.Size(184, 23);
+            this.tbLatitude.TabIndex = 13;
+            this.tbLatitude.Leave += new System.EventHandler(this.latitudeText_Leave);
+            //
+            // tbLongitude
+            //
+            this.tbLongitude.Location = new System.Drawing.Point(140, 208);
+            this.tbLongitude.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbLongitude.Name = "tbLongitude";
+            this.tbLongitude.Size = new System.Drawing.Size(184, 23);
+            this.tbLongitude.TabIndex = 14;
+            this.tbLongitude.Leave += new System.EventHandler(this.longitudeText_Leave);
+            //
+            // authTypeLabel
+            //
+            this.authTypeLabel.AutoSize = true;
+            this.authTypeLabel.Location = new System.Drawing.Point(6, 45);
+            this.authTypeLabel.Name = "authTypeLabel";
+            this.authTypeLabel.Size = new System.Drawing.Size(68, 15);
+            this.authTypeLabel.TabIndex = 0;
+            this.authTypeLabel.Text = "Login Type:";
+            //
+            // longiLabel
+            //
+            this.longiLabel.AutoSize = true;
+            this.longiLabel.Location = new System.Drawing.Point(6, 210);
+            this.longiLabel.Name = "longiLabel";
+            this.longiLabel.Size = new System.Drawing.Size(64, 15);
+            this.longiLabel.TabIndex = 5;
+            this.longiLabel.Text = "Longitude:";
+            //
+            // authTypeCb
+            //
+            this.authTypeCb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.authTypeCb.FormattingEnabled = true;
+            this.authTypeCb.Items.AddRange(new object[] {
+            "Google",
+            "PTC"});
+            this.authTypeCb.Location = new System.Drawing.Point(140, 43);
+            this.authTypeCb.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.authTypeCb.Name = "authTypeCb";
+            this.authTypeCb.Size = new System.Drawing.Size(184, 23);
+            this.authTypeCb.TabIndex = 1;
+            //
+            // latLabel
+            //
+            this.latLabel.AutoSize = true;
+            this.latLabel.Location = new System.Drawing.Point(6, 177);
+            this.latLabel.Name = "latLabel";
+            this.latLabel.Size = new System.Drawing.Size(53, 15);
+            this.latLabel.TabIndex = 4;
+            this.latLabel.Text = "Latitude:";
+            //
+            // UserLabel
+            //
+            this.UserLabel.AutoSize = true;
+            this.UserLabel.Location = new System.Drawing.Point(6, 78);
+            this.UserLabel.Name = "UserLabel";
+            this.UserLabel.Size = new System.Drawing.Size(63, 15);
+            this.UserLabel.TabIndex = 2;
+            this.UserLabel.Text = "Username:";
+            //
+            // PasswordLabel
+            //
+            this.PasswordLabel.AutoSize = true;
+            this.PasswordLabel.Location = new System.Drawing.Point(6, 111);
+            this.PasswordLabel.Name = "PasswordLabel";
+            this.PasswordLabel.Size = new System.Drawing.Size(60, 15);
+            this.PasswordLabel.TabIndex = 3;
+            this.PasswordLabel.Text = "Password:";
+            //
+            // tabDevice
+            //
+            this.tabDevice.Controls.Add(this.label22);
+            this.tabDevice.Controls.Add(this.label20);
+            this.tabDevice.Controls.Add(this.label21);
+            this.tabDevice.Controls.Add(this.RandomIDBtn);
+            this.tabDevice.Controls.Add(this.deviceTypeCb);
+            this.tabDevice.Controls.Add(this.RandomDeviceBtn);
+            this.tabDevice.Controls.Add(this.FirmwareFingerprintTb);
+            this.tabDevice.Controls.Add(this.label14);
+            this.tabDevice.Controls.Add(this.FirmwareTypeTb);
+            this.tabDevice.Controls.Add(this.label13);
+            this.tabDevice.Controls.Add(this.FirmwareTagsTb);
+            this.tabDevice.Controls.Add(this.label12);
+            this.tabDevice.Controls.Add(this.FirmwareBrandTb);
+            this.tabDevice.Controls.Add(this.label11);
+            this.tabDevice.Controls.Add(this.HardwareModelTb);
+            this.tabDevice.Controls.Add(this.label10);
+            this.tabDevice.Controls.Add(this.HardwareManufacturerTb);
+            this.tabDevice.Controls.Add(this.label9);
+            this.tabDevice.Controls.Add(this.DeviceModelBootTb);
+            this.tabDevice.Controls.Add(this.label8);
+            this.tabDevice.Controls.Add(this.DeviceModelIdentifierTb);
+            this.tabDevice.Controls.Add(this.label7);
+            this.tabDevice.Controls.Add(this.DeviceModelTb);
+            this.tabDevice.Controls.Add(this.label15);
+            this.tabDevice.Controls.Add(this.DeviceBrandTb);
+            this.tabDevice.Controls.Add(this.label16);
+            this.tabDevice.Controls.Add(this.AndroidBootloaderTb);
+            this.tabDevice.Controls.Add(this.label17);
+            this.tabDevice.Controls.Add(this.AndroidBoardNameTb);
+            this.tabDevice.Controls.Add(this.BoardName);
+            this.tabDevice.Controls.Add(this.DeviceIdTb);
+            this.tabDevice.Controls.Add(this.deviceIdlb);
+            this.tabDevice.Controls.Add(this.label18);
+            this.tabDevice.Location = new System.Drawing.Point(4, 24);
+            this.tabDevice.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.tabDevice.Name = "tabDevice";
+            this.tabDevice.Size = new System.Drawing.Size(920, 479);
+            this.tabDevice.TabIndex = 0;
+            this.tabDevice.Text = "Device";
+            //
+            // label22
+            //
+            this.label22.AutoSize = true;
+            this.label22.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label22.Location = new System.Drawing.Point(672, 12);
+            this.label22.Name = "label22";
+            this.label22.Size = new System.Drawing.Size(227, 60);
+            this.label22.TabIndex = 69;
+            this.label22.Text = "This setting change what the server\r\nthink you are using to play Pokémon GO. \r\nIt" +
+    "s a good idea to change your device to \r\nwhat phone you are using to prevent ban" +
+    ".";
+            //
+            // label20
+            //
+            this.label20.AutoSize = true;
+            this.label20.Font = new System.Drawing.Font("Segoe UI", 11F);
+            this.label20.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+            this.label20.Location = new System.Drawing.Point(475, 3);
+            this.label20.Name = "label20";
+            this.label20.Size = new System.Drawing.Size(78, 20);
+            this.label20.TabIndex = 67;
+            this.label20.Text = "Important:";
+            //
+            // label21
+            //
+            this.label21.AutoSize = true;
+            this.label21.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label21.Location = new System.Drawing.Point(475, 27);
+            this.label21.Name = "label21";
+            this.label21.Size = new System.Drawing.Size(158, 45);
+            this.label21.TabIndex = 66;
+            this.label21.Text = "For your account safety.\r\nPlease do not change your \r\ndevice infomation too often" +
+    ".\r\n";
+            //
+            // RandomIDBtn
+            //
+            this.RandomIDBtn.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.RandomIDBtn.Location = new System.Drawing.Point(334, 48);
+            this.RandomIDBtn.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.RandomIDBtn.Name = "RandomIDBtn";
+            this.RandomIDBtn.Size = new System.Drawing.Size(101, 23);
+            this.RandomIDBtn.TabIndex = 65;
+            this.RandomIDBtn.Text = "Get New ID";
+            this.RandomIDBtn.UseVisualStyleBackColor = true;
+            this.RandomIDBtn.Click += new System.EventHandler(this.RandomIDBtn_Click);
+            //
+            // deviceTypeCb
+            //
+            this.deviceTypeCb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.deviceTypeCb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.deviceTypeCb.FormattingEnabled = true;
+            this.deviceTypeCb.Items.AddRange(new object[] {
+            "Apple",
+            "Android"});
+            this.deviceTypeCb.Location = new System.Drawing.Point(154, 12);
+            this.deviceTypeCb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.deviceTypeCb.Name = "deviceTypeCb";
+            this.deviceTypeCb.Size = new System.Drawing.Size(174, 23);
+            this.deviceTypeCb.TabIndex = 37;
+            this.deviceTypeCb.SelectionChangeCommitted += new System.EventHandler(this.deviceTypeCb_SelectionChangeCommitted);
+            //
+            // RandomDeviceBtn
+            //
+            this.RandomDeviceBtn.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.RandomDeviceBtn.Location = new System.Drawing.Point(710, 300);
+            this.RandomDeviceBtn.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.RandomDeviceBtn.Name = "RandomDeviceBtn";
+            this.RandomDeviceBtn.Size = new System.Drawing.Size(189, 95);
+            this.RandomDeviceBtn.TabIndex = 64;
+            this.RandomDeviceBtn.Text = "I am feeling RICH\r\n(Randomize)";
+            this.RandomDeviceBtn.UseVisualStyleBackColor = true;
+            this.RandomDeviceBtn.Click += new System.EventHandler(this.RandomDeviceBtn_Click);
+            //
+            // FirmwareFingerprintTb
+            //
+            this.FirmwareFingerprintTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.FirmwareFingerprintTb.Location = new System.Drawing.Point(616, 264);
+            this.FirmwareFingerprintTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.FirmwareFingerprintTb.Name = "FirmwareFingerprintTb";
+            this.FirmwareFingerprintTb.Size = new System.Drawing.Size(283, 23);
+            this.FirmwareFingerprintTb.TabIndex = 62;
+            //
+            // label14
+            //
+            this.label14.AutoSize = true;
+            this.label14.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label14.Location = new System.Drawing.Point(475, 267);
+            this.label14.Name = "label14";
+            this.label14.Size = new System.Drawing.Size(117, 15);
+            this.label14.TabIndex = 49;
+            this.label14.Text = "Firmware Fingerprint";
+            //
+            // FirmwareTypeTb
+            //
+            this.FirmwareTypeTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.FirmwareTypeTb.Location = new System.Drawing.Point(616, 228);
+            this.FirmwareTypeTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.FirmwareTypeTb.Name = "FirmwareTypeTb";
+            this.FirmwareTypeTb.Size = new System.Drawing.Size(283, 23);
+            this.FirmwareTypeTb.TabIndex = 58;
+            //
+            // label13
+            //
+            this.label13.AutoSize = true;
+            this.label13.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label13.Location = new System.Drawing.Point(475, 231);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(84, 15);
+            this.label13.TabIndex = 51;
+            this.label13.Text = "Firmware Type";
+            //
+            // FirmwareTagsTb
+            //
+            this.FirmwareTagsTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.FirmwareTagsTb.Location = new System.Drawing.Point(616, 192);
+            this.FirmwareTagsTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.FirmwareTagsTb.Name = "FirmwareTagsTb";
+            this.FirmwareTagsTb.Size = new System.Drawing.Size(283, 23);
+            this.FirmwareTagsTb.TabIndex = 54;
+            //
+            // label12
+            //
+            this.label12.AutoSize = true;
+            this.label12.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label12.Location = new System.Drawing.Point(475, 195);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(83, 15);
+            this.label12.TabIndex = 50;
+            this.label12.Text = "Firmware Tags";
+            //
+            // FirmwareBrandTb
+            //
+            this.FirmwareBrandTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.FirmwareBrandTb.Location = new System.Drawing.Point(616, 156);
+            this.FirmwareBrandTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.FirmwareBrandTb.Name = "FirmwareBrandTb";
+            this.FirmwareBrandTb.Size = new System.Drawing.Size(283, 23);
+            this.FirmwareBrandTb.TabIndex = 52;
+            //
+            // label11
+            //
+            this.label11.AutoSize = true;
+            this.label11.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label11.Location = new System.Drawing.Point(475, 159);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(90, 15);
+            this.label11.TabIndex = 48;
+            this.label11.Text = "Firmware Brand";
+            //
+            // HardwareModelTb
+            //
+            this.HardwareModelTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.HardwareModelTb.Location = new System.Drawing.Point(616, 120);
+            this.HardwareModelTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.HardwareModelTb.Name = "HardwareModelTb";
+            this.HardwareModelTb.Size = new System.Drawing.Size(283, 23);
+            this.HardwareModelTb.TabIndex = 56;
+            //
+            // label10
+            //
+            this.label10.AutoSize = true;
+            this.label10.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label10.Location = new System.Drawing.Point(475, 123);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(95, 15);
+            this.label10.TabIndex = 46;
+            this.label10.Text = "Hardware Model";
+            //
+            // HardwareManufacturerTb
+            //
+            this.HardwareManufacturerTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.HardwareManufacturerTb.Location = new System.Drawing.Point(616, 84);
+            this.HardwareManufacturerTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.HardwareManufacturerTb.Name = "HardwareManufacturerTb";
+            this.HardwareManufacturerTb.Size = new System.Drawing.Size(283, 23);
+            this.HardwareManufacturerTb.TabIndex = 60;
+            //
+            // label9
+            //
+            this.label9.AutoSize = true;
+            this.label9.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label9.Location = new System.Drawing.Point(475, 87);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(136, 15);
+            this.label9.TabIndex = 47;
+            this.label9.Text = "Hardware Manu facturer";
+            //
+            // DeviceModelBootTb
+            //
+            this.DeviceModelBootTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.DeviceModelBootTb.Location = new System.Drawing.Point(154, 264);
+            this.DeviceModelBootTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.DeviceModelBootTb.Name = "DeviceModelBootTb";
+            this.DeviceModelBootTb.Size = new System.Drawing.Size(283, 23);
+            this.DeviceModelBootTb.TabIndex = 63;
+            //
+            // label8
+            //
+            this.label8.AutoSize = true;
+            this.label8.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label8.Location = new System.Drawing.Point(13, 267);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(107, 15);
+            this.label8.TabIndex = 44;
+            this.label8.Text = "Device Model Boot";
+            //
+            // DeviceModelIdentifierTb
+            //
+            this.DeviceModelIdentifierTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.DeviceModelIdentifierTb.Location = new System.Drawing.Point(154, 228);
+            this.DeviceModelIdentifierTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.DeviceModelIdentifierTb.Name = "DeviceModelIdentifierTb";
+            this.DeviceModelIdentifierTb.Size = new System.Drawing.Size(283, 23);
+            this.DeviceModelIdentifierTb.TabIndex = 53;
+            //
+            // label7
+            //
+            this.label7.AutoSize = true;
+            this.label7.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label7.Location = new System.Drawing.Point(13, 231);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(129, 15);
+            this.label7.TabIndex = 43;
+            this.label7.Text = "Device Model Identifier";
+            //
+            // DeviceModelTb
+            //
+            this.DeviceModelTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.DeviceModelTb.Location = new System.Drawing.Point(154, 192);
+            this.DeviceModelTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.DeviceModelTb.Name = "DeviceModelTb";
+            this.DeviceModelTb.Size = new System.Drawing.Size(283, 23);
+            this.DeviceModelTb.TabIndex = 55;
+            //
+            // label15
+            //
+            this.label15.AutoSize = true;
+            this.label15.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label15.Location = new System.Drawing.Point(13, 195);
+            this.label15.Name = "label15";
+            this.label15.Size = new System.Drawing.Size(79, 15);
+            this.label15.TabIndex = 42;
+            this.label15.Text = "Device Model";
+            //
+            // DeviceBrandTb
+            //
+            this.DeviceBrandTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.DeviceBrandTb.Location = new System.Drawing.Point(154, 156);
+            this.DeviceBrandTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.DeviceBrandTb.Name = "DeviceBrandTb";
+            this.DeviceBrandTb.Size = new System.Drawing.Size(283, 23);
+            this.DeviceBrandTb.TabIndex = 57;
+            //
+            // label16
+            //
+            this.label16.AutoSize = true;
+            this.label16.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label16.Location = new System.Drawing.Point(13, 159);
+            this.label16.Name = "label16";
+            this.label16.Size = new System.Drawing.Size(76, 15);
+            this.label16.TabIndex = 41;
+            this.label16.Text = "Device Brand";
+            //
+            // AndroidBootloaderTb
+            //
+            this.AndroidBootloaderTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.AndroidBootloaderTb.Location = new System.Drawing.Point(154, 120);
+            this.AndroidBootloaderTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.AndroidBootloaderTb.Name = "AndroidBootloaderTb";
+            this.AndroidBootloaderTb.Size = new System.Drawing.Size(283, 23);
+            this.AndroidBootloaderTb.TabIndex = 59;
+            //
+            // label17
+            //
+            this.label17.AutoSize = true;
+            this.label17.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label17.Location = new System.Drawing.Point(13, 123);
+            this.label17.Name = "label17";
+            this.label17.Size = new System.Drawing.Size(114, 15);
+            this.label17.TabIndex = 40;
+            this.label17.Text = "Android Boot loader";
+            //
+            // AndroidBoardNameTb
+            //
+            this.AndroidBoardNameTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.AndroidBoardNameTb.Location = new System.Drawing.Point(154, 84);
+            this.AndroidBoardNameTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.AndroidBoardNameTb.Name = "AndroidBoardNameTb";
+            this.AndroidBoardNameTb.Size = new System.Drawing.Size(283, 23);
+            this.AndroidBoardNameTb.TabIndex = 61;
+            //
+            // BoardName
+            //
+            this.BoardName.AutoSize = true;
+            this.BoardName.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.BoardName.Location = new System.Drawing.Point(13, 87);
+            this.BoardName.Name = "BoardName";
+            this.BoardName.Size = new System.Drawing.Size(119, 15);
+            this.BoardName.TabIndex = 39;
+            this.BoardName.Text = "Android Board Name";
+            //
+            // DeviceIdTb
+            //
+            this.DeviceIdTb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.DeviceIdTb.Location = new System.Drawing.Point(154, 48);
+            this.DeviceIdTb.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.DeviceIdTb.Name = "DeviceIdTb";
+            this.DeviceIdTb.Size = new System.Drawing.Size(174, 23);
+            this.DeviceIdTb.TabIndex = 38;
+            //
+            // deviceIdlb
+            //
+            this.deviceIdlb.AutoSize = true;
+            this.deviceIdlb.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.deviceIdlb.Location = new System.Drawing.Point(13, 51);
+            this.deviceIdlb.Name = "deviceIdlb";
+            this.deviceIdlb.Size = new System.Drawing.Size(56, 15);
+            this.deviceIdlb.TabIndex = 45;
+            this.deviceIdlb.Text = "Device ID";
+            //
+            // label18
+            //
+            this.label18.AutoSize = true;
+            this.label18.Font = new System.Drawing.Font("Segoe UI", 9F);
+            this.label18.Location = new System.Drawing.Point(13, 15);
+            this.label18.Name = "label18";
+            this.label18.Size = new System.Drawing.Size(73, 15);
+            this.label18.TabIndex = 36;
+            this.label18.Text = "Device Type:";
+            //
+            // tabPokemon
+            //
+            this.tabPokemon.BackColor = System.Drawing.SystemColors.Control;
+            this.tabPokemon.Controls.Add(this.tcPokemonDetail);
+            this.tabPokemon.Location = new System.Drawing.Point(4, 24);
+            this.tabPokemon.Name = "tabPokemon";
+            this.tabPokemon.Size = new System.Drawing.Size(920, 479);
+            this.tabPokemon.TabIndex = 3;
+            this.tabPokemon.Text = "Pokemon";
+            //
+            // tcPokemonDetail
+            //
+            this.tcPokemonDetail.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.tcPokemonDetail.Controls.Add(this.tabCatch);
+            this.tcPokemonDetail.Controls.Add(this.tabTransfer);
+            this.tcPokemonDetail.Controls.Add(this.tabPowerUp);
+            this.tcPokemonDetail.Controls.Add(this.tabEvo);
+            this.tcPokemonDetail.Location = new System.Drawing.Point(0, 0);
+            this.tcPokemonDetail.Name = "tcPokemonDetail";
+            this.tcPokemonDetail.SelectedIndex = 0;
+            this.tcPokemonDetail.Size = new System.Drawing.Size(920, 479);
+            this.tcPokemonDetail.TabIndex = 5;
+            //
+            // tabCatch
+            //
+            this.tabCatch.BackColor = System.Drawing.SystemColors.Control;
+            this.tabCatch.Controls.Add(this.label47);
+            this.tabCatch.Controls.Add(this.cbAutoFavoritePokemon);
+            this.tabCatch.Controls.Add(this.tbFavoriteMinIvPercentage);
+            this.tabCatch.Controls.Add(this.groupBox10);
+            this.tabCatch.Controls.Add(this.tbMaxPokeballsPerPokemon);
+            this.tabCatch.Controls.Add(this.label43);
+            this.tabCatch.Controls.Add(this.groupBox9);
+            this.tabCatch.Controls.Add(this.groupBox2);
+            this.tabCatch.Controls.Add(this.tBMaxBerriesToUsePerPokemon);
+            this.tabCatch.Controls.Add(this.label27);
+            this.tabCatch.Controls.Add(this.cbUseEggIncubators);
+            this.tabCatch.Controls.Add(this.cbCatchPoke);
+            this.tabCatch.Location = new System.Drawing.Point(4, 24);
+            this.tabCatch.Name = "tabCatch";
+            this.tabCatch.Padding = new System.Windows.Forms.Padding(3);
+            this.tabCatch.Size = new System.Drawing.Size(912, 451);
+            this.tabCatch.TabIndex = 0;
+            this.tabCatch.Text = "Catch";
+            //
+            // label47
+            //
+            this.label47.AutoSize = true;
+            this.label47.Location = new System.Drawing.Point(6, 131);
+            this.label47.Name = "label47";
+            this.label47.Size = new System.Drawing.Size(101, 15);
+            this.label47.TabIndex = 4;
+            this.label47.Text = "Favorite Min-IV%:";
+            //
+            // cbAutoFavoritePokemon
+            //
+            this.cbAutoFavoritePokemon.AutoSize = true;
+            this.cbAutoFavoritePokemon.Location = new System.Drawing.Point(9, 106);
+            this.cbAutoFavoritePokemon.Name = "cbAutoFavoritePokemon";
+            this.cbAutoFavoritePokemon.Size = new System.Drawing.Size(153, 19);
+            this.cbAutoFavoritePokemon.TabIndex = 19;
+            this.cbAutoFavoritePokemon.Text = "Auto-Favorite Pokemon";
+            this.cbAutoFavoritePokemon.UseVisualStyleBackColor = true;
+            //
+            // tbFavoriteMinIvPercentage
+            //
+            this.tbFavoriteMinIvPercentage.Location = new System.Drawing.Point(178, 128);
+            this.tbFavoriteMinIvPercentage.Name = "tbFavoriteMinIvPercentage";
+            this.tbFavoriteMinIvPercentage.Size = new System.Drawing.Size(100, 23);
+            this.tbFavoriteMinIvPercentage.TabIndex = 5;
+            //
+            // groupBox10
+            //
+            this.groupBox10.Controls.Add(this.cbUseBerriesOperator);
+            this.groupBox10.Controls.Add(this.label52);
+            this.groupBox10.Controls.Add(this.tbUseBerriesMinCp);
+            this.groupBox10.Controls.Add(this.label54);
+            this.groupBox10.Controls.Add(this.tbUseBerriesMinIv);
+            this.groupBox10.Controls.Add(this.label56);
+            this.groupBox10.Controls.Add(this.tbUseBerriesBelowCatchProbability);
+            this.groupBox10.Location = new System.Drawing.Point(284, 18);
+            this.groupBox10.Name = "groupBox10";
+            this.groupBox10.Size = new System.Drawing.Size(358, 168);
+            this.groupBox10.TabIndex = 7;
+            this.groupBox10.TabStop = false;
+            this.groupBox10.Text = "Berry";
+            //
+            // cbUseBerriesOperator
+            //
+            this.cbUseBerriesOperator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbUseBerriesOperator.FormattingEnabled = true;
+            this.cbUseBerriesOperator.Items.AddRange(new object[] {
+            "AND",
+            "OR"});
+            this.cbUseBerriesOperator.Location = new System.Drawing.Point(95, 45);
+            this.cbUseBerriesOperator.Name = "cbUseBerriesOperator";
+            this.cbUseBerriesOperator.Size = new System.Drawing.Size(121, 23);
+            this.cbUseBerriesOperator.TabIndex = 17;
+            //
+            // label52
+            //
+            this.label52.AutoSize = true;
+            this.label52.Location = new System.Drawing.Point(6, 19);
+            this.label52.Name = "label52";
+            this.label52.Size = new System.Drawing.Size(109, 15);
+            this.label52.TabIndex = 4;
+            this.label52.Text = "Use Berries Min CP:";
+            //
+            // tbUseBerriesMinCp
+            //
+            this.tbUseBerriesMinCp.Location = new System.Drawing.Point(202, 16);
+            this.tbUseBerriesMinCp.Name = "tbUseBerriesMinCp";
+            this.tbUseBerriesMinCp.Size = new System.Drawing.Size(142, 23);
+            this.tbUseBerriesMinCp.TabIndex = 5;
+            //
+            // label54
+            //
+            this.label54.AutoSize = true;
+            this.label54.Location = new System.Drawing.Point(11, 77);
+            this.label54.Name = "label54";
+            this.label54.Size = new System.Drawing.Size(104, 15);
+            this.label54.TabIndex = 4;
+            this.label54.Text = "Use Berries Min IV:";
+            //
+            // tbUseBerriesMinIv
+            //
+            this.tbUseBerriesMinIv.Location = new System.Drawing.Point(202, 74);
+            this.tbUseBerriesMinIv.Name = "tbUseBerriesMinIv";
+            this.tbUseBerriesMinIv.Size = new System.Drawing.Size(142, 23);
+            this.tbUseBerriesMinIv.TabIndex = 5;
+            //
+            // label56
+            //
+            this.label56.AutoSize = true;
+            this.label56.Location = new System.Drawing.Point(11, 121);
+            this.label56.Name = "label56";
+            this.label56.Size = new System.Drawing.Size(196, 15);
+            this.label56.TabIndex = 4;
+            this.label56.Text = "Use Berries Below Catch Probability:";
+            //
+            // tbUseBerriesBelowCatchProbability
+            //
+            this.tbUseBerriesBelowCatchProbability.Location = new System.Drawing.Point(213, 118);
+            this.tbUseBerriesBelowCatchProbability.Name = "tbUseBerriesBelowCatchProbability";
+            this.tbUseBerriesBelowCatchProbability.Size = new System.Drawing.Size(131, 23);
+            this.tbUseBerriesBelowCatchProbability.TabIndex = 5;
+            //
+            // tbMaxPokeballsPerPokemon
+            //
+            this.tbMaxPokeballsPerPokemon.Location = new System.Drawing.Point(178, 74);
+            this.tbMaxPokeballsPerPokemon.Name = "tbMaxPokeballsPerPokemon";
+            this.tbMaxPokeballsPerPokemon.Size = new System.Drawing.Size(100, 23);
+            this.tbMaxPokeballsPerPokemon.TabIndex = 8;
+            //
+            // label43
+            //
+            this.label43.AutoSize = true;
+            this.label43.Location = new System.Drawing.Point(6, 77);
+            this.label43.Name = "label43";
+            this.label43.Size = new System.Drawing.Size(144, 15);
+            this.label43.TabIndex = 7;
+            this.label43.Text = "Max Poke balls/Pokemon:\r\n";
+            //
+            // groupBox9
+            //
+            this.groupBox9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)));
+            this.groupBox9.Controls.Add(this.label2);
+            this.groupBox9.Controls.Add(this.tbUseMasterBallBelowCatchProbability);
+            this.groupBox9.Controls.Add(this.tbUseGreatBallAboveCp);
+            this.groupBox9.Controls.Add(this.label42);
+            this.groupBox9.Controls.Add(this.label3);
+            this.groupBox9.Controls.Add(this.tbUseUltraBallBelowCatchProbability);
+            this.groupBox9.Controls.Add(this.tbUseUltraBallAboveCp);
+            this.groupBox9.Controls.Add(this.label41);
+            this.groupBox9.Controls.Add(this.label4);
+            this.groupBox9.Controls.Add(this.tbUseGreatBallBelowCatchProbability);
+            this.groupBox9.Controls.Add(this.tbUseMasterBallAboveCp);
+            this.groupBox9.Controls.Add(this.label40);
+            this.groupBox9.Controls.Add(this.label6);
+            this.groupBox9.Controls.Add(this.tbUseUltraBallAboveIv);
+            this.groupBox9.Controls.Add(this.tbUseGreatBallAboveIv);
+            this.groupBox9.Controls.Add(this.label36);
+            this.groupBox9.Location = new System.Drawing.Point(284, 192);
+            this.groupBox9.Name = "groupBox9";
+            this.groupBox9.Size = new System.Drawing.Size(358, 252);
+            this.groupBox9.TabIndex = 6;
+            this.groupBox9.TabStop = false;
+            this.groupBox9.Text = "Ball";
+            //
+            // label2
+            //
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(6, 19);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(137, 15);
+            this.label2.TabIndex = 4;
+            this.label2.Text = "Use Great Ball Above CP:\r\n";
+            //
+            // tbUseMasterBallBelowCatchProbability
+            //
+            this.tbUseMasterBallBelowCatchProbability.Location = new System.Drawing.Point(244, 219);
+            this.tbUseMasterBallBelowCatchProbability.Name = "tbUseMasterBallBelowCatchProbability";
+            this.tbUseMasterBallBelowCatchProbability.Size = new System.Drawing.Size(100, 23);
+            this.tbUseMasterBallBelowCatchProbability.TabIndex = 5;
+            //
+            // tbUseGreatBallAboveCp
+            //
+            this.tbUseGreatBallAboveCp.Location = new System.Drawing.Point(244, 16);
+            this.tbUseGreatBallAboveCp.Name = "tbUseGreatBallAboveCp";
+            this.tbUseGreatBallAboveCp.Size = new System.Drawing.Size(100, 23);
+            this.tbUseGreatBallAboveCp.TabIndex = 5;
+            //
+            // label42
+            //
+            this.label42.AutoSize = true;
+            this.label42.Location = new System.Drawing.Point(6, 222);
+            this.label42.Name = "label42";
+            this.label42.Size = new System.Drawing.Size(219, 15);
+            this.label42.TabIndex = 4;
+            this.label42.Text = "Use Master Ball Below Catch Probability:";
+            //
+            // label3
+            //
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(6, 48);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(134, 15);
+            this.label3.TabIndex = 4;
+            this.label3.Text = "Use Ultra Ball Above CP:\r\n";
+            //
+            // tbUseUltraBallBelowCatchProbability
+            //
+            this.tbUseUltraBallBelowCatchProbability.Location = new System.Drawing.Point(244, 190);
+            this.tbUseUltraBallBelowCatchProbability.Name = "tbUseUltraBallBelowCatchProbability";
+            this.tbUseUltraBallBelowCatchProbability.Size = new System.Drawing.Size(100, 23);
+            this.tbUseUltraBallBelowCatchProbability.TabIndex = 5;
+            //
+            // tbUseUltraBallAboveCp
+            //
+            this.tbUseUltraBallAboveCp.Location = new System.Drawing.Point(244, 45);
+            this.tbUseUltraBallAboveCp.Name = "tbUseUltraBallAboveCp";
+            this.tbUseUltraBallAboveCp.Size = new System.Drawing.Size(100, 23);
+            this.tbUseUltraBallAboveCp.TabIndex = 5;
+            //
+            // label41
+            //
+            this.label41.AutoSize = true;
+            this.label41.Location = new System.Drawing.Point(6, 193);
+            this.label41.Name = "label41";
+            this.label41.Size = new System.Drawing.Size(208, 15);
+            this.label41.TabIndex = 4;
+            this.label41.Text = "Use Ultra Ball Below Catch Probability:";
+            //
+            // label4
+            //
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(6, 77);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(145, 15);
+            this.label4.TabIndex = 4;
+            this.label4.Text = "Use Master Ball Above CP:";
+            //
+            // tbUseGreatBallBelowCatchProbability
+            //
+            this.tbUseGreatBallBelowCatchProbability.Location = new System.Drawing.Point(244, 161);
+            this.tbUseGreatBallBelowCatchProbability.Name = "tbUseGreatBallBelowCatchProbability";
+            this.tbUseGreatBallBelowCatchProbability.Size = new System.Drawing.Size(100, 23);
+            this.tbUseGreatBallBelowCatchProbability.TabIndex = 5;
+            //
+            // tbUseMasterBallAboveCp
+            //
+            this.tbUseMasterBallAboveCp.Location = new System.Drawing.Point(244, 74);
+            this.tbUseMasterBallAboveCp.Name = "tbUseMasterBallAboveCp";
+            this.tbUseMasterBallAboveCp.Size = new System.Drawing.Size(100, 23);
+            this.tbUseMasterBallAboveCp.TabIndex = 5;
+            //
+            // label40
+            //
+            this.label40.AutoSize = true;
+            this.label40.Location = new System.Drawing.Point(6, 164);
+            this.label40.Name = "label40";
+            this.label40.Size = new System.Drawing.Size(211, 15);
+            this.label40.TabIndex = 4;
+            this.label40.Text = "Use Great Ball Below Catch Probability:\r\n";
+            //
+            // label6
+            //
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(6, 106);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(132, 15);
+            this.label6.TabIndex = 4;
+            this.label6.Text = "Use Great Ball Above IV:\r\n";
+            //
+            // tbUseUltraBallAboveIv
+            //
+            this.tbUseUltraBallAboveIv.Location = new System.Drawing.Point(244, 132);
+            this.tbUseUltraBallAboveIv.Name = "tbUseUltraBallAboveIv";
+            this.tbUseUltraBallAboveIv.Size = new System.Drawing.Size(100, 23);
+            this.tbUseUltraBallAboveIv.TabIndex = 5;
+            //
+            // tbUseGreatBallAboveIv
+            //
+            this.tbUseGreatBallAboveIv.Location = new System.Drawing.Point(244, 103);
+            this.tbUseGreatBallAboveIv.Name = "tbUseGreatBallAboveIv";
+            this.tbUseGreatBallAboveIv.Size = new System.Drawing.Size(100, 23);
+            this.tbUseGreatBallAboveIv.TabIndex = 5;
+            //
+            // label36
+            //
+            this.label36.AutoSize = true;
+            this.label36.Location = new System.Drawing.Point(6, 135);
+            this.label36.Name = "label36";
+            this.label36.Size = new System.Drawing.Size(129, 15);
+            this.label36.TabIndex = 4;
+            this.label36.Text = "Use Ultra Ball Above IV:\r\n";
+            //
+            // groupBox2
+            //
+            this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)));
+            this.groupBox2.Controls.Add(this.cbIgnoreAll);
+            this.groupBox2.Controls.Add(this.clbIgnore);
+            this.groupBox2.Location = new System.Drawing.Point(6, 158);
+            this.groupBox2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox2.Size = new System.Drawing.Size(272, 285);
+            this.groupBox2.TabIndex = 3;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Ignore";
+            //
+            // cbIgnoreAll
+            //
+            this.cbIgnoreAll.AutoSize = true;
+            this.cbIgnoreAll.Location = new System.Drawing.Point(6, 17);
+            this.cbIgnoreAll.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.cbIgnoreAll.Name = "cbIgnoreAll";
+            this.cbIgnoreAll.Size = new System.Drawing.Size(74, 19);
+            this.cbIgnoreAll.TabIndex = 1;
+            this.cbIgnoreAll.Text = "Select All";
+            this.cbIgnoreAll.UseVisualStyleBackColor = true;
+            this.cbIgnoreAll.CheckedChanged += new System.EventHandler(this.cbSelectAllCatch_CheckedChanged);
+            //
+            // clbIgnore
+            //
+            this.clbIgnore.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.clbIgnore.CheckOnClick = true;
+            this.clbIgnore.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.clbIgnore.FormattingEnabled = true;
+            this.clbIgnore.Location = new System.Drawing.Point(6, 44);
+            this.clbIgnore.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.clbIgnore.Name = "clbIgnore";
+            this.clbIgnore.Size = new System.Drawing.Size(259, 76);
+            this.clbIgnore.TabIndex = 0;
+            //
+            // tBMaxBerriesToUsePerPokemon
+            //
+            this.tBMaxBerriesToUsePerPokemon.Location = new System.Drawing.Point(178, 45);
+            this.tBMaxBerriesToUsePerPokemon.Name = "tBMaxBerriesToUsePerPokemon";
+            this.tBMaxBerriesToUsePerPokemon.Size = new System.Drawing.Size(100, 23);
+            this.tBMaxBerriesToUsePerPokemon.TabIndex = 2;
+            //
+            // label27
+            //
+            this.label27.AutoSize = true;
+            this.label27.Location = new System.Drawing.Point(6, 48);
+            this.label27.Name = "label27";
+            this.label27.Size = new System.Drawing.Size(128, 15);
+            this.label27.TabIndex = 1;
+            this.label27.Text = "Berry to use/Pokemon:\r\n";
+            //
+            // cbUseEggIncubators
+            //
+            this.cbUseEggIncubators.AutoSize = true;
+            this.cbUseEggIncubators.Location = new System.Drawing.Point(9, 21);
+            this.cbUseEggIncubators.Name = "cbUseEggIncubators";
+            this.cbUseEggIncubators.Size = new System.Drawing.Size(127, 19);
+            this.cbUseEggIncubators.TabIndex = 1;
+            this.cbUseEggIncubators.Text = "Use Egg Incubators";
+            this.cbUseEggIncubators.UseVisualStyleBackColor = true;
+            //
+            // cbCatchPoke
+            //
+            this.cbCatchPoke.AutoSize = true;
+            this.cbCatchPoke.Location = new System.Drawing.Point(9, 3);
+            this.cbCatchPoke.Name = "cbCatchPoke";
+            this.cbCatchPoke.Size = new System.Drawing.Size(111, 19);
+            this.cbCatchPoke.TabIndex = 1;
+            this.cbCatchPoke.Text = "Catch Pokemon";
+            this.cbCatchPoke.UseVisualStyleBackColor = true;
+            //
+            // tabTransfer
+            //
+            this.tabTransfer.BackColor = System.Drawing.SystemColors.Control;
+            this.tabTransfer.Controls.Add(this.groupBox1);
+            this.tabTransfer.Controls.Add(this.groupBox8);
+            this.tabTransfer.Controls.Add(this.groupBox7);
+            this.tabTransfer.Location = new System.Drawing.Point(4, 24);
+            this.tabTransfer.Name = "tabTransfer";
+            this.tabTransfer.Padding = new System.Windows.Forms.Padding(3);
+            this.tabTransfer.Size = new System.Drawing.Size(912, 451);
+            this.tabTransfer.TabIndex = 1;
+            this.tabTransfer.Text = "Transfer";
+            //
+            // groupBox1
+            //
+            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)));
+            this.groupBox1.Controls.Add(this.cbNotTransferAll);
+            this.groupBox1.Controls.Add(this.clbTransfer);
+            this.groupBox1.Location = new System.Drawing.Point(330, 7);
+            this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox1.Size = new System.Drawing.Size(220, 456);
+            this.groupBox1.TabIndex = 20;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "Exclude Transfer";
+            //
+            // cbNotTransferAll
+            //
+            this.cbNotTransferAll.AutoSize = true;
+            this.cbNotTransferAll.Location = new System.Drawing.Point(6, 17);
+            this.cbNotTransferAll.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.cbNotTransferAll.Name = "cbNotTransferAll";
+            this.cbNotTransferAll.Size = new System.Drawing.Size(74, 19);
+            this.cbNotTransferAll.TabIndex = 1;
+            this.cbNotTransferAll.Text = "Select All";
+            this.cbNotTransferAll.UseVisualStyleBackColor = true;
+            this.cbNotTransferAll.CheckedChanged += new System.EventHandler(this.cbSelectAllTransfer_CheckedChanged);
+            //
+            // clbTransfer
+            //
+            this.clbTransfer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.clbTransfer.CheckOnClick = true;
+            this.clbTransfer.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.clbTransfer.FormattingEnabled = true;
+            this.clbTransfer.Location = new System.Drawing.Point(6, 40);
+            this.clbTransfer.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.clbTransfer.Name = "clbTransfer";
+            this.clbTransfer.Size = new System.Drawing.Size(207, 364);
+            this.clbTransfer.TabIndex = 0;
+            //
+            // groupBox8
+            //
+            this.groupBox8.Controls.Add(this.cbUseKeepMinLvl);
+            this.groupBox8.Controls.Add(this.label37);
+            this.groupBox8.Controls.Add(this.tbKeepMinLvl);
+            this.groupBox8.Location = new System.Drawing.Point(6, 261);
+            this.groupBox8.Name = "groupBox8";
+            this.groupBox8.Size = new System.Drawing.Size(318, 86);
+            this.groupBox8.TabIndex = 19;
+            this.groupBox8.TabStop = false;
+            this.groupBox8.Text = "Additional Condiction";
+            //
+            // cbUseKeepMinLvl
+            //
+            this.cbUseKeepMinLvl.AutoSize = true;
+            this.cbUseKeepMinLvl.Location = new System.Drawing.Point(9, 23);
+            this.cbUseKeepMinLvl.Name = "cbUseKeepMinLvl";
+            this.cbUseKeepMinLvl.Size = new System.Drawing.Size(190, 19);
+            this.cbUseKeepMinLvl.TabIndex = 20;
+            this.cbUseKeepMinLvl.Text = "Use Keep Min Level Condiction\r\n";
+            this.cbUseKeepMinLvl.UseVisualStyleBackColor = true;
+            //
+            // label37
+            //
+            this.label37.AutoSize = true;
+            this.label37.Location = new System.Drawing.Point(8, 50);
+            this.label37.Name = "label37";
+            this.label37.Size = new System.Drawing.Size(92, 15);
+            this.label37.TabIndex = 16;
+            this.label37.Text = "Keep Min-Level:";
+            //
+            // tbKeepMinLvl
+            //
+            this.tbKeepMinLvl.Location = new System.Drawing.Point(186, 47);
+            this.tbKeepMinLvl.Name = "tbKeepMinLvl";
+            this.tbKeepMinLvl.Size = new System.Drawing.Size(121, 23);
+            this.tbKeepMinLvl.TabIndex = 17;
+            //
+            // groupBox7
+            //
+            this.groupBox7.Controls.Add(this.cbTransferDuplicatePokemonOnCapture);
+            this.groupBox7.Controls.Add(this.cbTransferDuplicatePokemon);
+            this.groupBox7.Controls.Add(this.cbTransferWeakPokemon);
+            this.groupBox7.Controls.Add(this.tbKeepMinDuplicatePokemon);
+            this.groupBox7.Controls.Add(this.label35);
+            this.groupBox7.Controls.Add(this.cbPrioritizeIvOverCp);
+            this.groupBox7.Controls.Add(this.tbKeepMinIV);
+            this.groupBox7.Controls.Add(this.cbKeepMinOperator);
+            this.groupBox7.Controls.Add(this.tbKeepMinCp);
+            this.groupBox7.Controls.Add(this.label38);
+            this.groupBox7.Controls.Add(this.label39);
+            this.groupBox7.Location = new System.Drawing.Point(6, 6);
+            this.groupBox7.Name = "groupBox7";
+            this.groupBox7.Size = new System.Drawing.Size(318, 249);
+            this.groupBox7.TabIndex = 18;
+            this.groupBox7.TabStop = false;
+            this.groupBox7.Text = "Condiction";
+            //
+            // cbTransferDuplicatePokemonOnCapture
+            //
+            this.cbTransferDuplicatePokemonOnCapture.AutoSize = true;
+            this.cbTransferDuplicatePokemonOnCapture.Location = new System.Drawing.Point(6, 224);
+            this.cbTransferDuplicatePokemonOnCapture.Name = "cbTransferDuplicatePokemonOnCapture";
+            this.cbTransferDuplicatePokemonOnCapture.Size = new System.Drawing.Size(239, 19);
+            this.cbTransferDuplicatePokemonOnCapture.TabIndex = 24;
+            this.cbTransferDuplicatePokemonOnCapture.Text = "Transfer Duplicate Pokemon On Capture";
+            this.cbTransferDuplicatePokemonOnCapture.UseVisualStyleBackColor = true;
+            //
+            // cbTransferDuplicatePokemon
+            //
+            this.cbTransferDuplicatePokemon.AutoSize = true;
+            this.cbTransferDuplicatePokemon.Location = new System.Drawing.Point(6, 199);
+            this.cbTransferDuplicatePokemon.Name = "cbTransferDuplicatePokemon";
+            this.cbTransferDuplicatePokemon.Size = new System.Drawing.Size(175, 19);
+            this.cbTransferDuplicatePokemon.TabIndex = 24;
+            this.cbTransferDuplicatePokemon.Text = "Transfer Duplicate Pokemon";
+            this.cbTransferDuplicatePokemon.UseVisualStyleBackColor = true;
+            //
+            // cbTransferWeakPokemon
+            //
+            this.cbTransferWeakPokemon.AutoSize = true;
+            this.cbTransferWeakPokemon.Location = new System.Drawing.Point(6, 174);
+            this.cbTransferWeakPokemon.Name = "cbTransferWeakPokemon";
+            this.cbTransferWeakPokemon.Size = new System.Drawing.Size(154, 19);
+            this.cbTransferWeakPokemon.TabIndex = 24;
+            this.cbTransferWeakPokemon.Text = "Transfer Weak Pokemon";
+            this.cbTransferWeakPokemon.UseVisualStyleBackColor = true;
+            //
+            // tbKeepMinDuplicatePokemon
+            //
+            this.tbKeepMinDuplicatePokemon.Location = new System.Drawing.Point(216, 139);
+            this.tbKeepMinDuplicatePokemon.Name = "tbKeepMinDuplicatePokemon";
+            this.tbKeepMinDuplicatePokemon.Size = new System.Drawing.Size(91, 23);
+            this.tbKeepMinDuplicatePokemon.TabIndex = 23;
+            //
+            // label35
+            //
+            this.label35.AutoSize = true;
+            this.label35.Location = new System.Drawing.Point(6, 142);
+            this.label35.Name = "label35";
+            this.label35.Size = new System.Drawing.Size(204, 15);
+            this.label35.TabIndex = 22;
+            this.label35.Text = "Keep How Many Duplicate Pokemon:\r\n";
+            //
+            // cbPrioritizeIvOverCp
+            //
+            this.cbPrioritizeIvOverCp.AutoSize = true;
+            this.cbPrioritizeIvOverCp.Location = new System.Drawing.Point(11, 22);
+            this.cbPrioritizeIvOverCp.Name = "cbPrioritizeIvOverCp";
+            this.cbPrioritizeIvOverCp.Size = new System.Drawing.Size(131, 19);
+            this.cbPrioritizeIvOverCp.TabIndex = 21;
+            this.cbPrioritizeIvOverCp.Text = "Prioritize IV Over CP";
+            this.cbPrioritizeIvOverCp.UseVisualStyleBackColor = true;
+            //
+            // tbKeepMinIV
+            //
+            this.tbKeepMinIV.Location = new System.Drawing.Point(186, 110);
+            this.tbKeepMinIV.Name = "tbKeepMinIV";
+            this.tbKeepMinIV.Size = new System.Drawing.Size(121, 23);
+            this.tbKeepMinIV.TabIndex = 12;
+            //
+            // cbKeepMinOperator
+            //
+            this.cbKeepMinOperator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbKeepMinOperator.FormattingEnabled = true;
+            this.cbKeepMinOperator.Items.AddRange(new object[] {
+            "AND",
+            "OR"});
+            this.cbKeepMinOperator.Location = new System.Drawing.Point(78, 81);
+            this.cbKeepMinOperator.Name = "cbKeepMinOperator";
+            this.cbKeepMinOperator.Size = new System.Drawing.Size(121, 23);
+            this.cbKeepMinOperator.TabIndex = 11;
+            //
+            // tbKeepMinCp
+            //
+            this.tbKeepMinCp.Location = new System.Drawing.Point(186, 52);
+            this.tbKeepMinCp.Name = "tbKeepMinCp";
+            this.tbKeepMinCp.Size = new System.Drawing.Size(121, 23);
+            this.tbKeepMinCp.TabIndex = 11;
+            //
+            // label38
+            //
+            this.label38.AutoSize = true;
+            this.label38.Location = new System.Drawing.Point(6, 113);
+            this.label38.Name = "label38";
+            this.label38.Size = new System.Drawing.Size(85, 15);
+            this.label38.TabIndex = 10;
+            this.label38.Text = "Keep Min-IV%:";
+            //
+            // label39
+            //
+            this.label39.AutoSize = true;
+            this.label39.Location = new System.Drawing.Point(6, 55);
+            this.label39.Name = "label39";
+            this.label39.Size = new System.Drawing.Size(80, 15);
+            this.label39.TabIndex = 8;
+            this.label39.Text = "Keep Min-CP:";
+            //
+            // tabPowerUp
+            //
+            this.tabPowerUp.BackColor = System.Drawing.SystemColors.Control;
+            this.tabPowerUp.Controls.Add(this.cbPowerUpFav);
+            this.tabPowerUp.Controls.Add(this.groupBox6);
+            this.tabPowerUp.Controls.Add(this.cbPowerUpType);
+            this.tabPowerUp.Controls.Add(this.label29);
+            this.tabPowerUp.Controls.Add(this.groupBox4);
+            this.tabPowerUp.Controls.Add(this.cbAutoPowerUp);
+            this.tabPowerUp.Location = new System.Drawing.Point(4, 24);
+            this.tabPowerUp.Name = "tabPowerUp";
+            this.tabPowerUp.Size = new System.Drawing.Size(912, 451);
+            this.tabPowerUp.TabIndex = 4;
+            this.tabPowerUp.Text = "PowerUp";
+            //
+            // cbPowerUpFav
+            //
+            this.cbPowerUpFav.AutoSize = true;
+            this.cbPowerUpFav.Location = new System.Drawing.Point(9, 28);
+            this.cbPowerUpFav.Name = "cbPowerUpFav";
+            this.cbPowerUpFav.Size = new System.Drawing.Size(152, 19);
+            this.cbPowerUpFav.TabIndex = 11;
+            this.cbPowerUpFav.Text = "Only PowerUp Favorites\r\n";
+            this.cbPowerUpFav.UseVisualStyleBackColor = true;
+            //
+            // groupBox6
+            //
+            this.groupBox6.Controls.Add(this.tbPowerUpMinIV);
+            this.groupBox6.Controls.Add(this.cbPowerUpCondiction);
+            this.groupBox6.Controls.Add(this.tbPowerUpMinCP);
+            this.groupBox6.Controls.Add(this.label31);
+            this.groupBox6.Controls.Add(this.label30);
+            this.groupBox6.Controls.Add(this.cbPowerUpMinStarDust);
+            this.groupBox6.Controls.Add(this.label28);
+            this.groupBox6.Location = new System.Drawing.Point(9, 130);
+            this.groupBox6.Name = "groupBox6";
+            this.groupBox6.Size = new System.Drawing.Size(307, 120);
+            this.groupBox6.TabIndex = 10;
+            this.groupBox6.TabStop = false;
+            this.groupBox6.Text = "Condiction";
+            //
+            // tbPowerUpMinIV
+            //
+            this.tbPowerUpMinIV.Location = new System.Drawing.Point(178, 80);
+            this.tbPowerUpMinIV.Name = "tbPowerUpMinIV";
+            this.tbPowerUpMinIV.Size = new System.Drawing.Size(121, 23);
+            this.tbPowerUpMinIV.TabIndex = 12;
+            //
+            // cbPowerUpCondiction
+            //
+            this.cbPowerUpCondiction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbPowerUpCondiction.FormattingEnabled = true;
+            this.cbPowerUpCondiction.Items.AddRange(new object[] {
+            "AND",
+            "OR"});
+            this.cbPowerUpCondiction.Location = new System.Drawing.Point(79, 51);
+            this.cbPowerUpCondiction.Name = "cbPowerUpCondiction";
+            this.cbPowerUpCondiction.Size = new System.Drawing.Size(121, 23);
+            this.cbPowerUpCondiction.TabIndex = 11;
+            //
+            // tbPowerUpMinCP
+            //
+            this.tbPowerUpMinCP.Location = new System.Drawing.Point(178, 80);
+            this.tbPowerUpMinCP.Name = "tbPowerUpMinCP";
+            this.tbPowerUpMinCP.Size = new System.Drawing.Size(121, 23);
+            this.tbPowerUpMinCP.TabIndex = 11;
+            //
+            // label31
+            //
+            this.label31.AutoSize = true;
+            this.label31.Location = new System.Drawing.Point(6, 83);
+            this.label31.Name = "label31";
+            this.label31.Size = new System.Drawing.Size(56, 15);
+            this.label31.TabIndex = 10;
+            this.label31.Text = "Min-IV%:";
+            //
+            // label30
+            //
+            this.label30.AutoSize = true;
+            this.label30.Location = new System.Drawing.Point(6, 83);
+            this.label30.Name = "label30";
+            this.label30.Size = new System.Drawing.Size(51, 15);
+            this.label30.TabIndex = 8;
+            this.label30.Text = "Min-CP:";
+            //
+            // cbPowerUpMinStarDust
+            //
+            this.cbPowerUpMinStarDust.FormattingEnabled = true;
+            this.cbPowerUpMinStarDust.Items.AddRange(new object[] {
+            "200",
+            "400",
+            "600",
+            "800",
+            "1000",
+            "1300",
+            "1600",
+            "1900",
+            "2200",
+            "2500",
+            "3000",
+            "3500",
+            "4000",
+            "4500",
+            "5000",
+            "6000",
+            "7000",
+            "8000",
+            "9000",
+            "10000"});
+            this.cbPowerUpMinStarDust.Location = new System.Drawing.Point(178, 22);
+            this.cbPowerUpMinStarDust.Name = "cbPowerUpMinStarDust";
+            this.cbPowerUpMinStarDust.Size = new System.Drawing.Size(121, 23);
+            this.cbPowerUpMinStarDust.TabIndex = 7;
+            this.cbPowerUpMinStarDust.Text = "5000";
+            //
+            // label28
+            //
+            this.label28.AutoSize = true;
+            this.label28.Location = new System.Drawing.Point(6, 25);
+            this.label28.Name = "label28";
+            this.label28.Size = new System.Drawing.Size(151, 15);
+            this.label28.TabIndex = 6;
+            this.label28.Text = "Min-StarDust For PowerUp:\r\n";
+            //
+            // cbPowerUpType
+            //
+            this.cbPowerUpType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.cbPowerUpType.FormattingEnabled = true;
+            this.cbPowerUpType.Items.AddRange(new object[] {
+            "IV",
+            "CP"});
+            this.cbPowerUpType.Location = new System.Drawing.Point(98, 93);
+            this.cbPowerUpType.Name = "cbPowerUpType";
+            this.cbPowerUpType.Size = new System.Drawing.Size(121, 23);
+            this.cbPowerUpType.TabIndex = 9;
+            this.cbPowerUpType.SelectionChangeCommitted += new System.EventHandler(this.cbPowerUpType_SelectionChangeCommitted);
+            //
+            // label29
+            //
+            this.label29.AutoSize = true;
+            this.label29.Location = new System.Drawing.Point(6, 96);
+            this.label29.Name = "label29";
+            this.label29.Size = new System.Drawing.Size(86, 15);
+            this.label29.TabIndex = 8;
+            this.label29.Text = "PowerUp Type:";
+            //
+            // groupBox4
+            //
+            this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)));
+            this.groupBox4.Controls.Add(this.cbPowerUpAll);
+            this.groupBox4.Controls.Add(this.clbPowerUp);
+            this.groupBox4.Location = new System.Drawing.Point(323, 4);
+            this.groupBox4.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox4.Name = "groupBox4";
+            this.groupBox4.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox4.Size = new System.Drawing.Size(220, 459);
+            this.groupBox4.TabIndex = 5;
+            this.groupBox4.TabStop = false;
+            this.groupBox4.Text = "Power Up";
+            //
+            // cbPowerUpAll
+            //
+            this.cbPowerUpAll.AutoSize = true;
+            this.cbPowerUpAll.Location = new System.Drawing.Point(6, 17);
+            this.cbPowerUpAll.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.cbPowerUpAll.Name = "cbPowerUpAll";
+            this.cbPowerUpAll.Size = new System.Drawing.Size(74, 19);
+            this.cbPowerUpAll.TabIndex = 1;
+            this.cbPowerUpAll.Text = "Select All";
+            this.cbPowerUpAll.UseVisualStyleBackColor = true;
+            this.cbPowerUpAll.CheckedChanged += new System.EventHandler(this.cbPowerUpAll_CheckedChanged);
+            //
+            // clbPowerUp
+            //
+            this.clbPowerUp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.clbPowerUp.CheckOnClick = true;
+            this.clbPowerUp.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.clbPowerUp.FormattingEnabled = true;
+            this.clbPowerUp.Location = new System.Drawing.Point(6, 44);
+            this.clbPowerUp.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.clbPowerUp.Name = "clbPowerUp";
+            this.clbPowerUp.Size = new System.Drawing.Size(207, 382);
+            this.clbPowerUp.TabIndex = 0;
+            //
+            // cbAutoPowerUp
+            //
+            this.cbAutoPowerUp.AutoSize = true;
+            this.cbAutoPowerUp.Location = new System.Drawing.Point(9, 3);
+            this.cbAutoPowerUp.Name = "cbAutoPowerUp";
+            this.cbAutoPowerUp.Size = new System.Drawing.Size(106, 19);
+            this.cbAutoPowerUp.TabIndex = 4;
+            this.cbAutoPowerUp.Text = "Auto Power Up";
+            this.cbAutoPowerUp.UseVisualStyleBackColor = true;
+            //
+            // tabEvo
+            //
+            this.tabEvo.BackColor = System.Drawing.SystemColors.Control;
+            this.tabEvo.Controls.Add(this.label53);
+            this.tabEvo.Controls.Add(this.tbUseLuckyEggsMinPokemonAmount);
+            this.tabEvo.Controls.Add(this.cbUseLuckyEggsWhileEvolving);
+            this.tabEvo.Controls.Add(this.groupBox5);
+            this.tabEvo.Controls.Add(this.label33);
+            this.tabEvo.Controls.Add(this.tbEvolveKeptPokemonsAtStorageUsagePercentage);
+            this.tabEvo.Controls.Add(this.cbKeepPokemonsThatCanEvolve);
+            this.tabEvo.Controls.Add(this.groupBox3);
+            this.tabEvo.Location = new System.Drawing.Point(4, 24);
+            this.tabEvo.Name = "tabEvo";
+            this.tabEvo.Size = new System.Drawing.Size(912, 451);
+            this.tabEvo.TabIndex = 3;
+            this.tabEvo.Text = "Evolve";
+            //
+            // label53
+            //
+            this.label53.AutoSize = true;
+            this.label53.Location = new System.Drawing.Point(12, 237);
+            this.label53.Name = "label53";
+            this.label53.Size = new System.Drawing.Size(129, 45);
+            this.label53.TabIndex = 24;
+            this.label53.Text = "Use Lucky Eggs \r\nWhen Having Amount \r\nOf Pokemons:";
+            //
+            // tbUseLuckyEggsMinPokemonAmount
+            //
+            this.tbUseLuckyEggsMinPokemonAmount.Location = new System.Drawing.Point(147, 249);
+            this.tbUseLuckyEggsMinPokemonAmount.Name = "tbUseLuckyEggsMinPokemonAmount";
+            this.tbUseLuckyEggsMinPokemonAmount.Size = new System.Drawing.Size(102, 23);
+            this.tbUseLuckyEggsMinPokemonAmount.TabIndex = 23;
+            //
+            // cbUseLuckyEggsWhileEvolving
+            //
+            this.cbUseLuckyEggsWhileEvolving.AutoSize = true;
+            this.cbUseLuckyEggsWhileEvolving.Location = new System.Drawing.Point(15, 209);
+            this.cbUseLuckyEggsWhileEvolving.Name = "cbUseLuckyEggsWhileEvolving";
+            this.cbUseLuckyEggsWhileEvolving.Size = new System.Drawing.Size(188, 19);
+            this.cbUseLuckyEggsWhileEvolving.TabIndex = 22;
+            this.cbUseLuckyEggsWhileEvolving.Text = "Use Lucky Eggs While Evolving\r\n";
+            this.cbUseLuckyEggsWhileEvolving.UseVisualStyleBackColor = true;
+            //
+            // groupBox5
+            //
+            this.groupBox5.Controls.Add(this.label34);
+            this.groupBox5.Controls.Add(this.tbEvoAboveIV);
+            this.groupBox5.Controls.Add(this.cbEvoAllAboveIV);
+            this.groupBox5.Controls.Add(this.label32);
+            this.groupBox5.Controls.Add(this.cbEvolveAllPokemonWithEnoughCandy);
+            this.groupBox5.Location = new System.Drawing.Point(9, 3);
+            this.groupBox5.Name = "groupBox5";
+            this.groupBox5.Size = new System.Drawing.Size(255, 140);
+            this.groupBox5.TabIndex = 21;
+            this.groupBox5.TabStop = false;
+            this.groupBox5.Text = "Global Evo Setting";
+            //
+            // label34
+            //
+            this.label34.AutoSize = true;
+            this.label34.ForeColor = System.Drawing.Color.Coral;
+            this.label34.Location = new System.Drawing.Point(52, 19);
+            this.label34.Name = "label34";
+            this.label34.Size = new System.Drawing.Size(153, 30);
+            this.label34.TabIndex = 20;
+            this.label34.Text = " These settings will ignore \r\nthe evolve filter on the right";
+            //
+            // tbEvoAboveIV
+            //
+            this.tbEvoAboveIV.Location = new System.Drawing.Point(82, 77);
+            this.tbEvoAboveIV.Name = "tbEvoAboveIV";
+            this.tbEvoAboveIV.Size = new System.Drawing.Size(161, 23);
+            this.tbEvoAboveIV.TabIndex = 15;
+            //
+            // cbEvoAllAboveIV
+            //
+            this.cbEvoAllAboveIV.AutoSize = true;
+            this.cbEvoAllAboveIV.Location = new System.Drawing.Point(6, 52);
+            this.cbEvoAllAboveIV.Name = "cbEvoAllAboveIV";
+            this.cbEvoAllAboveIV.Size = new System.Drawing.Size(181, 19);
+            this.cbEvoAllAboveIV.TabIndex = 12;
+            this.cbEvoAllAboveIV.Text = "Evolve All Pokemon Above IV";
+            this.cbEvoAllAboveIV.UseVisualStyleBackColor = true;
+            //
+            // label32
+            //
+            this.label32.AutoSize = true;
+            this.label32.Location = new System.Drawing.Point(3, 80);
+            this.label32.Name = "label32";
+            this.label32.Size = new System.Drawing.Size(30, 15);
+            this.label32.TabIndex = 19;
+            this.label32.Text = "IV%:";
+            //
+            // cbEvolveAllPokemonWithEnoughCandy
+            //
+            this.cbEvolveAllPokemonWithEnoughCandy.AutoSize = true;
+            this.cbEvolveAllPokemonWithEnoughCandy.Location = new System.Drawing.Point(6, 106);
+            this.cbEvolveAllPokemonWithEnoughCandy.Name = "cbEvolveAllPokemonWithEnoughCandy";
+            this.cbEvolveAllPokemonWithEnoughCandy.Size = new System.Drawing.Size(240, 19);
+            this.cbEvolveAllPokemonWithEnoughCandy.TabIndex = 14;
+            this.cbEvolveAllPokemonWithEnoughCandy.Text = "Evolve All Pokemon With Enough Candy";
+            this.cbEvolveAllPokemonWithEnoughCandy.UseVisualStyleBackColor = true;
+            //
+            // label33
+            //
+            this.label33.AutoSize = true;
+            this.label33.Location = new System.Drawing.Point(12, 183);
+            this.label33.Name = "label33";
+            this.label33.Size = new System.Drawing.Size(98, 15);
+            this.label33.TabIndex = 20;
+            this.label33.Text = "Storage Usage %:";
+            //
+            // tbEvolveKeptPokemonsAtStorageUsagePercentage
+            //
+            this.tbEvolveKeptPokemonsAtStorageUsagePercentage.Location = new System.Drawing.Point(116, 180);
+            this.tbEvolveKeptPokemonsAtStorageUsagePercentage.Name = "tbEvolveKeptPokemonsAtStorageUsagePercentage";
+            this.tbEvolveKeptPokemonsAtStorageUsagePercentage.Size = new System.Drawing.Size(133, 23);
+            this.tbEvolveKeptPokemonsAtStorageUsagePercentage.TabIndex = 18;
+            //
+            // cbKeepPokemonsThatCanEvolve
+            //
+            this.cbKeepPokemonsThatCanEvolve.AutoSize = true;
+            this.cbKeepPokemonsThatCanEvolve.Location = new System.Drawing.Point(15, 155);
+            this.cbKeepPokemonsThatCanEvolve.Name = "cbKeepPokemonsThatCanEvolve";
+            this.cbKeepPokemonsThatCanEvolve.Size = new System.Drawing.Size(237, 19);
+            this.cbKeepPokemonsThatCanEvolve.TabIndex = 17;
+            this.cbKeepPokemonsThatCanEvolve.Text = "Evolve Pokemons when storage is % full\r\n";
+            this.cbKeepPokemonsThatCanEvolve.UseVisualStyleBackColor = true;
+            //
+            // groupBox3
+            //
+            this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)));
+            this.groupBox3.Controls.Add(this.cbEvolveAll);
+            this.groupBox3.Controls.Add(this.clbEvolve);
+            this.groupBox3.Location = new System.Drawing.Point(270, 4);
+            this.groupBox3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.groupBox3.Size = new System.Drawing.Size(220, 459);
+            this.groupBox3.TabIndex = 16;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Evolve";
+            //
+            // cbEvolveAll
+            //
+            this.cbEvolveAll.AutoSize = true;
+            this.cbEvolveAll.Location = new System.Drawing.Point(6, 17);
+            this.cbEvolveAll.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.cbEvolveAll.Name = "cbEvolveAll";
+            this.cbEvolveAll.Size = new System.Drawing.Size(74, 19);
+            this.cbEvolveAll.TabIndex = 1;
+            this.cbEvolveAll.Text = "Select All";
+            this.cbEvolveAll.UseVisualStyleBackColor = true;
+            this.cbEvolveAll.CheckedChanged += new System.EventHandler(this.cbSelectAllEvolve_CheckedChanged);
+            //
+            // clbEvolve
+            //
+            this.clbEvolve.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.clbEvolve.CheckOnClick = true;
+            this.clbEvolve.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.clbEvolve.FormattingEnabled = true;
+            this.clbEvolve.Location = new System.Drawing.Point(6, 44);
+            this.clbEvolve.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.clbEvolve.Name = "clbEvolve";
+            this.clbEvolve.Size = new System.Drawing.Size(207, 346);
+            this.clbEvolve.TabIndex = 0;
+            //
+            // tabItems
+            //
+            this.tabItems.BackColor = System.Drawing.SystemColors.Control;
+            this.tabItems.Controls.Add(this.groupBox14);
+            this.tabItems.Controls.Add(this.groupBox13);
+            this.tabItems.Controls.Add(this.groupBox12);
+            this.tabItems.Controls.Add(this.groupBox11);
+            this.tabItems.Location = new System.Drawing.Point(4, 24);
+            this.tabItems.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.tabItems.Name = "tabItems";
+            this.tabItems.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.tabItems.Size = new System.Drawing.Size(920, 479);
+            this.tabItems.TabIndex = 2;
+            this.tabItems.Text = "Items";
+            //
+            // groupBox14
+            //
+            this.groupBox14.Controls.Add(this.cbVerboseRecycling);
+            this.groupBox14.Controls.Add(this.label1);
+            this.groupBox14.Controls.Add(this.tbRecycleInventoryAtUsagePercentage);
+            this.groupBox14.Location = new System.Drawing.Point(9, 296);
+            this.groupBox14.Name = "groupBox14";
+            this.groupBox14.Size = new System.Drawing.Size(311, 81);
+            this.groupBox14.TabIndex = 18;
+            this.groupBox14.TabStop = false;
+            this.groupBox14.Text = "Recycle";
+            //
+            // cbVerboseRecycling
+            //
+            this.cbVerboseRecycling.AutoSize = true;
+            this.cbVerboseRecycling.Location = new System.Drawing.Point(9, 22);
+            this.cbVerboseRecycling.Name = "cbVerboseRecycling";
+            this.cbVerboseRecycling.Size = new System.Drawing.Size(121, 19);
+            this.cbVerboseRecycling.TabIndex = 16;
+            this.cbVerboseRecycling.Text = "Verbose Recycling";
+            this.cbVerboseRecycling.UseVisualStyleBackColor = true;
+            //
+            // label1
+            //
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(6, 49);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(215, 15);
+            this.label1.TabIndex = 14;
+            this.label1.Text = "Recycle Inventory At Usage Percentage:\r\n";
+            //
+            // tbRecycleInventoryAtUsagePercentage
+            //
+            this.tbRecycleInventoryAtUsagePercentage.Location = new System.Drawing.Point(241, 46);
+            this.tbRecycleInventoryAtUsagePercentage.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbRecycleInventoryAtUsagePercentage.Name = "tbRecycleInventoryAtUsagePercentage";
+            this.tbRecycleInventoryAtUsagePercentage.Size = new System.Drawing.Size(64, 23);
+            this.tbRecycleInventoryAtUsagePercentage.TabIndex = 15;
+            //
+            // groupBox13
+            //
+            this.groupBox13.Controls.Add(this.label5);
+            this.groupBox13.Controls.Add(this.tbTotalAmountOfPokeballsToKeep);
+            this.groupBox13.Controls.Add(this.label44);
+            this.groupBox13.Controls.Add(this.tbTotalAmountOfPotionsToKeep);
+            this.groupBox13.Controls.Add(this.label45);
+            this.groupBox13.Controls.Add(this.tbTotalAmountOfRevivesToKeep);
+            this.groupBox13.Controls.Add(this.label46);
+            this.groupBox13.Controls.Add(this.tbTotalAmountOfBerriesToKeep);
+            this.groupBox13.Location = new System.Drawing.Point(9, 139);
+            this.groupBox13.Name = "groupBox13";
+            this.groupBox13.Size = new System.Drawing.Size(311, 151);
+            this.groupBox13.TabIndex = 17;
+            this.groupBox13.TabStop = false;
+            this.groupBox13.Text = "Amount to Keep";
+            //
+            // label5
+            //
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(6, 19);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(134, 15);
+            this.label5.TabIndex = 14;
+            this.label5.Text = "Total Pokeballs To Keep:";
+            //
+            // tbTotalAmountOfPokeballsToKeep
+            //
+            this.tbTotalAmountOfPokeballsToKeep.Location = new System.Drawing.Point(157, 16);
+            this.tbTotalAmountOfPokeballsToKeep.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbTotalAmountOfPokeballsToKeep.Name = "tbTotalAmountOfPokeballsToKeep";
+            this.tbTotalAmountOfPokeballsToKeep.Size = new System.Drawing.Size(148, 23);
+            this.tbTotalAmountOfPokeballsToKeep.TabIndex = 15;
+            //
+            // label44
+            //
+            this.label44.AutoSize = true;
+            this.label44.Location = new System.Drawing.Point(6, 52);
+            this.label44.Name = "label44";
+            this.label44.Size = new System.Drawing.Size(124, 15);
+            this.label44.TabIndex = 14;
+            this.label44.Text = "Total Potions To Keep:\r\n";
+            //
+            // tbTotalAmountOfPotionsToKeep
+            //
+            this.tbTotalAmountOfPotionsToKeep.Location = new System.Drawing.Point(157, 49);
+            this.tbTotalAmountOfPotionsToKeep.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbTotalAmountOfPotionsToKeep.Name = "tbTotalAmountOfPotionsToKeep";
+            this.tbTotalAmountOfPotionsToKeep.Size = new System.Drawing.Size(148, 23);
+            this.tbTotalAmountOfPotionsToKeep.TabIndex = 15;
+            //
+            // label45
+            //
+            this.label45.AutoSize = true;
+            this.label45.Location = new System.Drawing.Point(6, 85);
+            this.label45.Name = "label45";
+            this.label45.Size = new System.Drawing.Size(123, 15);
+            this.label45.TabIndex = 14;
+            this.label45.Text = "Total Revives To Keep:";
+            //
+            // tbTotalAmountOfRevivesToKeep
+            //
+            this.tbTotalAmountOfRevivesToKeep.Location = new System.Drawing.Point(157, 82);
+            this.tbTotalAmountOfRevivesToKeep.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbTotalAmountOfRevivesToKeep.Name = "tbTotalAmountOfRevivesToKeep";
+            this.tbTotalAmountOfRevivesToKeep.Size = new System.Drawing.Size(148, 23);
+            this.tbTotalAmountOfRevivesToKeep.TabIndex = 15;
+            //
+            // label46
+            //
+            this.label46.AutoSize = true;
+            this.label46.Location = new System.Drawing.Point(6, 118);
+            this.label46.Name = "label46";
+            this.label46.Size = new System.Drawing.Size(119, 15);
+            this.label46.TabIndex = 14;
+            this.label46.Text = "Total Berries To Keep:\r\n";
+            //
+            // tbTotalAmountOfBerriesToKeep
+            //
+            this.tbTotalAmountOfBerriesToKeep.Location = new System.Drawing.Point(157, 115);
+            this.tbTotalAmountOfBerriesToKeep.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbTotalAmountOfBerriesToKeep.Name = "tbTotalAmountOfBerriesToKeep";
+            this.tbTotalAmountOfBerriesToKeep.Size = new System.Drawing.Size(148, 23);
+            this.tbTotalAmountOfBerriesToKeep.TabIndex = 15;
+            //
+            // groupBox12
+            //
+            this.groupBox12.Controls.Add(this.cbUseIncenseConstantly);
+            this.groupBox12.Location = new System.Drawing.Point(9, 73);
+            this.groupBox12.Name = "groupBox12";
+            this.groupBox12.Size = new System.Drawing.Size(311, 60);
+            this.groupBox12.TabIndex = 17;
+            this.groupBox12.TabStop = false;
+            this.groupBox12.Text = "Incense";
+            //
+            // cbUseIncenseConstantly
+            //
+            this.cbUseIncenseConstantly.AutoSize = true;
+            this.cbUseIncenseConstantly.Location = new System.Drawing.Point(6, 22);
+            this.cbUseIncenseConstantly.Name = "cbUseIncenseConstantly";
+            this.cbUseIncenseConstantly.Size = new System.Drawing.Size(148, 19);
+            this.cbUseIncenseConstantly.TabIndex = 2;
+            this.cbUseIncenseConstantly.Text = "Use Incense Constantly";
+            this.cbUseIncenseConstantly.UseVisualStyleBackColor = true;
+            //
+            // groupBox11
+            //
+            this.groupBox11.Controls.Add(this.cbUseLuckyEggConstantly);
+            this.groupBox11.Location = new System.Drawing.Point(9, 7);
+            this.groupBox11.Name = "groupBox11";
+            this.groupBox11.Size = new System.Drawing.Size(311, 60);
+            this.groupBox11.TabIndex = 16;
+            this.groupBox11.TabStop = false;
+            this.groupBox11.Text = "Lucky Egg";
+            //
+            // cbUseLuckyEggConstantly
+            //
+            this.cbUseLuckyEggConstantly.AutoSize = true;
+            this.cbUseLuckyEggConstantly.Location = new System.Drawing.Point(6, 22);
+            this.cbUseLuckyEggConstantly.Name = "cbUseLuckyEggConstantly";
+            this.cbUseLuckyEggConstantly.Size = new System.Drawing.Size(162, 19);
+            this.cbUseLuckyEggConstantly.TabIndex = 2;
+            this.cbUseLuckyEggConstantly.Text = "Use Lucky Egg Constantly";
+            this.cbUseLuckyEggConstantly.UseVisualStyleBackColor = true;
+            //
+            // tabAdvSetting
+            //
+            this.tabAdvSetting.BackColor = System.Drawing.SystemColors.Control;
+            this.tabAdvSetting.Controls.Add(this.groupBox18);
+            this.tabAdvSetting.Controls.Add(this.groupBox17);
+            this.tabAdvSetting.Controls.Add(this.groupBox16);
+            this.tabAdvSetting.Controls.Add(this.groupBox15);
+            this.tabAdvSetting.Location = new System.Drawing.Point(4, 24);
+            this.tabAdvSetting.Name = "tabAdvSetting";
+            this.tabAdvSetting.Size = new System.Drawing.Size(920, 479);
+            this.tabAdvSetting.TabIndex = 4;
+            this.tabAdvSetting.Text = "Advanced Settings";
+            //
+            // groupBox18
+            //
+            this.groupBox18.Controls.Add(this.cbEnableHumanizedThrows);
+            this.groupBox18.Controls.Add(this.tbForceExcellentThrowOverCp);
+            this.groupBox18.Controls.Add(this.tbForceGreatThrowOverCp);
+            this.groupBox18.Controls.Add(this.label66);
+            this.groupBox18.Controls.Add(this.label55);
+            this.groupBox18.Controls.Add(this.label60);
+            this.groupBox18.Controls.Add(this.tbForceExcellentThrowOverIv);
+            this.groupBox18.Controls.Add(this.tbNiceThrowChance);
+            this.groupBox18.Controls.Add(this.label61);
+            this.groupBox18.Controls.Add(this.label62);
+            this.groupBox18.Controls.Add(this.tbForceGreatThrowOverIv);
+            this.groupBox18.Controls.Add(this.tbGreatThrowChance);
+            this.groupBox18.Controls.Add(this.label63);
+            this.groupBox18.Controls.Add(this.label64);
+            this.groupBox18.Controls.Add(this.tbCurveThrowChance);
+            this.groupBox18.Controls.Add(this.tbExcellentThrowChance);
+            this.groupBox18.Controls.Add(this.label65);
+            this.groupBox18.Location = new System.Drawing.Point(325, 7);
+            this.groupBox18.Name = "groupBox18";
+            this.groupBox18.Size = new System.Drawing.Size(358, 284);
+            this.groupBox18.TabIndex = 20;
+            this.groupBox18.TabStop = false;
+            this.groupBox18.Text = "Catching Behavior";
+            //
+            // cbEnableHumanizedThrows
+            //
+            this.cbEnableHumanizedThrows.AutoSize = true;
+            this.cbEnableHumanizedThrows.Location = new System.Drawing.Point(9, 23);
+            this.cbEnableHumanizedThrows.Name = "cbEnableHumanizedThrows";
+            this.cbEnableHumanizedThrows.Size = new System.Drawing.Size(167, 19);
+            this.cbEnableHumanizedThrows.TabIndex = 18;
+            this.cbEnableHumanizedThrows.Text = "Enable Humanized Throws";
+            this.cbEnableHumanizedThrows.UseVisualStyleBackColor = true;
+            //
+            // tbForceExcellentThrowOverCp
+            //
+            this.tbForceExcellentThrowOverCp.Location = new System.Drawing.Point(226, 252);
+            this.tbForceExcellentThrowOverCp.Name = "tbForceExcellentThrowOverCp";
+            this.tbForceExcellentThrowOverCp.Size = new System.Drawing.Size(126, 23);
+            this.tbForceExcellentThrowOverCp.TabIndex = 5;
+            //
+            // tbForceGreatThrowOverCp
+            //
+            this.tbForceGreatThrowOverCp.Location = new System.Drawing.Point(226, 223);
+            this.tbForceGreatThrowOverCp.Name = "tbForceGreatThrowOverCp";
+            this.tbForceGreatThrowOverCp.Size = new System.Drawing.Size(126, 23);
+            this.tbForceGreatThrowOverCp.TabIndex = 5;
+            //
+            // label66
+            //
+            this.label66.AutoSize = true;
+            this.label66.Location = new System.Drawing.Point(6, 255);
+            this.label66.Name = "label66";
+            this.label66.Size = new System.Drawing.Size(171, 15);
+            this.label66.TabIndex = 4;
+            this.label66.Text = "Force Excellent Throw Over CP:";
+            //
+            // label55
+            //
+            this.label55.AutoSize = true;
+            this.label55.Location = new System.Drawing.Point(6, 226);
+            this.label55.Name = "label55";
+            this.label55.Size = new System.Drawing.Size(153, 15);
+            this.label55.TabIndex = 4;
+            this.label55.Text = "Force Great Throw Over CP:";
+            //
+            // label60
+            //
+            this.label60.AutoSize = true;
+            this.label60.Location = new System.Drawing.Point(6, 52);
+            this.label60.Name = "label60";
+            this.label60.Size = new System.Drawing.Size(127, 15);
+            this.label60.TabIndex = 4;
+            this.label60.Text = "Nice Throw Chance %:";
+            //
+            // tbForceExcellentThrowOverIv
+            //
+            this.tbForceExcellentThrowOverIv.Location = new System.Drawing.Point(226, 194);
+            this.tbForceExcellentThrowOverIv.Name = "tbForceExcellentThrowOverIv";
+            this.tbForceExcellentThrowOverIv.Size = new System.Drawing.Size(126, 23);
+            this.tbForceExcellentThrowOverIv.TabIndex = 5;
+            //
+            // tbNiceThrowChance
+            //
+            this.tbNiceThrowChance.Location = new System.Drawing.Point(226, 49);
+            this.tbNiceThrowChance.Name = "tbNiceThrowChance";
+            this.tbNiceThrowChance.Size = new System.Drawing.Size(126, 23);
+            this.tbNiceThrowChance.TabIndex = 5;
+            //
+            // label61
+            //
+            this.label61.AutoSize = true;
+            this.label61.Location = new System.Drawing.Point(6, 197);
+            this.label61.Name = "label61";
+            this.label61.Size = new System.Drawing.Size(179, 15);
+            this.label61.TabIndex = 4;
+            this.label61.Text = "Force Excellent Throw Over IV %:";
+            //
+            // label62
+            //
+            this.label62.AutoSize = true;
+            this.label62.Location = new System.Drawing.Point(6, 81);
+            this.label62.Name = "label62";
+            this.label62.Size = new System.Drawing.Size(131, 15);
+            this.label62.TabIndex = 4;
+            this.label62.Text = "Great Throw Chance %:";
+            //
+            // tbForceGreatThrowOverIv
+            //
+            this.tbForceGreatThrowOverIv.Location = new System.Drawing.Point(226, 165);
+            this.tbForceGreatThrowOverIv.Name = "tbForceGreatThrowOverIv";
+            this.tbForceGreatThrowOverIv.Size = new System.Drawing.Size(126, 23);
+            this.tbForceGreatThrowOverIv.TabIndex = 5;
+            //
+            // tbGreatThrowChance
+            //
+            this.tbGreatThrowChance.Location = new System.Drawing.Point(226, 78);
+            this.tbGreatThrowChance.Name = "tbGreatThrowChance";
+            this.tbGreatThrowChance.Size = new System.Drawing.Size(126, 23);
+            this.tbGreatThrowChance.TabIndex = 5;
+            //
+            // label63
+            //
+            this.label63.AutoSize = true;
+            this.label63.Location = new System.Drawing.Point(6, 168);
+            this.label63.Name = "label63";
+            this.label63.Size = new System.Drawing.Size(161, 15);
+            this.label63.TabIndex = 4;
+            this.label63.Text = "Force Great Throw Over IV %:\r\n";
+            //
+            // label64
+            //
+            this.label64.AutoSize = true;
+            this.label64.Location = new System.Drawing.Point(6, 110);
+            this.label64.Name = "label64";
+            this.label64.Size = new System.Drawing.Size(149, 15);
+            this.label64.TabIndex = 4;
+            this.label64.Text = "Excellent Throw Chance %:\r\n";
+            //
+            // tbCurveThrowChance
+            //
+            this.tbCurveThrowChance.Location = new System.Drawing.Point(226, 136);
+            this.tbCurveThrowChance.Name = "tbCurveThrowChance";
+            this.tbCurveThrowChance.Size = new System.Drawing.Size(126, 23);
+            this.tbCurveThrowChance.TabIndex = 5;
+            //
+            // tbExcellentThrowChance
+            //
+            this.tbExcellentThrowChance.Location = new System.Drawing.Point(226, 107);
+            this.tbExcellentThrowChance.Name = "tbExcellentThrowChance";
+            this.tbExcellentThrowChance.Size = new System.Drawing.Size(126, 23);
+            this.tbExcellentThrowChance.TabIndex = 5;
+            //
+            // label65
+            //
+            this.label65.AutoSize = true;
+            this.label65.Location = new System.Drawing.Point(6, 139);
+            this.label65.Name = "label65";
+            this.label65.Size = new System.Drawing.Size(134, 15);
+            this.label65.TabIndex = 4;
+            this.label65.Text = "Curve Throw Chance %:\r\n";
+            //
+            // groupBox17
+            //
+            this.groupBox17.Controls.Add(this.cbRandomizeRecycle);
+            this.groupBox17.Controls.Add(this.label51);
+            this.groupBox17.Controls.Add(this.tbRandomRecycleValue);
+            this.groupBox17.Location = new System.Drawing.Point(325, 297);
+            this.groupBox17.Name = "groupBox17";
+            this.groupBox17.Size = new System.Drawing.Size(358, 85);
+            this.groupBox17.TabIndex = 19;
+            this.groupBox17.TabStop = false;
+            this.groupBox17.Text = "Recycle Behavior";
+            //
+            // cbRandomizeRecycle
+            //
+            this.cbRandomizeRecycle.AutoSize = true;
+            this.cbRandomizeRecycle.Location = new System.Drawing.Point(9, 22);
+            this.cbRandomizeRecycle.Name = "cbRandomizeRecycle";
+            this.cbRandomizeRecycle.Size = new System.Drawing.Size(128, 19);
+            this.cbRandomizeRecycle.TabIndex = 17;
+            this.cbRandomizeRecycle.Text = "Randomize Recycle";
+            this.cbRandomizeRecycle.UseVisualStyleBackColor = true;
+            //
+            // label51
+            //
+            this.label51.AutoSize = true;
+            this.label51.Location = new System.Drawing.Point(6, 49);
+            this.label51.Name = "label51";
+            this.label51.Size = new System.Drawing.Size(129, 15);
+            this.label51.TabIndex = 14;
+            this.label51.Text = "Random Recycle Value:";
+            //
+            // tbRandomRecycleValue
+            //
+            this.tbRandomRecycleValue.Location = new System.Drawing.Point(226, 46);
+            this.tbRandomRecycleValue.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbRandomRecycleValue.Name = "tbRandomRecycleValue";
+            this.tbRandomRecycleValue.Size = new System.Drawing.Size(123, 23);
+            this.tbRandomRecycleValue.TabIndex = 15;
+            //
+            // groupBox16
+            //
+            this.groupBox16.Controls.Add(this.cbShowWalkingSpeed);
+            this.groupBox16.Controls.Add(this.cbUseWalkingSpeedVariant);
+            this.groupBox16.Controls.Add(this.cbDisableHumanWalking);
+            this.groupBox16.Controls.Add(this.label57);
+            this.groupBox16.Controls.Add(this.tbWalkingSpeedVariantInKilometerPerHour);
+            this.groupBox16.Controls.Add(this.label58);
+            this.groupBox16.Controls.Add(this.tbMaxSpawnLocationOffset);
+            this.groupBox16.Controls.Add(this.label59);
+            this.groupBox16.Controls.Add(this.tbMaxTravelDistanceInMeters);
+            this.groupBox16.Location = new System.Drawing.Point(8, 7);
+            this.groupBox16.Name = "groupBox16";
+            this.groupBox16.Size = new System.Drawing.Size(311, 200);
+            this.groupBox16.TabIndex = 19;
+            this.groupBox16.TabStop = false;
+            this.groupBox16.Text = "Walking Behavior";
+            //
+            // cbShowWalkingSpeed
+            //
+            this.cbShowWalkingSpeed.AutoSize = true;
+            this.cbShowWalkingSpeed.Location = new System.Drawing.Point(9, 109);
+            this.cbShowWalkingSpeed.Name = "cbShowWalkingSpeed";
+            this.cbShowWalkingSpeed.Size = new System.Drawing.Size(136, 19);
+            this.cbShowWalkingSpeed.TabIndex = 18;
+            this.cbShowWalkingSpeed.Text = "Show Walking Speed";
+            this.cbShowWalkingSpeed.UseVisualStyleBackColor = true;
+            //
+            // cbUseWalkingSpeedVariant
+            //
+            this.cbUseWalkingSpeedVariant.AutoSize = true;
+            this.cbUseWalkingSpeedVariant.Location = new System.Drawing.Point(9, 51);
+            this.cbUseWalkingSpeedVariant.Name = "cbUseWalkingSpeedVariant";
+            this.cbUseWalkingSpeedVariant.Size = new System.Drawing.Size(165, 19);
+            this.cbUseWalkingSpeedVariant.TabIndex = 17;
+            this.cbUseWalkingSpeedVariant.Text = "Use Walking Speed Variant";
+            this.cbUseWalkingSpeedVariant.UseVisualStyleBackColor = true;
+            //
+            // cbDisableHumanWalking
+            //
+            this.cbDisableHumanWalking.AutoSize = true;
+            this.cbDisableHumanWalking.Location = new System.Drawing.Point(9, 23);
+            this.cbDisableHumanWalking.Name = "cbDisableHumanWalking";
+            this.cbDisableHumanWalking.Size = new System.Drawing.Size(153, 19);
+            this.cbDisableHumanWalking.TabIndex = 16;
+            this.cbDisableHumanWalking.Text = "Disable Human Walking";
+            this.cbDisableHumanWalking.UseVisualStyleBackColor = true;
+            //
+            // label57
+            //
+            this.label57.AutoSize = true;
+            this.label57.Location = new System.Drawing.Point(6, 81);
+            this.label57.Name = "label57";
+            this.label57.Size = new System.Drawing.Size(170, 15);
+            this.label57.TabIndex = 14;
+            this.label57.Text = "Walking Speed Variant (KM/H):";
+            //
+            // tbWalkingSpeedVariantInKilometerPerHour
+            //
+            this.tbWalkingSpeedVariantInKilometerPerHour.Location = new System.Drawing.Point(182, 78);
+            this.tbWalkingSpeedVariantInKilometerPerHour.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbWalkingSpeedVariantInKilometerPerHour.Name = "tbWalkingSpeedVariantInKilometerPerHour";
+            this.tbWalkingSpeedVariantInKilometerPerHour.Size = new System.Drawing.Size(123, 23);
+            this.tbWalkingSpeedVariantInKilometerPerHour.TabIndex = 15;
+            //
+            // label58
+            //
+            this.label58.AutoSize = true;
+            this.label58.Location = new System.Drawing.Point(6, 139);
+            this.label58.Name = "label58";
+            this.label58.Size = new System.Drawing.Size(154, 15);
+            this.label58.TabIndex = 14;
+            this.label58.Text = "Max Spawn Location Offset:";
+            //
+            // tbMaxSpawnLocationOffset
+            //
+            this.tbMaxSpawnLocationOffset.Location = new System.Drawing.Point(182, 136);
+            this.tbMaxSpawnLocationOffset.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbMaxSpawnLocationOffset.Name = "tbMaxSpawnLocationOffset";
+            this.tbMaxSpawnLocationOffset.Size = new System.Drawing.Size(123, 23);
+            this.tbMaxSpawnLocationOffset.TabIndex = 15;
+            //
+            // label59
+            //
+            this.label59.AutoSize = true;
+            this.label59.Location = new System.Drawing.Point(6, 172);
+            this.label59.Name = "label59";
+            this.label59.Size = new System.Drawing.Size(161, 15);
+            this.label59.TabIndex = 14;
+            this.label59.Text = "Max Travel Distance (Meters):";
+            //
+            // tbMaxTravelDistanceInMeters
+            //
+            this.tbMaxTravelDistanceInMeters.Location = new System.Drawing.Point(182, 169);
+            this.tbMaxTravelDistanceInMeters.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbMaxTravelDistanceInMeters.Name = "tbMaxTravelDistanceInMeters";
+            this.tbMaxTravelDistanceInMeters.Size = new System.Drawing.Size(123, 23);
+            this.tbMaxTravelDistanceInMeters.TabIndex = 15;
+            //
+            // groupBox15
+            //
+            this.groupBox15.Controls.Add(this.label48);
+            this.groupBox15.Controls.Add(this.tbDelayBetweenRecycle);
+            this.groupBox15.Controls.Add(this.label49);
+            this.groupBox15.Controls.Add(this.tbDelayBetweenPlayerActions);
+            this.groupBox15.Controls.Add(this.label50);
+            this.groupBox15.Controls.Add(this.tbDelayBetweenPokemonCatch);
+            this.groupBox15.Location = new System.Drawing.Point(8, 213);
+            this.groupBox15.Name = "groupBox15";
+            this.groupBox15.Size = new System.Drawing.Size(311, 169);
+            this.groupBox15.TabIndex = 18;
+            this.groupBox15.TabStop = false;
+            this.groupBox15.Text = "Action Behavior";
+            //
+            // label48
+            //
+            this.label48.AutoSize = true;
+            this.label48.Location = new System.Drawing.Point(6, 90);
+            this.label48.Name = "label48";
+            this.label48.Size = new System.Drawing.Size(168, 15);
+            this.label48.TabIndex = 21;
+            this.label48.Text = "Delay Between Recycling (ms):";
+            //
+            // tbDelayBetweenRecycle
+            //
+            this.tbDelayBetweenRecycle.Location = new System.Drawing.Point(182, 87);
+            this.tbDelayBetweenRecycle.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbDelayBetweenRecycle.Name = "tbDelayBetweenRecycle";
+            this.tbDelayBetweenRecycle.Size = new System.Drawing.Size(123, 23);
+            this.tbDelayBetweenRecycle.TabIndex = 22;
+            //
+            // label49
+            //
+            this.label49.AutoSize = true;
+            this.label49.Location = new System.Drawing.Point(6, 24);
+            this.label49.Name = "label49";
+            this.label49.Size = new System.Drawing.Size(157, 15);
+            this.label49.TabIndex = 14;
+            this.label49.Text = "Delay Between Actions (ms):";
+            //
+            // tbDelayBetweenPlayerActions
+            //
+            this.tbDelayBetweenPlayerActions.Location = new System.Drawing.Point(182, 21);
+            this.tbDelayBetweenPlayerActions.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbDelayBetweenPlayerActions.Name = "tbDelayBetweenPlayerActions";
+            this.tbDelayBetweenPlayerActions.Size = new System.Drawing.Size(123, 23);
+            this.tbDelayBetweenPlayerActions.TabIndex = 15;
+            //
+            // label50
+            //
+            this.label50.AutoSize = true;
+            this.label50.Location = new System.Drawing.Point(6, 57);
+            this.label50.Name = "label50";
+            this.label50.Size = new System.Drawing.Size(165, 15);
+            this.label50.TabIndex = 14;
+            this.label50.Text = "Delay Between Catching (ms):";
+            //
+            // tbDelayBetweenPokemonCatch
+            //
+            this.tbDelayBetweenPokemonCatch.Location = new System.Drawing.Point(182, 54);
+            this.tbDelayBetweenPokemonCatch.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.tbDelayBetweenPokemonCatch.Name = "tbDelayBetweenPokemonCatch";
+            this.tbDelayBetweenPokemonCatch.Size = new System.Drawing.Size(123, 23);
+            this.tbDelayBetweenPokemonCatch.TabIndex = 15;
+            //
+            // saveBtn
+            //
+            this.saveBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.saveBtn.Location = new System.Drawing.Point(518, 540);
+            this.saveBtn.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+            this.saveBtn.Name = "saveBtn";
+            this.saveBtn.Size = new System.Drawing.Size(286, 32);
+            this.saveBtn.TabIndex = 29;
+            this.saveBtn.Text = "Save (This will automatically restart RocketBot)";
+            this.saveBtn.UseVisualStyleBackColor = true;
+            this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click);
+            //
+            // SettingsForm
+            //
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(926, 586);
+            this.Controls.Add(this.enableAdvSettingCb);
+            this.Controls.Add(this.cancelBtn);
+            this.Controls.Add(this.tabControl);
+            this.Controls.Add(this.saveBtn);
+            this.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.Name = "SettingsForm";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "Bot Settings";
+            this.Load += new System.EventHandler(this.SettingsForm_Load);
+            this.tabControl.ResumeLayout(false);
+            this.tabAuth.ResumeLayout(false);
+            this.tabAuth.PerformLayout();
+            this.proxyGb.ResumeLayout(false);
+            this.proxyGb.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.trackBar)).EndInit();
+            this.tabDevice.ResumeLayout(false);
+            this.tabDevice.PerformLayout();
+            this.tabPokemon.ResumeLayout(false);
+            this.tcPokemonDetail.ResumeLayout(false);
+            this.tabCatch.ResumeLayout(false);
+            this.tabCatch.PerformLayout();
+            this.groupBox10.ResumeLayout(false);
+            this.groupBox10.PerformLayout();
+            this.groupBox9.ResumeLayout(false);
+            this.groupBox9.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.tabTransfer.ResumeLayout(false);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.groupBox8.ResumeLayout(false);
+            this.groupBox8.PerformLayout();
+            this.groupBox7.ResumeLayout(false);
+            this.groupBox7.PerformLayout();
+            this.tabPowerUp.ResumeLayout(false);
+            this.tabPowerUp.PerformLayout();
+            this.groupBox6.ResumeLayout(false);
+            this.groupBox6.PerformLayout();
+            this.groupBox4.ResumeLayout(false);
+            this.groupBox4.PerformLayout();
+            this.tabEvo.ResumeLayout(false);
+            this.tabEvo.PerformLayout();
+            this.groupBox5.ResumeLayout(false);
+            this.groupBox5.PerformLayout();
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox3.PerformLayout();
+            this.tabItems.ResumeLayout(false);
+            this.groupBox14.ResumeLayout(false);
+            this.groupBox14.PerformLayout();
+            this.groupBox13.ResumeLayout(false);
+            this.groupBox13.PerformLayout();
+            this.groupBox12.ResumeLayout(false);
+            this.groupBox12.PerformLayout();
+            this.groupBox11.ResumeLayout(false);
+            this.groupBox11.PerformLayout();
+            this.tabAdvSetting.ResumeLayout(false);
+            this.groupBox18.ResumeLayout(false);
+            this.groupBox18.PerformLayout();
+            this.groupBox17.ResumeLayout(false);
+            this.groupBox17.PerformLayout();
+            this.groupBox16.ResumeLayout(false);
+            this.groupBox16.PerformLayout();
+            this.groupBox15.ResumeLayout(false);
+            this.groupBox15.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.CheckBox enableAdvSettingCb;
+        private System.Windows.Forms.Button cancelBtn;
+        private System.Windows.Forms.TabControl tabControl;
+        private System.Windows.Forms.TabPage tabAuth;
+        private System.Windows.Forms.TextBox tbWalkingSpeed;
+        private System.Windows.Forms.Label TravelSpeedText;
+        private System.Windows.Forms.ComboBox cbLanguage;
+        private System.Windows.Forms.Label label26;
+        private System.Windows.Forms.GroupBox proxyGb;
+        private System.Windows.Forms.TextBox proxyPortTb;
+        private System.Windows.Forms.TextBox proxyUserTb;
+        private System.Windows.Forms.TextBox proxyPwTb;
+        private System.Windows.Forms.Label label24;
+        private System.Windows.Forms.Label label25;
+        private System.Windows.Forms.TextBox proxyHostTb;
+        private System.Windows.Forms.CheckBox useProxyAuthCb;
+        private System.Windows.Forms.Label label19;
+        private System.Windows.Forms.CheckBox useProxyCb;
+        private System.Windows.Forms.Label label23;
+        private System.Windows.Forms.Button ResetLocationBtn;
+        private System.Windows.Forms.TrackBar trackBar;
+        private System.Windows.Forms.TextBox AdressBox;
+        private System.Windows.Forms.Button FindAdressBtn;
+        private GMap.NET.WindowsForms.GMapControl gMapCtrl;
+        private System.Windows.Forms.TextBox UserLoginBox;
+        private System.Windows.Forms.TextBox UserPasswordBox;
+        private System.Windows.Forms.TextBox tbLatitude;
+        private System.Windows.Forms.TextBox tbLongitude;
+        private System.Windows.Forms.Label authTypeLabel;
+        private System.Windows.Forms.Label longiLabel;
+        private System.Windows.Forms.ComboBox authTypeCb;
+        private System.Windows.Forms.Label latLabel;
+        private System.Windows.Forms.Label UserLabel;
+        private System.Windows.Forms.Label PasswordLabel;
+        private System.Windows.Forms.TabPage tabDevice;
+        private System.Windows.Forms.Label label22;
+        private System.Windows.Forms.Label label20;
+        private System.Windows.Forms.Label label21;
+        private System.Windows.Forms.Button RandomIDBtn;
+        private System.Windows.Forms.ComboBox deviceTypeCb;
+        private System.Windows.Forms.Button RandomDeviceBtn;
+        private System.Windows.Forms.TextBox FirmwareFingerprintTb;
+        private System.Windows.Forms.Label label14;
+        private System.Windows.Forms.TextBox FirmwareTypeTb;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.TextBox FirmwareTagsTb;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.TextBox FirmwareBrandTb;
+        private System.Windows.Forms.Label label11;
+        private System.Windows.Forms.TextBox HardwareModelTb;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.TextBox HardwareManufacturerTb;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.TextBox DeviceModelBootTb;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.TextBox DeviceModelIdentifierTb;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.TextBox DeviceModelTb;
+        private System.Windows.Forms.Label label15;
+        private System.Windows.Forms.TextBox DeviceBrandTb;
+        private System.Windows.Forms.Label label16;
+        private System.Windows.Forms.TextBox AndroidBootloaderTb;
+        private System.Windows.Forms.Label label17;
+        private System.Windows.Forms.TextBox AndroidBoardNameTb;
+        private System.Windows.Forms.Label BoardName;
+        private System.Windows.Forms.TextBox DeviceIdTb;
+        private System.Windows.Forms.Label deviceIdlb;
+        private System.Windows.Forms.Label label18;
+        private System.Windows.Forms.TabPage tabPokemon;
+        private System.Windows.Forms.TabControl tcPokemonDetail;
+        private System.Windows.Forms.TabPage tabCatch;
+        private System.Windows.Forms.Label label47;
+        private System.Windows.Forms.CheckBox cbAutoFavoritePokemon;
+        private System.Windows.Forms.TextBox tbFavoriteMinIvPercentage;
+        private System.Windows.Forms.GroupBox groupBox10;
+        private System.Windows.Forms.ComboBox cbUseBerriesOperator;
+        private System.Windows.Forms.Label label52;
+        private System.Windows.Forms.TextBox tbUseBerriesMinCp;
+        private System.Windows.Forms.Label label54;
+        private System.Windows.Forms.TextBox tbUseBerriesMinIv;
+        private System.Windows.Forms.Label label56;
+        private System.Windows.Forms.TextBox tbUseBerriesBelowCatchProbability;
+        private System.Windows.Forms.TextBox tbMaxPokeballsPerPokemon;
+        private System.Windows.Forms.Label label43;
+        private System.Windows.Forms.GroupBox groupBox9;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox tbUseMasterBallBelowCatchProbability;
+        private System.Windows.Forms.TextBox tbUseGreatBallAboveCp;
+        private System.Windows.Forms.Label label42;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.TextBox tbUseUltraBallBelowCatchProbability;
+        private System.Windows.Forms.TextBox tbUseUltraBallAboveCp;
+        private System.Windows.Forms.Label label41;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox tbUseGreatBallBelowCatchProbability;
+        private System.Windows.Forms.TextBox tbUseMasterBallAboveCp;
+        private System.Windows.Forms.Label label40;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.TextBox tbUseUltraBallAboveIv;
+        private System.Windows.Forms.TextBox tbUseGreatBallAboveIv;
+        private System.Windows.Forms.Label label36;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.CheckBox cbIgnoreAll;
+        private System.Windows.Forms.CheckedListBox clbIgnore;
+        private System.Windows.Forms.TextBox tBMaxBerriesToUsePerPokemon;
+        private System.Windows.Forms.Label label27;
+        private System.Windows.Forms.CheckBox cbUseEggIncubators;
+        private System.Windows.Forms.CheckBox cbCatchPoke;
+        private System.Windows.Forms.TabPage tabTransfer;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.CheckBox cbNotTransferAll;
+        private System.Windows.Forms.CheckedListBox clbTransfer;
+        private System.Windows.Forms.GroupBox groupBox8;
+        private System.Windows.Forms.CheckBox cbUseKeepMinLvl;
+        private System.Windows.Forms.Label label37;
+        private System.Windows.Forms.TextBox tbKeepMinLvl;
+        private System.Windows.Forms.GroupBox groupBox7;
+        private System.Windows.Forms.CheckBox cbTransferDuplicatePokemonOnCapture;
+        private System.Windows.Forms.CheckBox cbTransferDuplicatePokemon;
+        private System.Windows.Forms.CheckBox cbTransferWeakPokemon;
+        private System.Windows.Forms.TextBox tbKeepMinDuplicatePokemon;
+        private System.Windows.Forms.Label label35;
+        private System.Windows.Forms.CheckBox cbPrioritizeIvOverCp;
+        private System.Windows.Forms.TextBox tbKeepMinIV;
+        private System.Windows.Forms.ComboBox cbKeepMinOperator;
+        private System.Windows.Forms.TextBox tbKeepMinCp;
+        private System.Windows.Forms.Label label38;
+        private System.Windows.Forms.Label label39;
+        private System.Windows.Forms.TabPage tabPowerUp;
+        private System.Windows.Forms.CheckBox cbPowerUpFav;
+        private System.Windows.Forms.GroupBox groupBox6;
+        private System.Windows.Forms.TextBox tbPowerUpMinIV;
+        private System.Windows.Forms.ComboBox cbPowerUpCondiction;
+        private System.Windows.Forms.TextBox tbPowerUpMinCP;
+        private System.Windows.Forms.Label label31;
+        private System.Windows.Forms.Label label30;
+        private System.Windows.Forms.ComboBox cbPowerUpMinStarDust;
+        private System.Windows.Forms.Label label28;
+        private System.Windows.Forms.ComboBox cbPowerUpType;
+        private System.Windows.Forms.Label label29;
+        private System.Windows.Forms.GroupBox groupBox4;
+        private System.Windows.Forms.CheckBox cbPowerUpAll;
+        private System.Windows.Forms.CheckedListBox clbPowerUp;
+        private System.Windows.Forms.CheckBox cbAutoPowerUp;
+        private System.Windows.Forms.TabPage tabEvo;
+        private System.Windows.Forms.Label label53;
+        private System.Windows.Forms.TextBox tbUseLuckyEggsMinPokemonAmount;
+        private System.Windows.Forms.CheckBox cbUseLuckyEggsWhileEvolving;
+        private System.Windows.Forms.GroupBox groupBox5;
+        private System.Windows.Forms.Label label34;
+        private System.Windows.Forms.TextBox tbEvoAboveIV;
+        private System.Windows.Forms.CheckBox cbEvoAllAboveIV;
+        private System.Windows.Forms.Label label32;
+        private System.Windows.Forms.CheckBox cbEvolveAllPokemonWithEnoughCandy;
+        private System.Windows.Forms.Label label33;
+        private System.Windows.Forms.TextBox tbEvolveKeptPokemonsAtStorageUsagePercentage;
+        private System.Windows.Forms.CheckBox cbKeepPokemonsThatCanEvolve;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.CheckBox cbEvolveAll;
+        private System.Windows.Forms.CheckedListBox clbEvolve;
+        private System.Windows.Forms.TabPage tabItems;
+        private System.Windows.Forms.GroupBox groupBox13;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.TextBox tbTotalAmountOfPokeballsToKeep;
+        private System.Windows.Forms.Label label44;
+        private System.Windows.Forms.TextBox tbTotalAmountOfPotionsToKeep;
+        private System.Windows.Forms.Label label45;
+        private System.Windows.Forms.TextBox tbTotalAmountOfRevivesToKeep;
+        private System.Windows.Forms.Label label46;
+        private System.Windows.Forms.TextBox tbTotalAmountOfBerriesToKeep;
+        private System.Windows.Forms.GroupBox groupBox12;
+        private System.Windows.Forms.CheckBox cbUseIncenseConstantly;
+        private System.Windows.Forms.GroupBox groupBox11;
+        private System.Windows.Forms.CheckBox cbUseLuckyEggConstantly;
+        private System.Windows.Forms.TabPage tabAdvSetting;
+        private System.Windows.Forms.Button saveBtn;
+        private System.Windows.Forms.GroupBox groupBox14;
+        private System.Windows.Forms.CheckBox cbVerboseRecycling;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox tbRecycleInventoryAtUsagePercentage;
+        private System.Windows.Forms.GroupBox groupBox16;
+        private System.Windows.Forms.CheckBox cbDisableHumanWalking;
+        private System.Windows.Forms.Label label57;
+        private System.Windows.Forms.TextBox tbWalkingSpeedVariantInKilometerPerHour;
+        private System.Windows.Forms.Label label58;
+        private System.Windows.Forms.TextBox tbMaxSpawnLocationOffset;
+        private System.Windows.Forms.Label label59;
+        private System.Windows.Forms.TextBox tbMaxTravelDistanceInMeters;
+        private System.Windows.Forms.GroupBox groupBox15;
+        private System.Windows.Forms.Label label49;
+        private System.Windows.Forms.TextBox tbDelayBetweenPlayerActions;
+        private System.Windows.Forms.Label label50;
+        private System.Windows.Forms.TextBox tbDelayBetweenPokemonCatch;
+        private System.Windows.Forms.GroupBox groupBox17;
+        private System.Windows.Forms.CheckBox cbRandomizeRecycle;
+        private System.Windows.Forms.Label label51;
+        private System.Windows.Forms.TextBox tbRandomRecycleValue;
+        private System.Windows.Forms.GroupBox groupBox18;
+        private System.Windows.Forms.CheckBox cbEnableHumanizedThrows;
+        private System.Windows.Forms.TextBox tbForceExcellentThrowOverCp;
+        private System.Windows.Forms.TextBox tbForceGreatThrowOverCp;
+        private System.Windows.Forms.Label label66;
+        private System.Windows.Forms.Label label55;
+        private System.Windows.Forms.Label label60;
+        private System.Windows.Forms.TextBox tbForceExcellentThrowOverIv;
+        private System.Windows.Forms.TextBox tbNiceThrowChance;
+        private System.Windows.Forms.Label label61;
+        private System.Windows.Forms.Label label62;
+        private System.Windows.Forms.TextBox tbForceGreatThrowOverIv;
+        private System.Windows.Forms.TextBox tbGreatThrowChance;
+        private System.Windows.Forms.Label label63;
+        private System.Windows.Forms.Label label64;
+        private System.Windows.Forms.TextBox tbCurveThrowChance;
+        private System.Windows.Forms.TextBox tbExcellentThrowChance;
+        private System.Windows.Forms.Label label65;
+        private System.Windows.Forms.TextBox GoogleApiBox;
+        private System.Windows.Forms.Label GoogleApiLabel;
+        private System.Windows.Forms.CheckBox cbShowWalkingSpeed;
+        private System.Windows.Forms.CheckBox cbUseWalkingSpeedVariant;
+        private System.Windows.Forms.Label label48;
+        private System.Windows.Forms.TextBox tbDelayBetweenRecycle;
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/SettingForm.cs b/PokemonGo.RocketBot.Window/Forms/SettingForm.cs
new file mode 100644
index 0000000..1f2cd02
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/SettingForm.cs
@@ -0,0 +1,809 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+using GMap.NET;
+using GMap.NET.MapProviders;
+using PokemonGo.RocketAPI.Enums;
+using PokemonGo.RocketBot.Logic;
+using PokemonGo.RocketBot.Window.Helpers;
+using POGOProtos.Enums;
+
+namespace PokemonGo.RocketBot.Window.Forms
+{
+    internal partial class SettingsForm : Form
+    {
+        private const int DefaultZoomLevel = 15;
+
+        private static readonly string ConfigFolderPath = Path.Combine(Directory.GetCurrentDirectory(), "Config");
+        private static readonly string AuthFilePath = Path.Combine(ConfigFolderPath, "auth.json");
+        private static readonly string ConfigFilePath = Path.Combine(ConfigFolderPath, "config.json");
+        private static readonly string LanguagePath = Path.Combine(ConfigFolderPath, "Translations");
+        private readonly DeviceHelper _deviceHelper;
+        private readonly List<DeviceInfo> _deviceInfos;
+        private readonly GlobalSettings _setting;
+        private TabPage _tabAdvSettingTab;
+
+        public SettingsForm(ref GlobalSettings settings)
+        {
+            InitializeComponent();
+            _setting = settings;
+
+            _deviceHelper = new DeviceHelper();
+            _deviceInfos = _deviceHelper.DeviceBucket;
+
+            foreach (
+                var pokemon in
+                    Enum.GetValues(typeof(PokemonId)).Cast<PokemonId>().Where(id => id != PokemonId.Missingno))
+            {
+                clbIgnore.Items.Add(pokemon);
+                clbTransfer.Items.Add(pokemon);
+                clbPowerUp.Items.Add(pokemon);
+                clbEvolve.Items.Add(pokemon);
+            }
+        }
+
+        private void SettingsForm_Load(object sender, EventArgs e)
+        {
+            var languageList = GetLanguageList();
+            var languageIndex = languageList.IndexOf(_setting.TranslationLanguageCode);
+            cbLanguage.DataSource = languageList;
+            cbLanguage.SelectedIndex = languageIndex == -1 ? 0 : languageIndex;
+
+            #region Advanced Setting Init
+
+            //proxy
+            proxyGb.Visible = _setting.EnableAdvancedSettings;
+            //advanced tab
+            _tabAdvSettingTab = tabAdvSetting;
+            enableAdvSettingCb.Checked = _setting.EnableAdvancedSettings;
+            if (!enableAdvSettingCb.Checked)
+            {
+                tabControl.TabPages.Remove(_tabAdvSettingTab);
+            }
+            else
+            {
+                _tabAdvSettingTab.Enabled = true;
+            }
+
+            #endregion
+
+            #region Login Type and info
+
+            authTypeCb.Text = _setting.Auth.AuthType.ToString();
+            UserLoginBox.Text = _setting.Auth.AuthType == AuthType.Google
+                ? _setting.Auth.GoogleUsername
+                : _setting.Auth.PtcUsername;
+            UserPasswordBox.Text = _setting.Auth.AuthType == AuthType.Google
+                ? _setting.Auth.GooglePassword
+                : _setting.Auth.PtcPassword;
+
+            //google api
+            GoogleApiBox.Text = _setting.Auth.GoogleApiKey;
+
+            //proxy
+            useProxyCb.Checked = _setting.Auth.UseProxy;
+            useProxyAuthCb.Checked = _setting.Auth.UseProxy && _setting.Auth.UseProxyAuthentication;
+            ToggleProxyCtrls();
+
+            #endregion
+
+            #region Map Info
+
+            //use google provider
+            gMapCtrl.MapProvider = GoogleMapProvider.Instance;
+            //get tiles from server only
+            gMapCtrl.Manager.Mode = AccessMode.ServerOnly;
+            //not use proxy
+            GMapProvider.WebProxy = null;
+            //center map on moscow
+            gMapCtrl.Position = new PointLatLng(_setting.DefaultLatitude, _setting.DefaultLongitude);
+            //zoom min/max; default both = 2
+            gMapCtrl.DragButton = MouseButtons.Left;
+            gMapCtrl.CenterPen = new Pen(Color.Red, 2);
+            gMapCtrl.MinZoom = trackBar.Maximum = 2;
+            gMapCtrl.MaxZoom = trackBar.Maximum = 18;
+            trackBar.Value = DefaultZoomLevel;
+            //set zoom
+            gMapCtrl.Zoom = trackBar.Value;
+            //disable map focus
+            gMapCtrl.DisableFocusOnMouseEnter = true;
+
+            tbWalkingSpeed.Text = _setting.WalkingSpeedInKilometerPerHour.ToString(CultureInfo.InvariantCulture);
+
+            #endregion
+
+            #region Device Info
+
+            //by default, select one from Necro's device dictionary
+            DeviceIdTb.Text = _setting.Auth.DeviceId;
+            AndroidBoardNameTb.Text = _setting.Auth.AndroidBoardName;
+            AndroidBootloaderTb.Text = _setting.Auth.AndroidBootloader;
+            DeviceBrandTb.Text = _setting.Auth.DeviceBrand;
+            DeviceModelTb.Text = _setting.Auth.DeviceModel;
+            DeviceModelIdentifierTb.Text = _setting.Auth.DeviceModelIdentifier;
+            DeviceModelBootTb.Text = _setting.Auth.DeviceModelBoot;
+            HardwareManufacturerTb.Text = _setting.Auth.HardwareManufacturer;
+            HardwareModelTb.Text = _setting.Auth.HardwareModel;
+            FirmwareBrandTb.Text = _setting.Auth.FirmwareBrand;
+            FirmwareTagsTb.Text = _setting.Auth.FirmwareTags;
+            FirmwareTypeTb.Text = _setting.Auth.FirmwareType;
+            FirmwareFingerprintTb.Text = _setting.Auth.FirmwareFingerprint;
+            deviceTypeCb.SelectedIndex = _setting.Auth.DeviceBrand.ToLower() == "apple" ? 0 : 1;
+
+            #endregion
+
+            #region Pokemon Info
+
+            #region Catch
+
+            cbCatchPoke.Checked = _setting.CatchPokemon;
+            cbUseEggIncubators.Checked = _setting.UseEggIncubators;
+            tBMaxBerriesToUsePerPokemon.Text = _setting.MaxBerriesToUsePerPokemon.ToString();
+            tbMaxPokeballsPerPokemon.Text = _setting.MaxPokeballsPerPokemon.ToString();
+            cbAutoFavoritePokemon.Checked = _setting.AutoFavoritePokemon;
+            tbFavoriteMinIvPercentage.Text = _setting.FavoriteMinIvPercentage.ToString(CultureInfo.InvariantCulture);
+
+            tbUseBerriesMinCp.Text = _setting.UseBerriesMinCp.ToString();
+            tbUseBerriesMinIv.Text = _setting.UseBerriesMinIv.ToString(CultureInfo.InvariantCulture);
+            tbUseBerriesBelowCatchProbability.Text =
+                _setting.UseBerriesBelowCatchProbability.ToString(CultureInfo.InvariantCulture);
+            cbUseBerriesOperator.SelectedIndex = _setting.UseBerriesOperator == "and" ? 0 : 1;
+
+            tbUseGreatBallAboveCp.Text = _setting.UseGreatBallAboveCp.ToString();
+            tbUseUltraBallAboveCp.Text = _setting.UseUltraBallAboveCp.ToString();
+            tbUseMasterBallAboveCp.Text = _setting.UseMasterBallAboveCp.ToString();
+            tbUseGreatBallAboveIv.Text = _setting.UseGreatBallAboveIv.ToString(CultureInfo.InvariantCulture);
+            tbUseUltraBallAboveIv.Text = _setting.UseUltraBallAboveIv.ToString(CultureInfo.InvariantCulture);
+            tbUseGreatBallBelowCatchProbability.Text =
+                _setting.UseGreatBallBelowCatchProbability.ToString(CultureInfo.InvariantCulture);
+            tbUseUltraBallBelowCatchProbability.Text =
+                _setting.UseUltraBallBelowCatchProbability.ToString(CultureInfo.InvariantCulture);
+            tbUseMasterBallBelowCatchProbability.Text =
+                _setting.UseMasterBallBelowCatchProbability.ToString(CultureInfo.InvariantCulture);
+
+            foreach (var poke in _setting.PokemonsToIgnore)
+            {
+                clbIgnore.SetItemChecked(clbIgnore.FindStringExact(poke.ToString()), true);
+            }
+
+            #endregion
+
+            #region Transfer
+
+            cbPrioritizeIvOverCp.Checked = _setting.PrioritizeIvOverCp;
+            tbKeepMinCp.Text = _setting.KeepMinCp.ToString();
+            tbKeepMinIV.Text = _setting.KeepMinIvPercentage.ToString(CultureInfo.InvariantCulture);
+            tbKeepMinLvl.Text = _setting.KeepMinLvl.ToString();
+            cbKeepMinOperator.SelectedIndex = _setting.KeepMinOperator.ToLowerInvariant() == "and" ? 0 : 1;
+            cbTransferWeakPokemon.Checked = _setting.TransferWeakPokemon;
+            cbTransferDuplicatePokemon.Checked = _setting.TransferDuplicatePokemon;
+            cbTransferDuplicatePokemonOnCapture.Checked = _setting.TransferDuplicatePokemonOnCapture;
+
+            tbKeepMinDuplicatePokemon.Text = _setting.KeepMinDuplicatePokemon.ToString();
+            cbUseKeepMinLvl.Checked = _setting.UseKeepMinLvl;
+            foreach (var poke in _setting.PokemonsNotToTransfer)
+            {
+                clbTransfer.SetItemChecked(clbTransfer.FindStringExact(poke.ToString()), true);
+            }
+
+            #endregion
+
+            #region Powerup
+
+            //focuse to use filter list
+            _setting.UseLevelUpList = true;
+
+            cbAutoPowerUp.Checked = _setting.AutomaticallyLevelUpPokemon;
+            cbPowerUpFav.Checked = _setting.OnlyUpgradeFavorites;
+            cbPowerUpType.SelectedIndex = _setting.LevelUpByCPorIv == "iv" ? 0 : 1;
+            cbPowerUpCondiction.SelectedIndex = _setting.UpgradePokemonMinimumStatsOperator == "and" ? 0 : 1;
+            cbPowerUpMinStarDust.Text = _setting.GetMinStarDustForLevelUp.ToString();
+            tbPowerUpMinIV.Text = _setting.UpgradePokemonIvMinimum.ToString(CultureInfo.InvariantCulture);
+            tbPowerUpMinCP.Text = _setting.UpgradePokemonCpMinimum.ToString(CultureInfo.InvariantCulture);
+            foreach (var poke in _setting.PokemonsToLevelUp)
+            {
+                clbPowerUp.SetItemChecked(clbPowerUp.FindStringExact(poke.ToString()), true);
+            }
+            if (_setting.LevelUpByCPorIv == "iv")
+            {
+                label31.Visible = true;
+                tbPowerUpMinIV.Visible = true;
+                label30.Visible = false;
+                tbPowerUpMinCP.Visible = false;
+            }
+            else
+            {
+                label31.Visible = false;
+                tbPowerUpMinIV.Visible = false;
+                label30.Visible = true;
+                tbPowerUpMinCP.Visible = true;
+            }
+
+            #endregion
+
+            #region Evo
+
+            cbEvoAllAboveIV.Checked = _setting.EvolveAllPokemonAboveIv;
+            tbEvoAboveIV.Text = _setting.EvolveAboveIvValue.ToString(CultureInfo.InvariantCulture);
+            cbEvolveAllPokemonWithEnoughCandy.Checked = _setting.EvolveAllPokemonWithEnoughCandy;
+            cbKeepPokemonsThatCanEvolve.Checked = _setting.KeepPokemonsThatCanEvolve;
+            tbEvolveKeptPokemonsAtStorageUsagePercentage.Text =
+                _setting.EvolveKeptPokemonsAtStorageUsagePercentage.ToString(CultureInfo.InvariantCulture);
+            cbUseLuckyEggsWhileEvolving.Checked = _setting.UseLuckyEggsWhileEvolving;
+            tbUseLuckyEggsMinPokemonAmount.Text = _setting.UseLuckyEggsMinPokemonAmount.ToString();
+            foreach (var poke in _setting.PokemonsToEvolve)
+            {
+                clbEvolve.SetItemChecked(clbEvolve.FindStringExact(poke.ToString()), true);
+            }
+
+            #endregion
+
+            #endregion
+
+            #region Item Info
+
+            cbUseLuckyEggConstantly.Checked = _setting.UseLuckyEggConstantly;
+            cbUseIncenseConstantly.Checked = _setting.UseIncenseConstantly;
+            tbTotalAmountOfPokeballsToKeep.Text = _setting.TotalAmountOfPokeballsToKeep.ToString();
+            tbTotalAmountOfPotionsToKeep.Text = _setting.TotalAmountOfPotionsToKeep.ToString();
+            tbTotalAmountOfRevivesToKeep.Text = _setting.TotalAmountOfRevivesToKeep.ToString();
+            tbTotalAmountOfBerriesToKeep.Text = _setting.TotalAmountOfBerriesToKeep.ToString();
+            cbVerboseRecycling.Checked = _setting.VerboseRecycling;
+            tbRecycleInventoryAtUsagePercentage.Text =
+                _setting.RecycleInventoryAtUsagePercentage.ToString(CultureInfo.InvariantCulture);
+
+            #endregion
+
+            #region Advance Settings
+
+            cbDisableHumanWalking.Checked = _setting.DisableHumanWalking;
+            cbUseWalkingSpeedVariant.Checked = _setting.UseWalkingSpeedVariant;
+            tbWalkingSpeedVariantInKilometerPerHour.Text =
+                _setting.WalkingSpeedVariant.ToString(CultureInfo.InvariantCulture);
+            cbShowWalkingSpeed.Checked = _setting.ShowVariantWalking;
+            tbMaxSpawnLocationOffset.Text = _setting.MaxSpawnLocationOffset.ToString();
+            tbMaxTravelDistanceInMeters.Text = _setting.MaxTravelDistanceInMeters.ToString();
+
+            tbDelayBetweenPlayerActions.Text = _setting.DelayBetweenPlayerActions.ToString();
+            tbDelayBetweenPokemonCatch.Text = _setting.DelayBetweenPokemonCatch.ToString();
+            tbDelayBetweenRecycle.Text = _setting.DelayBetweenRecycle.ToString();
+
+            cbRandomizeRecycle.Checked = _setting.RandomizeRecycle;
+            tbRandomRecycleValue.Text = _setting.RandomRecycleValue.ToString();
+
+            cbEnableHumanizedThrows.Checked = _setting.EnableHumanizedThrows;
+            tbNiceThrowChance.Text = _setting.NiceThrowChance.ToString();
+            tbGreatThrowChance.Text = _setting.GreatThrowChance.ToString();
+            tbExcellentThrowChance.Text = _setting.ExcellentThrowChance.ToString();
+            tbCurveThrowChance.Text = _setting.CurveThrowChance.ToString();
+            tbForceGreatThrowOverIv.Text = _setting.ForceGreatThrowOverIv.ToString(CultureInfo.InvariantCulture);
+            tbForceExcellentThrowOverIv.Text = _setting.ForceExcellentThrowOverIv.ToString(CultureInfo.InvariantCulture);
+            tbForceGreatThrowOverCp.Text = _setting.ForceGreatThrowOverCp.ToString();
+            tbForceExcellentThrowOverCp.Text = _setting.ForceExcellentThrowOverCp.ToString();
+
+            #endregion
+        }
+
+        #region Help button for API key
+
+        protected override void OnLoad(EventArgs e)
+        {
+            var btn = new Button {Size = new Size(25, GoogleApiBox.ClientSize.Height + 2)};
+            btn.Location = new Point(GoogleApiBox.ClientSize.Width - btn.Width, -1);
+            btn.Cursor = Cursors.Default;
+            btn.Image = ResourceHelper.GetImage("question");
+            btn.Click += googleapihep_click;
+            GoogleApiBox.Controls.Add(btn);
+            // Send EM_SETMARGINS to prevent text from disappearing underneath the button
+            SendMessage(GoogleApiBox.Handle, 0xd3, (IntPtr) 2, (IntPtr) (btn.Width << 16));
+            base.OnLoad(e);
+        }
+
+        private void googleapihep_click(object sender, EventArgs e)
+        {
+            Process.Start("https://developers.google.com/maps/documentation/directions/get-api-key");
+        }
+
+        [DllImport("user32.dll")]
+        private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
+
+        #endregion
+
+        #region private methods
+
+        private static int ConvertStringToInt(string input)
+        {
+            var output = 0;
+            int.TryParse(input, out output);
+            return output;
+        }
+
+        private static float ConvertStringToFloat(string input)
+        {
+            float output = 0;
+            float.TryParse(input, out output);
+            return output;
+        }
+
+        private static double ConvertStringToDouble(string input)
+        {
+            double output = 0;
+            double.TryParse(input, out output);
+            return output;
+        }
+
+        private static List<PokemonId> ConvertClbToList(CheckedListBox input)
+        {
+            return input.CheckedItems.Cast<PokemonId>().ToList();
+        }
+
+        /// <summary>
+        ///     Get languale list from Translations folder and populate it to combo box
+        /// </summary>
+        private List<string> GetLanguageList()
+        {
+            var languages = new List<string> {"en"};
+            var langFiles = Directory.GetFiles(LanguagePath, "*.json", SearchOption.TopDirectoryOnly);
+            languages.AddRange(langFiles.Select(
+                langFileName => Path.GetFileNameWithoutExtension(langFileName)?.Replace("translation.", ""))
+                .Where(langCode => langCode != "en"));
+            return languages;
+        }
+
+        /// <summary>
+        ///     Update location lat and lon to textboxes
+        /// </summary>
+        private void UpdateLocationInfo()
+        {
+            //not rounding it, need to have correct position to prevent map drifting
+            tbLatitude.Text = gMapCtrl.Position.Lat.ToString(CultureInfo.InvariantCulture);
+            tbLongitude.Text = gMapCtrl.Position.Lng.ToString(CultureInfo.InvariantCulture);
+            //update trackbar
+            trackBar.Value = (int) Math.Round(gMapCtrl.Zoom);
+        }
+
+        /// <summary>
+        ///     Update map location base on giving lng and lat
+        /// </summary>
+        /// <param name="lng"></param>
+        /// <param name="lat"></param>
+        private void UpdateMapLocation(double lat, double lng)
+        {
+            gMapCtrl.Position = new PointLatLng(lat, lng);
+        }
+
+        private void ToggleProxyCtrls()
+        {
+            if (useProxyCb.Checked)
+            {
+                proxyHostTb.Enabled = true;
+                proxyHostTb.Text = _setting.Auth.UseProxyHost;
+                proxyPortTb.Enabled = true;
+                proxyPortTb.Text = _setting.Auth.UseProxyPort;
+                useProxyAuthCb.Enabled = true;
+            }
+            else
+            {
+                proxyHostTb.Enabled = false;
+                proxyHostTb.Text = _setting.Auth.UseProxyHost = "";
+                proxyPortTb.Enabled = false;
+                proxyPortTb.Text = _setting.Auth.UseProxyPort = "";
+                useProxyAuthCb.Enabled = false;
+            }
+            if (useProxyAuthCb.Checked)
+            {
+                proxyUserTb.Enabled = true;
+                proxyUserTb.Text = _setting.Auth.UseProxyUsername;
+                proxyPwTb.Enabled = true;
+                proxyPwTb.Text = _setting.Auth.UseProxyPassword;
+            }
+            else
+            {
+                proxyUserTb.Enabled = false;
+                proxyUserTb.Text = _setting.Auth.UseProxyUsername = "";
+                proxyPwTb.Enabled = false;
+                proxyPwTb.Text = _setting.Auth.UseProxyPassword = "";
+            }
+        }
+
+        private void PopulateDevice(int tabIndex = -1)
+        {
+            deviceTypeCb.SelectedIndex = tabIndex == -1 ? _deviceHelper.GetRandomIndex(2) : tabIndex;
+            var candidateDevices = deviceTypeCb.SelectedIndex == 0
+                ? _deviceInfos.Where(d => d.DeviceBrand.ToLower() == "apple").ToList()
+                : _deviceInfos.Where(d => d.DeviceBrand.ToLower() != "apple").ToList();
+            var selectIndex = _deviceHelper.GetRandomIndex(candidateDevices.Count);
+
+            DeviceIdTb.Text = candidateDevices[selectIndex].DeviceId == "8525f5d8201f78b5"
+                ? _deviceHelper.RandomString(16, "0123456789abcdef")
+                : candidateDevices[selectIndex].DeviceId;
+            AndroidBoardNameTb.Text = candidateDevices[selectIndex].AndroidBoardName;
+            AndroidBootloaderTb.Text = candidateDevices[selectIndex].AndroidBootloader;
+            DeviceBrandTb.Text = candidateDevices[selectIndex].DeviceBrand;
+            DeviceModelTb.Text = candidateDevices[selectIndex].DeviceModel;
+            DeviceModelIdentifierTb.Text = candidateDevices[selectIndex].DeviceModelIdentifier;
+            DeviceModelBootTb.Text = candidateDevices[selectIndex].DeviceModelBoot;
+            HardwareManufacturerTb.Text = candidateDevices[selectIndex].HardwareManufacturer;
+            HardwareModelTb.Text = candidateDevices[selectIndex].HardwareModel;
+            FirmwareBrandTb.Text = candidateDevices[selectIndex].FirmwareBrand;
+            FirmwareTagsTb.Text = candidateDevices[selectIndex].FirmwareTags;
+            FirmwareTypeTb.Text = candidateDevices[selectIndex].FirmwareType;
+            FirmwareFingerprintTb.Text = candidateDevices[selectIndex].FirmwareFingerprint;
+        }
+
+        private static void ListSelectAllHandler(CheckedListBox targetList, bool setToValue)
+        {
+            for (var index = 0; index < targetList.Items.Count; index++)
+            {
+                targetList.SetItemChecked(index, setToValue);
+            }
+        }
+
+        #endregion
+
+        #region Events
+
+        private void saveBtn_Click(object sender, EventArgs e)
+        {
+            if (UserLoginBox.Text.Length == 0 || UserPasswordBox.Text.Length == 0 || GoogleApiBox.Text.Length == 0)
+            {
+                MessageBox.Show(
+                    @"You haven't complete entering your basic information yet." + Environment.NewLine +
+                    @"Either Username, Password or Google API key is empty. Please complete them before saving.",
+                    @"Incomplete information", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+            }
+            else
+            {
+                #region Auth Settings
+
+                _setting.Auth.AuthType = authTypeCb.Text == @"Google" ? AuthType.Google : AuthType.Ptc;
+                if (_setting.Auth.AuthType == AuthType.Google)
+                {
+                    _setting.Auth.GoogleUsername = UserLoginBox.Text;
+                    _setting.Auth.GooglePassword = UserPasswordBox.Text;
+                    _setting.Auth.PtcUsername = "";
+                    _setting.Auth.PtcPassword = "";
+                }
+                else
+                {
+                    _setting.Auth.GoogleUsername = "";
+                    _setting.Auth.GooglePassword = "";
+                    _setting.Auth.PtcUsername = UserLoginBox.Text;
+                    _setting.Auth.PtcPassword = UserPasswordBox.Text;
+                }
+
+                _setting.Auth.GoogleApiKey = GoogleApiBox.Text;
+
+                _setting.Auth.UseProxy = useProxyCb.Checked;
+                _setting.Auth.UseProxyHost = proxyHostTb.Text;
+                _setting.Auth.UseProxyPort = proxyPortTb.Text;
+                _setting.Auth.UseProxyAuthentication = useProxyAuthCb.Checked;
+                _setting.Auth.UseProxyUsername = proxyUserTb.Text;
+                _setting.Auth.UseProxyPassword = proxyPwTb.Text;
+
+                _setting.Auth.DevicePackageName = "custom";
+                _setting.Auth.DeviceId = DeviceIdTb.Text;
+                _setting.Auth.AndroidBoardName = AndroidBoardNameTb.Text;
+                _setting.Auth.AndroidBootloader = AndroidBootloaderTb.Text;
+                _setting.Auth.DeviceBrand = DeviceBrandTb.Text;
+                _setting.Auth.DeviceModel = DeviceModelTb.Text;
+                _setting.Auth.DeviceModelIdentifier = DeviceModelIdentifierTb.Text;
+                _setting.Auth.DeviceModelBoot = DeviceModelBootTb.Text;
+                _setting.Auth.HardwareManufacturer = HardwareManufacturerTb.Text;
+                _setting.Auth.HardwareModel = HardwareModelTb.Text;
+                _setting.Auth.FirmwareBrand = FirmwareBrandTb.Text;
+                _setting.Auth.FirmwareTags = FirmwareTagsTb.Text;
+                _setting.Auth.FirmwareType = FirmwareTypeTb.Text;
+                _setting.Auth.FirmwareFingerprint = FirmwareFingerprintTb.Text;
+
+                _setting.Auth.Save(AuthFilePath);
+
+                #endregion
+
+                #region Bot Settings
+
+                _setting.TranslationLanguageCode = cbLanguage.Text;
+
+                #region Location
+
+                _setting.DefaultLatitude = ConvertStringToDouble(tbLatitude.Text);
+                _setting.DefaultLongitude = ConvertStringToDouble(tbLongitude.Text);
+                _setting.WalkingSpeedInKilometerPerHour = ConvertStringToInt(tbWalkingSpeed.Text);
+
+                #endregion
+
+                #region Pokemon
+
+                #region Catch
+
+                _setting.CatchPokemon = cbCatchPoke.Checked;
+                _setting.UseEggIncubators = cbUseEggIncubators.Checked;
+                _setting.MaxBerriesToUsePerPokemon = ConvertStringToInt(tBMaxBerriesToUsePerPokemon.Text);
+                _setting.MaxPokeballsPerPokemon = ConvertStringToInt(tbMaxPokeballsPerPokemon.Text);
+                _setting.PokemonsToIgnore = ConvertClbToList(clbIgnore);
+                _setting.AutoFavoritePokemon = cbAutoFavoritePokemon.Checked;
+                _setting.FavoriteMinIvPercentage = ConvertStringToFloat(tbFavoriteMinIvPercentage.Text);
+
+                _setting.UseBerriesMinCp = ConvertStringToInt(tbUseBerriesMinCp.Text);
+                _setting.UseBerriesMinIv = ConvertStringToFloat(tbUseBerriesMinIv.Text);
+                _setting.UseBerriesBelowCatchProbability = ConvertStringToDouble(tbUseBerriesBelowCatchProbability.Text);
+                _setting.UseBerriesOperator = cbUseBerriesOperator.SelectedIndex == 0 ? "and" : "or";
+
+                _setting.UseGreatBallAboveCp = ConvertStringToInt(tbUseGreatBallAboveCp.Text);
+                _setting.UseUltraBallAboveCp = ConvertStringToInt(tbUseUltraBallAboveCp.Text);
+                _setting.UseMasterBallAboveCp = ConvertStringToInt(tbUseMasterBallAboveCp.Text);
+                _setting.UseGreatBallAboveIv = ConvertStringToDouble(tbUseGreatBallAboveIv.Text);
+                _setting.UseUltraBallAboveIv = ConvertStringToDouble(tbUseUltraBallAboveIv.Text);
+                _setting.UseGreatBallBelowCatchProbability =
+                    ConvertStringToDouble(tbUseGreatBallBelowCatchProbability.Text);
+                _setting.UseUltraBallBelowCatchProbability =
+                    ConvertStringToDouble(tbUseUltraBallBelowCatchProbability.Text);
+                _setting.UseMasterBallBelowCatchProbability =
+                    ConvertStringToDouble(tbUseMasterBallBelowCatchProbability.Text);
+
+                #endregion
+
+                #region Transfer
+
+                _setting.PrioritizeIvOverCp = cbPrioritizeIvOverCp.Checked;
+                _setting.KeepMinCp = ConvertStringToInt(tbKeepMinCp.Text);
+                _setting.KeepMinIvPercentage = ConvertStringToFloat(tbKeepMinIV.Text);
+                _setting.KeepMinLvl = ConvertStringToInt(tbKeepMinLvl.Text);
+                _setting.KeepMinOperator = cbKeepMinOperator.SelectedIndex == 0 ? "and" : "or";
+                _setting.TransferWeakPokemon = cbTransferWeakPokemon.Checked;
+                _setting.TransferDuplicatePokemon = cbTransferDuplicatePokemon.Checked;
+                _setting.TransferDuplicatePokemonOnCapture = cbTransferDuplicatePokemonOnCapture.Checked;
+
+                _setting.KeepMinDuplicatePokemon = ConvertStringToInt(tbKeepMinDuplicatePokemon.Text);
+                _setting.UseKeepMinLvl = cbUseKeepMinLvl.Checked;
+                _setting.PokemonsNotToTransfer = ConvertClbToList(clbTransfer);
+
+                #endregion
+
+                #region PowerUp
+
+                _setting.UseLevelUpList = true;
+
+                _setting.AutomaticallyLevelUpPokemon = cbAutoPowerUp.Checked;
+                _setting.OnlyUpgradeFavorites = cbPowerUpFav.Checked;
+                _setting.LevelUpByCPorIv = cbPowerUpType.SelectedIndex == 0 ? "iv" : "cp";
+                _setting.UpgradePokemonMinimumStatsOperator = cbPowerUpCondiction.SelectedIndex == 0 ? "and" : "or";
+                _setting.GetMinStarDustForLevelUp = ConvertStringToInt(cbPowerUpMinStarDust.Text);
+                _setting.UpgradePokemonIvMinimum = ConvertStringToFloat(tbPowerUpMinIV.Text);
+                _setting.UpgradePokemonCpMinimum = ConvertStringToFloat(tbPowerUpMinCP.Text);
+                _setting.PokemonsToLevelUp = ConvertClbToList(clbPowerUp);
+
+                #endregion
+
+                #region Evo
+
+                _setting.EvolveAllPokemonAboveIv = cbEvoAllAboveIV.Checked;
+                _setting.EvolveAboveIvValue = ConvertStringToFloat(tbEvoAboveIV.Text);
+                _setting.EvolveAllPokemonWithEnoughCandy = cbEvolveAllPokemonWithEnoughCandy.Checked;
+                _setting.KeepPokemonsThatCanEvolve = cbKeepPokemonsThatCanEvolve.Checked;
+                _setting.UseLuckyEggsWhileEvolving = cbUseLuckyEggsWhileEvolving.Checked;
+                _setting.EvolveKeptPokemonsAtStorageUsagePercentage =
+                    ConvertStringToDouble(tbEvolveKeptPokemonsAtStorageUsagePercentage.Text);
+                _setting.UseLuckyEggsMinPokemonAmount = ConvertStringToInt(tbUseLuckyEggsMinPokemonAmount.Text);
+                _setting.PokemonsToEvolve = ConvertClbToList(clbEvolve);
+
+                #endregion
+
+                #endregion
+
+                #region Item
+
+                _setting.UseLuckyEggConstantly = cbUseLuckyEggConstantly.Checked;
+                _setting.UseIncenseConstantly = cbUseIncenseConstantly.Checked;
+                _setting.TotalAmountOfPokeballsToKeep = ConvertStringToInt(tbTotalAmountOfPokeballsToKeep.Text);
+                _setting.TotalAmountOfPotionsToKeep = ConvertStringToInt(tbTotalAmountOfPotionsToKeep.Text);
+                _setting.TotalAmountOfRevivesToKeep = ConvertStringToInt(tbTotalAmountOfRevivesToKeep.Text);
+                _setting.TotalAmountOfBerriesToKeep = ConvertStringToInt(tbTotalAmountOfBerriesToKeep.Text);
+                _setting.VerboseRecycling = cbVerboseRecycling.Checked;
+                _setting.RecycleInventoryAtUsagePercentage =
+                    ConvertStringToDouble(tbRecycleInventoryAtUsagePercentage.Text);
+
+                #endregion
+
+                #region Advanced Settings
+
+                _setting.DisableHumanWalking = cbDisableHumanWalking.Checked;
+                _setting.UseWalkingSpeedVariant = cbUseWalkingSpeedVariant.Checked;
+                _setting.WalkingSpeedVariant = ConvertStringToDouble(tbWalkingSpeedVariantInKilometerPerHour.Text);
+                _setting.ShowVariantWalking = cbShowWalkingSpeed.Checked;
+                _setting.MaxSpawnLocationOffset = ConvertStringToInt(tbMaxSpawnLocationOffset.Text);
+                _setting.MaxTravelDistanceInMeters = ConvertStringToInt(tbMaxTravelDistanceInMeters.Text);
+
+                _setting.DelayBetweenPlayerActions = ConvertStringToInt(tbDelayBetweenPlayerActions.Text);
+                _setting.DelayBetweenPokemonCatch = ConvertStringToInt(tbDelayBetweenPokemonCatch.Text);
+                _setting.DelayBetweenRecycle = ConvertStringToInt(tbDelayBetweenRecycle.Text);
+
+                _setting.RandomizeRecycle = cbRandomizeRecycle.Checked;
+                _setting.RandomRecycleValue = ConvertStringToInt(tbRandomRecycleValue.Text);
+
+                _setting.EnableHumanizedThrows = cbEnableHumanizedThrows.Checked;
+                _setting.NiceThrowChance = ConvertStringToInt(tbNiceThrowChance.Text);
+                _setting.GreatThrowChance = ConvertStringToInt(tbGreatThrowChance.Text);
+                _setting.ExcellentThrowChance = ConvertStringToInt(tbExcellentThrowChance.Text);
+                _setting.CurveThrowChance = ConvertStringToInt(tbCurveThrowChance.Text);
+                _setting.ForceGreatThrowOverIv = ConvertStringToDouble(tbForceGreatThrowOverIv.Text);
+                _setting.ForceExcellentThrowOverIv = ConvertStringToDouble(tbForceExcellentThrowOverIv.Text);
+                _setting.ForceGreatThrowOverCp = ConvertStringToInt(tbForceGreatThrowOverCp.Text);
+                _setting.ForceExcellentThrowOverCp = ConvertStringToInt(tbForceExcellentThrowOverCp.Text);
+
+                #endregion
+
+                _setting.Save(ConfigFilePath);
+
+                #endregion
+
+                Application.Restart();
+                Close();
+            }
+        }
+
+        private void cancelBtn_Click(object sender, EventArgs e)
+        {
+            Close();
+        }
+
+        private void trackBar_Scroll(object sender, EventArgs e)
+        {
+            gMapCtrl.Zoom = trackBar.Value;
+        }
+
+        private void gMapCtrl_MouseUp(object sender, MouseEventArgs e)
+        {
+            UpdateLocationInfo();
+        }
+
+        private void gMapCtrl_OnMapZoomChanged()
+        {
+            UpdateLocationInfo();
+        }
+
+        private void ResetLocationBtn_Click(object sender, EventArgs e)
+        {
+            gMapCtrl.Zoom = trackBar.Value = DefaultZoomLevel;
+            UpdateMapLocation(_setting.DefaultLatitude, _setting.DefaultLongitude);
+        }
+
+        private void gMapCtrl_MouseClick(object sender, MouseEventArgs e)
+        {
+            var localCoordinates = e.Location;
+            gMapCtrl.Position = gMapCtrl.FromLocalToLatLng(localCoordinates.X, localCoordinates.Y);
+        }
+
+        private void latitudeText_Leave(object sender, EventArgs e)
+        {
+            UpdateMapLocation(ConvertStringToDouble(tbLatitude.Text), ConvertStringToDouble(tbLongitude.Text));
+        }
+
+        private void longitudeText_Leave(object sender, EventArgs e)
+        {
+            UpdateMapLocation(ConvertStringToDouble(tbLatitude.Text), ConvertStringToDouble(tbLongitude.Text));
+        }
+
+        private void AdressBox_Enter(object sender, EventArgs e)
+        {
+            if (AdressBox.Text != @"Enter an address or a coordinate")
+            {
+                return;
+            }
+            AdressBox.Text = "";
+        }
+
+        private void AdressBox_Leave(object sender, EventArgs e)
+        {
+            if (AdressBox.Text != string.Empty)
+            {
+                return;
+            }
+            AdressBox.Text = @"Enter an address or a coordinate";
+        }
+
+        private void AdressBox_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar != (char) Keys.Enter)
+            {
+                return;
+            }
+            gMapCtrl.SetPositionByKeywords(AdressBox.Text);
+            gMapCtrl.Zoom = DefaultZoomLevel;
+            UpdateLocationInfo();
+        }
+
+        private void FindAdressBtn_Click(object sender, EventArgs e)
+        {
+            gMapCtrl.SetPositionByKeywords(AdressBox.Text);
+            gMapCtrl.Zoom = DefaultZoomLevel;
+            UpdateLocationInfo();
+        }
+
+        private void RandomIDBtn_Click(object sender, EventArgs e)
+        {
+            DeviceIdTb.Text = _deviceHelper.RandomString(16, "0123456789abcdef");
+        }
+
+        private void RandomDeviceBtn_Click(object sender, EventArgs e)
+        {
+            PopulateDevice();
+        }
+
+        private void useProxyCb_CheckedChanged(object sender, EventArgs e)
+        {
+            ToggleProxyCtrls();
+        }
+
+        private void useProxyAuthCb_CheckedChanged(object sender, EventArgs e)
+        {
+            ToggleProxyCtrls();
+        }
+
+        private void deviceTypeCb_SelectionChangeCommitted(object sender, EventArgs e)
+        {
+            PopulateDevice(deviceTypeCb.SelectedIndex);
+        }
+
+        private void cbPowerUpAll_CheckedChanged(object sender, EventArgs e)
+        {
+            ListSelectAllHandler(clbPowerUp, cbPowerUpAll.Checked);
+        }
+
+        private void cbPowerUpType_SelectionChangeCommitted(object sender, EventArgs e)
+        {
+            if (cbPowerUpType.Text.ToLowerInvariant() == "iv")
+            {
+                label31.Visible = true;
+                tbPowerUpMinIV.Visible = true;
+                label30.Visible = false;
+                tbPowerUpMinCP.Visible = false;
+            }
+            else
+            {
+                label31.Visible = false;
+                tbPowerUpMinIV.Visible = false;
+                label30.Visible = true;
+                tbPowerUpMinCP.Visible = true;
+            }
+        }
+
+        private void cbSelectAllEvolve_CheckedChanged(object sender, EventArgs e)
+        {
+            ListSelectAllHandler(clbEvolve, cbEvolveAll.Checked);
+        }
+
+        private void cbSelectAllCatch_CheckedChanged(object sender, EventArgs e)
+        {
+            ListSelectAllHandler(clbIgnore, cbIgnoreAll.Checked);
+        }
+
+        private void cbSelectAllTransfer_CheckedChanged(object sender, EventArgs e)
+        {
+            ListSelectAllHandler(clbTransfer, cbNotTransferAll.Checked);
+        }
+
+        private void enableAdvSettingCb_Click(object sender, EventArgs e)
+        {
+            proxyGb.Visible = _setting.EnableAdvancedSettings = enableAdvSettingCb.Checked;
+            if (enableAdvSettingCb.Checked)
+            {
+                _tabAdvSettingTab.Enabled = true;
+                tabControl.TabPages.Add(_tabAdvSettingTab);
+            }
+            else
+            {
+                _tabAdvSettingTab.Enabled = false;
+                tabControl.TabPages.Remove(_tabAdvSettingTab);
+            }
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Forms/SettingForm.resx b/PokemonGo.RocketBot.Window/Forms/SettingForm.resx
new file mode 100644
index 0000000..7946185
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Forms/SettingForm.resx
@@ -0,0 +1,659 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA
+        IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAB1e3iTdnx5/3Z8
+        ef9wdnP/UVJR/09PT/8zMzP/RkZG/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFCTdXt4/XZ8
+        ef91e3j/SElI/0hISP9QUFD/NTU1/z09Pf8+Pj7/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/XZ8
+        ef92fHn/P0JB/2lpaf8zMzP/Hx8f/3Nzc//09PT/Ly8v/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/WF1a/3Jycv+enp7/a2tr/8bGxv9ISEj/19fX/0VFRf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/1ldW/9RUVH/c3Nz/+np/P/09P7/6urr/1NTU/8hISH/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3V7eP93fXr/IyUk/+rq7P/a2vz/2Nj7/9/f/P/39/n/bGxs/yoqKv9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9JTUv/MTIy/1VVVf9gYGD/9PT8/93d/P/c3Pz/8PD9//39/f+QkJD/Hh4e/05O
+        Tv9QUFD/UFBQ/1BQUP9QUFD/VltY/2pra//9/f3/qKio/4ODg//y8v3/8fH7/2ZmZv9PT0//QEBP/ykp
+        lv8ZGSH/TExM/1BQUP9QUFD/UFBQ/3Z8ef9ESEb/UFBQ/2BgYP8ZGRn/r6+v/87Ozv9ub27/ampq/0ND
+        TP9AQO7/MzO5/xkZIf9PT0//UFBQ/1BQUP92fHn/dnx5/3B1c/9vdXL/b3Vy/y8xMP+wsLD/Li4u/4KC
+        gv8gIFD/QUHw/0BA7v8sLKH/Kysr/09PT/9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef9wdnP/GBka/zIy
+        t/8vL67/Pz/o/0FB7/9BQe//QUHv/xYWQv9MTEz/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/2pv
+        bf8aGjf/PDzb/0FB7/9BQe//QUHv/0FB7/8tLaX/MjIy/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef91e3j/ZWto/xkaNf84OMz/QEDu/0FB7/9BQe//Pz/n/x0dI/9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3V7eP9scW//KSwx/x8fcv85OdP/QUHx/0FB7/8YGD//UVFR/3V7eP12fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef9hZmP/Njk4/x8gPP8bHGH/DAwk/2JlZP11e3iPdXx493Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP93fXr/cnh1/2hta/d0enePAAD//wAA
+        //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA
+        AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAB3fXcNdXt4n3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/1ZYV/9QUFD/UFBQ/1BQUP9PT0//RkZG/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFCfUVFRDXV7eJ92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef9hY2L/T09P/1BQUP9QUFD/T09P/zY2Nv8BAQH/Kioq/1BQUP9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFCfdXt493Z8
+        ef92fHn/dnx5/3Z8ef92fHn/a3Bu/1FRUf9QUFD/UFBQ/1BQUP9RUVH/Hx8f/x8fH/8JCQn/HBwc/09P
+        T/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UPd2fHn/dnx5/3Z8ef92fHn/dXt4/3R6dv9GRkb/HR0d/y8vL/9QUFD/T09P/1BQUP8MDAz/jIyM/7+/
+        v/8TExP/ERER/0pKSv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef93fXr/PkA//wICAv8xMTH/CgoK/w8PD/85OTn/QEBA/wEB
+        Af/Gxsb//Pz8/9nZ2f8jIyP/ERER/1FRUf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/0dLSf8BAQH/eHh4//r6+v+zs7P/AQEB/wAA
+        AP8CAgL/Dw8P//X19f/+/v7//v7+/39/f/8LCwv/UVFR/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3V7eP9cYF7/AgMD/3t7e//7+/v/vLy8/xAQ
+        EP82Njb/v7+//19fX/8FBQX/k5OT//39/f/+/v7/f39//wsLC/9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/eH57/xkaGf9MTEz//f39/7q6
+        uv8GBgb/b29v//n5+f/8/P3//f39/4iIiP8DAwP/ampq//n5+f9/f3//CwsL/1FRUf9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef93fXr/Ghsa/0xM
+        TP/f39//ExMT/3Fxcf/8/P3/9fX9/9vb/P/+/v7//Pz9/7S0tP8PDw//QUFB/21tbf8KCgr/UVFR/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3V7
+        eP9eYmD/AQEB/xoaGv9LS0v//Pz8//j4/v+7u/n//Pz+//v7/v/6+v7//f39/9fX1/8kJCT/AgIC/woK
+        Cv9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3d+ev8rLSz/DAwM/9/f3//39/3/ycn7/+Tk/P/Fxfr/0dH7//Ly/v/39/7//f39/+zs
+        7P9FRUX/AgIC/zExMf9RUVH/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3V7eP92fHn/eH57/0hMSv8NDQ3/19fX//z8/f/Kyvr/8vL+/87O+//8/P7/zMz7/8nJ
+        +v/29v7//f3+//r6+v9ubm7/AgIC/yUlJf9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/ZGpn/0VJR/8kJiX/CwsL/wICAv8kJCT/6+vr//z8/f/d3fz/8vL+/8LC
+        +v/V1fv//Pz+/9XV+////////v7+//39/f+UlJT/BQUF/xkZGf9OTk7/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/0pOTP8AAAD/EhIS/0hISP+Hh4f/v7+//ysrK/9GRkb/+vr6//7+
+        /v/Pz/v/8vL9/9LS+//Ozvv/8PD9//39/f/9/f3//f39//v7+/+srKz/AAAB/xAQEP9LS0v/T09P/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/cHVy/w8QD/9CQkL/+fn5//39/f/8/Pz/29vb/xIS
+        Ev9ycnL//f39//39/v/Pz/v/0tL7//7+/v/q6ur/a2tr/zIyMv9BQUH/rq6u/zg4Of8dHWP/CQki/wsL
+        C/9HR0f/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP91e3j/ZWpo/wcHB/9paWn//f39//39
+        /f/7+/v/uLi4/wMDA/+bm5v//f39//7+///9/f7/9vb2/y4uLv8WFhb/e3t7/09PT/8BAQH/GBhW/0JC
+        8/89PeD/DAwq/wgICf9ERET/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/VVpY/wIC
+        Av+AgID/wsLC/8HBwf+/v7//XFxc/wcHB//FxcX//v7+//39/f+srKz/BQUF/83Nzf9ubm7/yMjI/2Bg
+        Yf8KCiX/QUHy/0BA7f8/P+X/Dw8w/wcHB/9GRkb/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/Q0dF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xgZGP/g4OD//f39/5SUlP8bGxv/zc7N/wMD
+        A/9tbW3/nJyd/wQEDv9AQOv/QUHu/0BA7f8/P+T/Dg4q/wsLDP9NTU3/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/dnx5/3Z8ef92fHn/a3Fu/2pvbf9qb23/am9t/2lvbP9pb2z/FhcX/y4uLv/x8fH/wMDA/wAA
+        AP+wsLD/ycrJ/+rq6v87Ozz/Dw84/0JC9P9BQe//QUHv/0BA7f89Pdv/BgYV/x4eHv9RUVH/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP9rcW7/DAwM/1ZW
+        Vv+5ubn/BAQG/wMDA/83Nzf/HBwc/wMDDP80NL//QEDu/0FB7/9BQe//QUHv/0FB7v8uLqX/AAAA/z4+
+        Pv9PT0//UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP9gZWP/BgYG/wYGDf82NsP/LCyh/xsbYP8gIHX/OjrU/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0JC
+        8/8RET3/EhIS/1FRUf9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef9SVlT/AQEB/yYmi/9BQfD/QkLy/0FB8f9AQO3/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QEDt/zMzuf8AAAD/QUFB/09PT/9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3d9ev9FSUb/AQEC/ysrm/9BQfD/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QkLy/w0NLP8gICD/UVFR/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3d9ev86PTz/AQED/y0tn/9BQfD/QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//JSWI/wcHCP9PT0//UFBQ/1BQUP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3d9ev8zNjT/AQED/ysr
+        mP9BQfH/QEDu/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA7f85OdD/AAAA/0FBQf9PT0//UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8
+        ef84Ozn/AAAB/x0dZ/9AQOz/QEDu/0FB7/9BQe//QUHv/0FB7/9BQe//QUHu/0FB8f8JCR//LCwt/1BQ
+        UP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3d9ev9NUU//BwcH/wkJIf8uLqr/QUHy/0FB7v9AQO7/QUHv/0FB7/9BQe//QkL0/xYW
+        VP8aGhr/UlJS/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef9scm//Ki0s/wEBAf8MDCv/KCiU/zw82/9CQvT/QUHy/0BA
+        7f9AQO7/IyN//w8PD/9RUVH/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP93fnr/Zmto/zI1NP8JCgr/AQEE/w0N
+        MP8eHm7/Ly+t/zg4zP8mJof/BgYH/09PTv9obGr/dXt493Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/d316/3R6
+        d/9ZXlz/Njk4/xscHP8ICAn/AAAA/wAAAP8CAgL/XWBe/3V8efd1e3iXdnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3V7eP93fXr/eX98/3R6d/9rcG7/YGRi/1leW/9zeXb/dXt4l3N7ewl1e3ibdXx433Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3V7eP91e3j/dHp333V7eJtze3sJAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAdnx2A3V6dyd1e3iRdnx5/3V8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP93fXr/XmFg/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/05O
+        Tv9OTk7/UFBQ/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQkVBQUCdRUVEDdXt4KXV7
+        eL91e3j7dnx5/3Z8ef92e3n/dXx5/3Z8ef91fHn/dXx5/3Z8ef9rb2z/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9PT0//TExM/ygoKP8eHh7/RkZG/1FRUf9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ+1BQ
+        UL9QUFApdXt4iXV8eP12fHn/dnx5/3Z8ef92fHn/dnx5/3V8eP92fHn/dnx5/3B1c/9WV1f/UFBQ/1BQ
+        UP9PT0//UFBQ/09PT/9PT0//QkJC/woKCv8CAgL/FBQU/0FBQf9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP1QUFCJdXt47XZ8ef92fHn/dnx5/3V8ef92fHn/dnx5/3Z8ef91e3j/c3h2/1td
+        XP9QUFD/T09P/09PT/9QUFD/UFBQ/09PT/9RUVH/MTEx/wAAAP8XFxf/BwcH/wgICP8yMjL/T09P/1BQ
+        UP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFDtdnx5/3Z8ef91fHn/dnx5/3Z8ef92e3n/dXx5/3Z8
+        ef92fXn/ZGdl/05OT/9FRUX/TExM/1FRUf9PT0//UFBQ/09PT/9TU1P/Hx8f/wMDA/+IiIj/Z2dn/wsL
+        C/8FBQX/Li4u/01NTf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3V8eP9wdnP/RUVF/x0dHf8NDQ3/Ghoa/z4+Pv9SUlL/T09P/09PT/9QUFD/Dw8P/xYW
+        Fv/Hx8f/6enp/3p6ev8ODg7/BgYG/yQkJP9MTEz/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dXx5/3Z8
+        ef92fHn/dnx5/3V8ef92fHn/dnx5/3B1cv8/Pz//BQUE/wUFBf8fHx//BwcH/wMDA/8eHh7/RERE/0xM
+        TP9DQ0P/AgIC/z8/P//f39//+vr6//7+/v+rq6v/Ghoa/wAAAP8eHh7/UlJS/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3Z8ef91fHn/dnx5/3Z8ef91e3j/c3l2/0FDQv8KCgr/DAwM/2BgYP+9vb3/eHh4/xoa
+        Gv8BAQH/DQ0N/xgYGP8aGhr/AAAA/2RkZP/w8PD//Pz8//39/f/+/v7/kJCQ/wQEBP8QEBD/UlJS/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8ef92fHn/dnx5/3V7eP95f3z/TVFP/woLCv8BAQH/fn5+/+jo
+        6P/7+/v/2dnZ/zg4OP8CAgL/AAAA/wAAAP8DAwP/CgoK/4+Pj//7+/v//v7+//7+/v/+/v7/tbW1/wgI
+        CP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dXx5/3Z8ef92fHn/dXt4/3d9ev9cYF7/BQUF/w4O
+        Dv+CgoL//Pz8//j4+P/Kysr/JSUl/wUFBf8kJCT/jIyM/5WVlf8oKCj/AwMD/0xMTP/Nzc3//Pz8//39
+        /f/+/v7/tra2/wgICP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91fHn/dnx5/2tx
+        b/8hIiH/BwcH/2hoaP/q6ur/9/f3/7Ozs/8uLi7/CgoK/1hYWP/FxcX//Pz9//r6+v+8vLz/Li4u/wEB
+        Af83Nzf/xsbG//z8/P/+/v7/t7e3/wgICP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8
+        ef92fHn/dnx5/1FVU/8KCgr/OTk5/9ra2v/+/v7/yMjI/y0tLf8BAQH/cXFx/+bm5v/7+/v//f3+//39
+        /f/8/Pz/xcXF/0FBQf8CAgL/MDAw/7CwsP/6+vr/tbW1/wgICP8QEBD/UlJS/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dXx5/3Z8ef92fHn/dnx5/1BUUv8JCgr/ODg4/9ra2v/m5ub/Kioq/wsLC/9wcHD//f39//z8
+        /f/39/7/2dn7//b2/v/+/v7//Pz8/+vr6/9ycnL/CwsL/wwMDP+AgID/q6ur/wgICP8QEBD/UlJS/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91fHn/dnx4/250cf8lJyb/CAgI/2ZmZv9hYWH/BwcH/2Rk
+        ZP/q6un//Pz9//f3/v/Q0Pv/29v8//z8///+/v7//v7+//39/f/29vb/goKC/xoaGv8HBwf/PT09/wYG
+        Bv8PDw//UlJS/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V8ef92fHn/dXt4/3h+e/9bYF3/AQEB/wwM
+        DP8JCQn/OTk5/9nZ2f/8/P3/+fn+/8TE+v/Bwfr//Pz+//39/v/4+P7/9PT9//7+/v/9/f3/8/Pz/6Ki
+        ov8bGxv/AQEB/wEBAf8QEBD/VFRU/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dXx5/3Z8ef92fHn/dnx5/3V7
+        eP96gH3/MjU0/wQEBP8JCQn/u7y8//39/f/5+f3/y8v7/9ra/P/Ly/r/z8/6/9bW+//Cwvr/7Oz9//j4
+        /v/8/P7//f39//z8/P/X19f/NjY2/wYGBv8DAwP/NTU1/05OTv9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef91fHn/dXt4/3V7eP92fHj/VlpY/wYGBv8kJCT/+fn6//7+/v/y8v3/t7f5//X1/v/8/P7/tLT4/9jY
+        +//39/7/7e39/8fH+v/i4vz//v7///39/f/8/Pz/09PT/1lZWf8KCgr/CAgI/ysrK/9MTEz/T09P/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3V7eP90enf/dXt4/3h+e/97gX7/Y2hm/xAREP8KCgr/p6en//39/f/8/P7/2Nj7/8rK
+        +v/y8v3/wMD6//Hx/v/5+f7/w8P6/9/f/P/Bwfr/7Oz9//7+/v/+/v7//Pz8/+Xl5f9zc3P/AQEB/wYG
+        Bv8hISH/UFBQ/1BQUP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3R6d/9vdXL/YGZj/0tPTf8xNDP/FBUU/wUFBf8EBAT/Gxsb/6ur
+        q//39/j//Pz+/+Xl/P/Kyvr/6ur9/+7u/f+ysvj/zs77//r6/v/4+P7/w8P6//z8/v///////v7+//39
+        /f/9/f3/kpKS/xoaGv8BAQH/GBgY/0RERP9QUFD/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/bXNw/z1AP/8jJSP/Dg8O/wIDAv8AAAD/CgoK/ygp
+        KP9ERET/BgYG/zIyMv/Jycn//Pz9//39/v/+/v7/7u79/8nJ+v/l5f3/y8v6/9LS+//g4Pz/zc37//v7
+        /v/9/f3//f39//39/f/7+/v/9PT0/6enp/8uLi7/AQEB/xQUFP8+Pj7/UVFR/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/XmNg/wwNDP8AAAD/EhIS/0FB
+        Qf94eHj/tLW1/9LS0v/g4OD/W1tb/wICAv9ERET/9vb2//39/v/+/v7/5eX9/8XF+v/39/7/6en9/76+
+        +f/W1vv/8/P9//39/f/9/f3//v7+//7+/v/+/v7/+/v7//b29v+np6f/AAAA/wEBAv8MDAz/QUFB/1FR
+        Uf9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/cnh1/zU4
+        N/8DBAP/MjIy/9HR0f/8/Pz//v7+//39/f/6+vr/5OTk/1RUVP8EBAT/ZWVl/+zs7P/9/f3//f3+/9zc
+        +//Kyvr/zc36/+Hh/P/+/v7/9/f4/9PT0/+Kior/S0tL/0lJSf9ubm7/y8vL/729vf8sLC3/DQ0r/xMT
+        QP8CAgn/CAgI/zQ0NP9PT0//T09P/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/2txbv8nKSj/BAQE/1VVVf/j4+P//f39//7+/v/+/v7//f39/83Nzf81NTX/Dg4O/4WF
+        hf/x8fH//f39//39/v/q6v3/6ur9//v7/v/9/f3/tLS0/zMzM/8DAwP/BAQE/wUFBf8AAAD/JSUl/ysr
+        LP8QEDP/NjbE/zw82v8dHWn/AAAB/wkJCf8xMTH/UVFR/09PT/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dXt4/3Z8ef9pbmv/DxAQ/wgICP9sbGz//f39//v7+//8/Pz/+/v7//n5
+        +f+5ubn/BgYG/xcXF/+qqqr//f39//39/f/9/f///f3+//39/f/t7e3/KCgo/wAAAP8xMTH/rKys/7Ky
+        sv9fX1//AAAA/wICA/8oKI//QkL1/0BA7v8/P+j/Ghpb/wAAAv8GBgb/MzMz/1BQUP9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3V7eP93fXr/XWJf/xITE/8AAAD/hISE/97e
+        3v/g4OD/4ODg/9/f3//e3t7/hYWF/wcHB/8QEBD/ycnJ//39/f/+/v7//v7+//39/f+Pj4//AQEB/0lJ
+        Sf/b29v/qKio/6mpqf/u7u7/c3Nz/wMDA/8SEkP/Q0P3/0BA7f9AQOz/QEDr/yMjev8FBQ7/BQUF/y4u
+        Lv9OTk7/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91e3j/dXt4/0xQ
+        Tv8KCwv/ERER/0BAQP9CQkL/QkJC/0JCQv8/Pz//OTk5/woKCv8CAgL/QEBA/9XV1f/9/f3//v7+//39
+        /f9kZGT/CgoK/5CQkP+/wMD/CQkJ/xISEv+qqqr/xMTF/xYWFv8ICBr/Pz/r/0FB7/9BQe7/QUHu/z8/
+        5v8kJHf/AQEC/wkJCf80NDT/UVFR/09PT/9QUFD/T09P/1BQUP9QUFD/T09P/1BQUP9QUFD/dnt5/3Z8
+        ef92fHn/dXt4/3R6d/9AQ0H/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CAgI/15e
+        Xv/o6Oj/+/v7//39/f9gYGD/DAwM/5iYmP+/v7//AQEB/wsLC/+mpqb/zc3N/xwcHP8HBxf/Pz/p/0FB
+        7/9BQe7/QEDu/0BA7v9BQev/HR1c/wAAAf8JCQn/R0dH/1FRUf9PT0//UFBQ/1BQUP9PT0//UFBQ/1BQ
+        UP9PT0//dnx5/3Z8ef92fHn/dnx5/3Z8ef94fnv/ZWpn/2BlY/9gZWP/YGVj/2BlY/9gZWP/YGVj/2Fm
+        Y/9dYmD/FBUU/wAAAP9jY2P/9fX1//z8/P+Pj4//AAAA/05OTv/f39//uru6/7m6uf/v7+//dnZ2/wAA
+        AP8SEkT/Q0P2/0BA7f9BQe7/QUHv/0FB7/8/P+z/Pz/k/xoaXP8BAQX/FhYW/0pKSv9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dXt5/3Z8ef91e3j/d357/3h/fP94f3v/eH98/3h/
+        fP94f3v/eH98/3h+e/96gH3/VVpX/w8QEP8FBQX/mZmZ//n5+f/V1dX/AwME/wkJCf9bW1v/srKy/7i4
+        uP+EhIT/Dw8Q/wQED/8pKZr/QkL0/0BA7v9BQe//QEDu/0FB7/9BQe//QUHv/zc3yf8ODjD/BAQE/y0t
+        Lf9PT0//T09P/1BQUP9QUFD/T09P/1BQUP9QUFD/dnt5/3Z8ef92fHn/dXx5/3V8ef91e3j/dXt4/3V7
+        eP91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP91e3j/dHp3/0hMSv8ICQn/IyMj/62trf97e3v/AgIF/wIC
+        Bv8CAgL/GRkZ/xwcHP8ICAn/AgIJ/x0dbP8+PuT/QEDt/0BA7v9BQe7/QUHv/0BA7/9BQe7/QEDu/0JC
+        8v8rK5r/AAAA/w8PD/9GRkb/T09P/1BQUP9PT0//UFBQ/1BQUP9PT0//dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92e3j/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dnx5/3Z8ef92fHn/dXt4/3d9ev9FSEf/BAQE/wYG
+        B/8EBAn/KCiN/zQ0wf8bG2T/Dw8z/w8PMv8VFUv/Ly+t/0FB8P9AQO7/QUHv/0FB7/9BQe7/QUHv/0FB
+        7/9BQe7/QUHv/0BA7f9DQ/X/FBRG/wAAAP8iIiL/U1NT/09PT/9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/dXt5/3Z8ef92fHn/dnx5/3Z8ef92e3n/dnx5/3Z8ef92e3n/dnx5/3Z8ef92fHn/dXt4/3Z7
+        ef92fHn/LzEw/wICAv8EBA7/OTnN/0JC9v9AQO//PDzd/zs72/8/P+n/QkLz/0FB7v9AQO7/QEDu/0FB
+        7/9BQe//QEDu/0FB7/9BQe//QEDu/0BA7v9BQfL/Ly+o/wUFEP8HBwf/SkpK/1BQUP9PT0//T09P/1BQ
+        UP9QUFD/dnt5/3Z8ef92fHn/dXx5/3V8ef91e3j/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8
+        ef92fHj/dXt4/3V7eP91e3j/a3Bt/yQmJv8AAAD/ExNI/zs72P9AQO7/QEDv/0FB7/9AQO//QEDu/0BA
+        7v9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA7/9AQOz/PT3g/xUVSf8AAAD/MTEx/1FR
+        Uf9PT0//UFBQ/1BQUP9PT0//dnx5/3Z8ef92fHn/dnx5/3Z8ef92e3j/dnt5/3Z8ef92e3n/dnt5/3Z8
+        ef92e3n/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/2txbv8jJSX/AQEB/xQURv86OtP/QUHu/0BA
+        7v9BQe7/QUHv/0FB7/9BQe7/QUHv/0FB7/9BQe7/QUHv/0FB7/9BQe7/QUHv/0FB7/9BQe7/QUHv/ysr
+        nP8FBRD/FBQU/0pKSv9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dXt5/3Z8ef92fHn/dnx5/3Z8
+        ef92e3n/dnx5/3Z8ef92e3n/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z9ef9nbWr/FRYW/wEB
+        Av8VFUn/Pj7i/0FB8P9AQO7/QEDu/0FB7/9BQe//QEDu/0FB7/9BQe//QEDu/0FB7/9BQe//QEDu/0FB
+        7/9BQe//QUHv/zo60/8ODi//CQkJ/zw8PP9QUFD/T09P/1BQUP9QUFD/dnt5/3Z8ef92fHn/dXx5/3V8
+        ef91e3j/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ef92fHj/dXt4/3Z8ef92fHj/dXt4/3V7
+        eP92fXr/Wl9c/xMUFP8BAQL/Gxtc/z4+4v9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA7/9BQe7/QUHv/0BA
+        7/9BQe7/QUHv/0BA7/9BQe7/QEDu/0FB7/8cHGb/AgID/yoqK/9PT0//UFBQ/1BQUP9PT0//dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z7ef92e3n/dnx5/3Z7
+        ef92e3n/dnx5/3Z7ef91e3j/dn15/11iX/8XGBj/AQEC/xYWSf85OtD/QUHu/0BA7v9AQO7/QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QEDu/0JC9P8wMK//AAAA/xkZGf9MTEz/T09P/1BQ
+        UP9QUFD/dnt5/3V7ef92fHn/dXt5/3Z8ef92fHn/dnx4/3Z8ef92fHn/dnx4/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ef9aX1z/EBIR/wEBAv8SEj7/NzfG/0FB
+        8f9AQO3/QUHu/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QEDu/0FB8P89Pd7/BAQN/w0N
+        Df9FRUX/T09P/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8eP92fHn/dnx5/3Z8
+        eP92fHn/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dXt4/3V7eP92fHn/WV1b/xQV
+        Ff8AAAH/DQ0v/ywsof9CQvH/QEDu/0BA7f9BQe//QUHv/0FB7v9BQe//QUHv/0FB7v9BQe//QUHu/0BA
+        7f9DQ/X/EBA5/wQEBf87Ozv/UVFR/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z7ef92e3n/dnx5/3Z7ef92e3n/dnx5/3Z7ef92e3n/dnx5/3Z7
+        ef91e3j/dn15/2pwbf8sLi3/BQUF/wEBBP8TE0b/NjbE/z8/6v9BQe//QUHu/0BA7v9AQO7/QUHv/0FB
+        7/9BQe//QUHv/0BA7f9DQ/n/ICB2/wAAAP8qKir/U1NT/09PT/9QUFD/dnt5/3V7ef92fHn/dXt5/3Z8
+        ef92fHn/dnx4/3Z8ef92fHn/dnx4/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ev9xd3T/QURC/xMUFP8BAQH/CQkh/x0dbf8xMbX/QEDs/0JC
+        9P9BQfH/QEDt/0BA7f9AQO7/QUHv/0BA7v9CQvT/Kiqb/wEBBP8fHx//U1NT/09PT/9PT0//dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8eP92fHn/dnx5/3Z8eP92fHn/dnt5/3Z8ef92e3n/dnt5/3Z8
+        ef92e3n/dnt5/3Z8ef92e3n/dnt5/3Z8ef92e3n/dnx5/3V7eP92fHn/dHp3/2FnZP8yNTT/AgID/wEB
+        Bf8HBxz/GBhX/ysrn/86Otf/Q0P3/0ND+P9CQvL/QEDt/0BA6/9AQO7/MTG1/wQEEP8UFBX/UlJS/09P
+        T/9RUlH/dnx5/3Z8ef92fHn/dnx5/3V8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8
+        ef92e3j/dXt4/3Z8ef92e3j/dXt4/3Z8ef92e3j/dXt4/3Z8ef92e3j/dnx5/3Z7ef92fHn/dXt4/3V7
+        eP96gX3/ZGlm/zc6Of8XGBj/BgYH/wAAAP8DAwj/ERE9/yAgdf8uLqj/OTnR/z093/8+PuX/NTW//wgI
+        G/8LCwz/T09P/1JTU/9qb2z/dXx5/3Z8ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXx5/3Z8ef92fHn/dXx5/3Z8ef92fHn/dXx5/3Z8ef92fHn/dXx5/3Z8ef92fHn/dnx5/3Z8
+        ef91fHn/dnx5/3V7eP91e3j/d316/3Z8ef9obmv/SExK/y0vL/8XFxf/BAUG/wAAAP8DAwr/Cwsp/xIS
+        Qf8WFlD/FRVL/wQEDP8GBgf/Tk5O/2RnZv91e3j/dXt47XZ8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        ef92fHn/dnx5/3V7ef92fHn/dXt4/3Z7ef91e3j/dXt4/3Z7ef91e3j/dXt4/3Z7ef91e3j/dXt4/3Z7
+        ef91e3j/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3V7eP92fHn/dnx5/3J4df9obmv/UldV/zo9
+        PP8kJib/Dg8Q/wMEBf8AAAD/AAAA/wAAAP8CAgL/WFpZ/3R6d/91e3jtdXt4h3V7efl1fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef91fHn/dnx5/3Z8ef91fHn/dXt4/3R6
+        d/90enf/d316/3uBfv97gX7/dXt3/2txbv9gZWP/U1dV/0xQTv9ESEb/b3Vy/3Z9efl1e3iHdXp4I3V7
+        ebd1fHn9dnx5/3Z8ef92fHn/dnx5/3V7ef92fHn/dnx5/3V7ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXx5/3Z7ef92fHn/dXx5/3Z7ef92fHn/dXx5/3Z7
+        ef92fHn/dXx5/3Z7ef92fHn/dXt4/3V7eP91e3j/dnx5/3d9ev94fnv/eX98/3l/fP94f3v/dnx5/XV7
+        ebd1engjc3t7A3V7eCd1e3d/dXx4z3V7eOd2fHn/dnx5/3Z7ef92fHn/dnx5/3Z7ef92fHn/dnt4/3Z8
+        ef92e3j/dnt4/3Z8ef92e3j/dnt4/3Z8ef92e3j/dnt4/3Z8ef92e3j/dnx5/3V8ef92fHn/dnx5/3V8
+        ef92fHn/dnx5/3V8ef92fHn/dnx5/3V8ef92fHn/dnx5/3V8ef92fHn/dXt4/3V7eP91e3j/dXt4/3V7
+        eOd0e3fPdXt3f3V7eCdze3sDAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+        AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+        //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+        AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+        //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+        AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+        //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA
+        AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8Bd3d3D3Z7eY92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3l/fP9qb2z/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9RUVH/VlZW/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUI9VVVUP////Af///wH///8Bd313L3V7eN92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3d9ev9zeXb/U1RT/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9RUVH/TU1N/zAwMP8/Pz//VVVV/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ31FRUS////8Bd3d3D3V8
+        ee92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef93fnr/W1xb/01N
+        Tf9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9PT0//VVVV/yQkJP8AAAD/AgIC/y8vL/9WVlb/UFBQ/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFDvVVVVD3Z8eH92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP95f3z/ZWhm/01NTf9RUVH/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1FRUf8PDw//AAAA/wMD
+        A/8AAAD/IyMj/1NTU/9RUVH/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUH91e3jfdnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3V7eP94fnv/bnNx/09PT/9PT0//T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/T09P/1JS
+        Uv9GRkb/AgIC/wAAAP8AAAD/AQEB/wAAAP8XFxf/Tk5O/1NTU/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFDfdnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef93fXr/dHp3/1RVVf9SUVL/VlZW/1NTU/9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/09PT/9VVVX/NDQ0/wAAAP8AAAD/fHx8/yMjI/8AAAD/AAAA/w0NDf9GRkb/VVVV/05O
+        Tv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/d356/2BiYf9SUVL/Q0ND/zIy
+        Mv9DQ0P/VlZW/1FRUf9PT0//UFBQ/1BQUP9PT0//VVVV/yAgIP8AAAD/DQ0N/+vr6//j4+P/LCws/wAA
+        AP8CAgL/BgYG/zs7O/9WVlb/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/d356/2xw
+        bv9JSEj/HR0d/wEBAf8AAAD/AwMD/yMjI/9MTEz/VlZW/09PT/9PT0//T09P/09PT/8QEBD/AAAA/zk5
+        Of///////////+/v7/9KSkr/AAAA/wMDA/8BAQH/MDAw/1RUVP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z7ef9BQUH/CQkI/wAAAP8AAAD/AAAA/wAAAP8AAAD/CAgI/zMzM/9SUlL/VVVV/1hY
+        WP9FRUX/BQUF/wAAAP9wcHD///////n5+f/+/v7//////2tra/8AAAD/AgIC/wAAAP8vLy//VFRU/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dHp3/3yCf/9CQ0P/AgEB/wICAv8AAAD/Li4u/5mZmf8pKSn/AAAA/wIC
+        Av8AAAD/FRUV/ysrK/81NTX/Ly8v/wAAAP8AAAD/rKys///////8/Pz//f39//z8/P//////jIyM/wAA
+        AP8AAAD/FhYW/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/3+Fgv9HSkj/AAAA/wQEBP8AAAD/YGBg//T0
+        9P//////9PT0/2lpaf8AAAD/AgIC/wAAAP8AAAD/AQEB/wUFBf8AAAD/CAgI/93d3f///////f39////
+        ///9/f3//////+/v7/8RERH/AAAA/xYWFv9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/32DgP9XW1n/AgIC/wID
+        A/8AAAD/goKC///////7+/v/+/v7//////9zc3P/AAAA/wQEBP8AAAD/AAAA/wAAAP8EBAT/AAAA/zQ0
+        NP///////Pz8//7+/v///////v7+///////s7Oz/ERER/wAAAP8WFhb/VFRU/09PT/9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3qA
+        ff9ma2j/CAkJ/wMDA/8AAAD/h4eH///////4+Pj//////+3t7f9CQkL/AAAA/wMDA/8AAAD/TU1N/7S0
+        tP81NTX/AAAA/wEBAf8RERH/urq6///////7+/v//v7+//7+/v//////7u7u/xEREf8AAAD/FhYW/1RU
+        VP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHr/Ghsa/wAAAP8AAAD/aWlp///////4+Pj//////93d3f8qKir/AAAA/wAA
+        AP8gICD/tra2////////////9PT0/1NTU/8AAAD/AgIC/wICAv+Tk5P///////z8/P/8/Pz//////+7u
+        7v8RERH/AAAA/xYWFv9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3Z8ef92fHn/dnx5/3R6d/9+hIH/RkpI/wAAAP8AAAD/PT4+//v7+//7+/v//////9nZ
+        2f8aGhr/AAAA/wAAAP9TU1P/7+/v///////6+vz/+vr7//39/f//////fHx8/wAAAP8DAwP/AAAA/2pq
+        av/9/f3//f39///////v7+//ERER/wAAAP8WFhb/VFRU/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef91e3j/eX98/x4fH/8AAAD/FRUV/+Dg
+        4P///////////+rq6v8oKCj/AAAA/wAAAP9sbGz///////39/f/7+/v//v7////////+/v7/+/v7////
+        //+mpqb/CAgI/wEBAf8AAAD/Q0ND/+rq6v//////6+vr/xEREf8AAAD/FhYW/1RUVP9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3h+
+        e/8bHRz/AAAA/xMTE//d3d3///////7+/v9MTEz/AAAA/wAAAP9oaGj///////z8/P/7+/3//////+Dg
+        /P/q6v3///////7+/v/7+/v//////8zMzP8eHh7/AAAA/wAAAP8iIiL/1NTU//X19f8QEBD/AAAA/xYW
+        Fv9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/dnx5/3R6d/99g4D/TVFP/wAAAP8AAAD/QkJC//////+AgID/AAAA/wAAAP9fX1////////z8
+        /P/8/P7//////93d/P+rq/n/+Pj////////+/v///v7///v7+///////6enp/z4+Pv8AAAD/AAAA/xER
+        Ef+ampr/FxcX/wAAAP8VFRX/VFRU/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3uBfv8iIyL/AAAA/wICAv9XV1f/ERER/wAA
+        AP87Ozv/+fn5/////v/8/P7//////+Li/f+wsPn/9vb+///////9/f///////////////////Pz8//7+
+        /v/8/Pz/aGho/wAAAP8CAgL/AgIC/wICAv8AAAD/FBQU/1NTU/9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP97gX7/YWZj/wIC
+        Av8BAQH/AgIC/wAAAP8VFRX/39/f///////7+/3//////+bm/f+FhfX/2Nj8///////9/f////////Pz
+        /v/s7P3///////7+///9/f3//Pz8//////+QkJD/AQEB/wEBAf8DAwP/AAAA/xYWFv9XV1f/Tk5O/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dHp3/36Egf81ODb/AAAA/wgICP8AAAD/i4yM///////6+vv//////+Dg/f+rq/j/8vL+/6ur
+        +P/b2/z/8fH+/8jI+/+trfj/4OD8///////+/v///v7///7+/v/7+/v//////7m5uf8UFBT/AAAA/wMD
+        A/8EBAT/PT09/1ZWVv9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP94f3v/bXNw/wsLC/8AAAD/Kioq//X19f/+/v///////+fn
+        /f+hofj/+/v////////39/7/lpb2/7Ky+P/X1/z/+fn////////t7f7/4eH9///////+/v////////r6
+        +v//////19fX/ywsLP8AAAD/AwMD/wEBAf8xMTH/VlZW/1BQUP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP90enf/dXt4/3B2c/8PDw//AAAA/zc3
+        N//8/Pz//f3+/////v/39/7/rKz4/97e/P///////////8nJ+//Z2fz////////////x8f7/ra35/6Ki
+        9//c3Pz///////7+////////+/v7///////x8fH/SUlJ/wAAAP8EBAT/AAAA/yYmJv9UVFT/UVFR/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef91e3j/dHp3/3V7eP94fnv/fIJ//36E
+        gf99hIH/Jykn/wAAAP8AAAD/ZGRk///////7+/z///////b2/v+oqPj/1dX8//f3/v+urvn/6en+////
+        ///19f7/rKz5/+bm/f/+/v//qKj4/97e/P///////v7////////9/f3//f39//////9xcXH/AAAA/wQE
+        BP8AAAD/Gxsb/1BQUP9SUlL/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/fIJ//36F
+        gf97gn//bnRx/1dcWf87Pj3/ICIh/w0NDf8DAwP/BwcH/wAAAP+Ojo7///////r6+///////+Pj+/8LC
+        +v+2tvn/3Nz8///////29v7/jo72/8jI+////////f3///X1/v+wsPn//Pz///////////////////39
+        /f/8/Pz//////5qamv8CAgL/AgIC/wAAAP8SEhL/SkpK/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP93fnv/dXp3/1pfXP8/QkD/IiQj/wsMC/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwP/AQEB/7a2
+        tv//////+/v7//7+/////////v7////////w8P7/qKj4/9/f/f+urvj/4OD9////////////trb5//T0
+        /v///////////////////////v7+//v7+///////uLi4/xISEv8AAAD/AAAA/wkJCf9DQ0P/VVVV/05O
+        Tv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/eX98/ygqKf8AAAD/AQEB/wAAAP8AAAD/AAAA/wAAAP8KCwv/MjIy/3Jz
+        cv+QkJH/Dw8P/wAAAP8UFBT/19fX///////8/Pz//f3////////29v7/pKT4/+vr/f//////8vL+/52d
+        9//Ozvv/vb36/8fH+////////f3+//v7+//8/Pz//Pz8//z8/P/7+/v/+vr6///////W1tb/Ly8v/wAA
+        AP8BAQL/BAQE/zs7O/9WVlb/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3R6d/8UFRT/AAAA/wEBAf8MDAz/Pz8//3Fx
+        cf+xsbH/4+Tk//7+/v/8/Pz//////52dnf8AAAD/AAAA/y8vL//x8fH///////39/v//////+/v//6qq
+        +P/f3/z///////////+7u/n/x8f7/+bm/f///////Pz8//7+/v////////////////////////////7+
+        /v/29vb//////62trf8AAAD/AgIC/wEBAv8BAQH/MzMz/1ZWVv9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP98g3//UVVT/wAA
+        AP8AAAD/Dw8P/9TU1P///////f39///////+/v7/+/v7//n5+f//////c3Nz/wAAAP8AAAD/UlJS////
+        ///8/Pz//v7+///////4+P7/q6v4/9DQ+//T0/v/s7P5////////////+/v8///////y8vL/o6Oj/2Zm
+        Zv9hYWH/Y2Nj/6Ojo//z8/P//////8DAwP8NDQ7/AAAA/w8PKf8CAgP/AAAB/wAAAP8rKyv/VVVV/1BQ
+        UP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dHp3/3+Fgv89QT//AAAA/wAAAP8nJyf/6enp///////7+/v////////////+/v7//f39////
+        //9LS0v/AAAA/wAAAP93d3f///////v7+//+/v////////j4/v/MzPv/zMz7//b2/v//////+/v8////
+        //+xsbH/Ghoa/wAAAP8BAQH/AAAA/wEBAf8AAAD/MDAw/5mZmf8WFhf/AAAA/x8fa/9GRvr/JSWE/wAA
+        AP8BAQL/AAAA/yQkJP9VVVX/UFBQ/09PT/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef91e3j/fYOA/ywuLf8AAAD/AAAA/0VFRf/7+/v//v7+//7+
+        /v////////////39/f//////7Ozs/ygoKP8AAAD/AAAA/5+fn///////+/v7///////+/v//////////
+        ///+/v///Pz8//////+oqKj/AQEB/wAAAP8AAAD/BAQE/xEREf8EBAT/AAAA/wAAAf8AAAD/AQEA/yUl
+        gf9FRf3/QEDv/0ZG//8qKpn/AQEB/wEBAv8AAAD/IiIi/1NTU/9RUVH/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dXt4/3Z9ev93fXn/HB0d/wAA
+        AP8AAAD/ZWVl///////6+vr/+/v7//v7+//7+/v/+Pj4///////Nzc3/DAwM/wAAAP8JCQn/xcXF////
+        ///8/Pz///////39///9/f///f39///////h4eH/EBAQ/wAAAP8AAAD/WFhY/9ra2v/+/v7/19fX/2Ji
+        Yv8AAAD/BAQD/wMDB/86OtL/Q0P2/0BA7P9AQOv/Rkb//y4uov8BAQP/AQEC/wAAAP8cHBz/UlJS/1BQ
+        UP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef91e3j/eoB9/21zcP8ODw//AgIC/wAAAP+Hh4f///////39/f/////////////////8/Pz//////7m5
+        uf8HBwf/AAAA/x4eHv/j4+P///////39/f////////////v7+///////fHx8/wAAAP8AAAD/bW1t////
+        ///k5OT/wcHB//Dw8P//////enp6/wAAAP8AAAD/HBxo/0VF/v9AQOz/QUHv/0BA6v9FRf//MzOt/wQE
+        Cf8BAQH/AAAA/xwcHP9TU1P/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3R6d/98g3//YGRi/wUFBf8BAQH/BgYG/3R0dP+MjIz/g4OD/4SE
+        hP+EhIT/hISE/35+fv+Li4v/Jycn/wAAAP8AAAD/Ojo6//j4+P///////v7+///////+/v7//////zg4
+        OP8AAAD/FBQU//Hx8f/Z2tr/FhYW/wAAAP87Ozv/+Pj4//Dw8f8ZGRv/AAAA/w4OL/9BQfH/QUHv/0FB
+        7/9BQe//QEDq/0ZG//80NLD/BAQG/wEBAf8AAAD/IyMj/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/c3l2/36Egf9PVFL/AAAA/wIC
+        Av8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/BQUF/wAAAP9fX1////////z8
+        /P/+/v7///////v7+/8rKyv/AAAA/z8/P///////gYKB/wAAAP8NDQ3/AAAA/7u7u///////Pz9A/wAA
+        AP8ICBj/PT3i/0JC8/9BQe7/QUHv/0FB7/9AQOr/RUX//zQ0qv8EBAT/AQEC/wAAAP8tLS3/VlZW/09P
+        T/9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef90enf/foWB/z9DQf8AAAD/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+        AP8EBQT/AAAA/4iIiP//////+vr6///////9/f3/LS0t/wAAAP8uLi7//////7i4uP8BAQH/AAAA/xoa
+        Gv/h4eH//////zY2N/8AAAD/Cwsi/z8/6P9CQvH/QUHu/0FB7/9BQe//QUHv/z8/6v9GRv//MjKi/wEB
+        Af8BAQL/AQEB/z09Pf9UVFT/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef96gH3/YWZj/1dbWf9YXFr/WFxa/1hcWv9YXFr/WFxa/1hc
+        Wv9YXFr/V1tZ/1peXP9QU1L/CQkJ/wEBAf8AAAD/ra2t///////5+fn//////1JSUv8AAAD/AQEB/8LC
+        wv//////s7Sz/3h5eP/Ozs7//////8XFxf8AAAH/AAAA/xQUR/9ERPn/QEDt/0FB7/9BQe//QUHv/0FB
+        7/9BQe//Pz/q/0dH//8oKIj/AAAA/wAAAf8LCwv/TU1N/1FRUf9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3qBfv98g4D/fIOA/3yD
+        gP98g4D/fIOA/3yDgP98g4D/fIOA/3yDgP97gn//gomG/1BVUv8AAAD/AAAA/w4ODv/Q0ND/////////
+        //+ysrL/AAAA/wAAAP8nJyf/2tra///////9/f3//////97e3v8qKir/AAAA/wAAAP8pKZn/RUX+/0BA
+        7P9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOz/RUX8/xkZVP8AAAD/AAAA/yMjIv9VVVX/T09P/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP91e3j/dXt4/3V7eP91e3j/dXt4/3R5d/9+hYH/P0NB/wAA
+        AP8AAAD/Jycn/+np6f//////3Nzc/woKC/8AAAD/AAAB/w0NDf9eXl7/gYGB/2NjY/8ODg7/AAAC/wAA
+        AP8QEDz/QUHw/0FB7/9BQe7/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHt/0JC9P8/P+L/CQkb/wAA
+        AP8AAAH/PT09/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/32DgP8wMjH/AAAA/wAAAP9LS0v/4uLi/yoqKv8AAAD/BgYQ/wAAAP8AAAD/AAAA/wAA
+        AP8AAAD/AAAC/wAAAP8NDS//PDze/0ND9f9AQO3/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9AQOv/RUX+/y0tnP8AAAD/AAAA/xYWFv9TU1P/T09P/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/1BQ
+        UP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP92fHn/eH97/yAhIf8AAAD/BQUF/w0ND/8AAAD/FRZG/z09
+        3/8iIn7/CQke/wQEBf8CAgL/BAQF/wkJIP8gIHf/QEDr/0ND9v9AQOz/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA7f9ERPj/FBRB/wAAAP8AAAD/Nzc3/1VVVf9PT0//UFBQ/1BQ
+        UP9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3l/fP9xd3T/FBQU/wAA
+        AP8AAAD/DQ0m/0RE8f9DQ/b/RUX+/0BA6/82Nsf/MTG1/zY2x/9AQOr/Rkb//0JC8f9AQO3/QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOz/RET7/zMztP8AAAD/AAAA/xQU
+        FP9SUlL/UFBQ/1BQUP9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef90enf/e4F+/2dsaf8KCwv/AAAA/wAAAP8nJ4z/RUX//z8/5/9BQfH/Q0P3/0VF+/9DQ/j/QUHx/0BA
+        6/9BQe7/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA
+        7f9ERPf/FRVC/wAAAP8AAAH/Pj4+/1RUVP9PT0//UFBQ/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6d/99g4D/W2Bd/wQEBf8AAAD/AAAA/ywsof9GRv//Pz/p/0BA
+        7f9AQOz/QEDt/0FB7v9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9AQOz/RET8/zIyr/8AAAD/AAAA/x0dHf9VVVX/T09P/1BQUP9QUFD/UFBQ/1BQ
+        UP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/3+Fgv9QVVL/AAAB/wEB
+        Af8CAgb/MjKy/0ZG//9AQOr/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9CQvH/Dg4u/wAAAP8GBgf/SUlJ/1JS
+        Uv9QUFD/UFBQ/1BQUP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef9zeXb/f4aC/0VJRv8AAAD/AQEB/wMDCf8zM7X/RUX//0BA6v9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOv/RUX//ycn
+        hf8AAAD/AAAA/zExMf9VVVX/T09P/1BQUP9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6d/9/hYL/OTw7/wAAAP8BAQH/BAQL/zY2uv9FRf//QEDq/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHt/0ND9v86OtT/BQUL/wAAAP8XFxj/U1NT/09PT/9QUFD/UFBQ/1BQUP9QUFD/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3yDf/80Nzb/AAAA/wEB
+        Af8FBQz/Nja6/0VF//9AQOr/QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOz/RET6/xQUR/8AAAD/BgYI/0lJSf9SUlL/UFBQ/1BQ
+        UP9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP91fHj/fYSA/ywuLf8AAAD/AQEB/wUFC/82NrX/RUX//0BA6v9BQe7/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QEDr/0VF//8mJof/AAAA/wAA
+        AP83Nzj/VVVV/09PT/9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3Z8ef95f3z/KSsq/wAAAP8BAQH/AwQI/y8wpP9GRv//QEDu/0BA
+        7P9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA
+        7f9DQ/n/NjbC/wICAP8AAAD/IyMj/1ZWVv9PT0//UFBQ/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/d316/3l/fP8tMC7/AAAA/wEB
+        Av8AAAD/IiJw/0RE9f9DQ/j/QEDq/0FB7v9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe7/QUHw/0FB6/8LCyT/AAAA/xERE/9SUlL/UFBQ/1BQUP9QUFD/UFBQ/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7
+        eP92fHn/fYOA/zc6OP8AAAD/AQEC/wAAAP8RETn/OTnQ/0ZG//9BQfD/QEDr/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0BA7P9FRf3/GRla/wAAAP8GBgj/SkpK/1JS
+        Uv9QUFD/UFBQ/1BQUP92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dXt4/3V7eP9+hYH/TlJQ/wYGBv8AAAD/AAAA/wMDC/8iInr/QUHr/0VF
+        /v9BQe//QEDr/0FB7v9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9BQe//QUHv/0FB7/9AQOv/RUX//ygo
+        lP8AAAD/AAAA/zw8PP9UVFT/T09P/1BQUP9QUFD/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dHp3/36Egf9lamj/HB4d/wAA
+        AP8BAQL/AAAA/woKI/8rK5//QUHv/0VF//9CQvP/QEDr/0BA7P9BQe7/QUHv/0FB7/9BQe//QUHv/0FB
+        7/9BQe//QEDt/0RE+v8zM73/AAAA/wAAAP8vLy//VlZW/09PT/9QUFD/UFBQ/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef90enf/eoB9/3uBfv9ESEb/CAkJ/wAAAP8BAAH/AAAA/wsLJv8lJYj/PT3f/0VF//9FRf3/QkL0/0BA
+        7f9AQOv/QEDt/0FB7v9BQe//QUHv/0FB7v9CQvT/PDzc/wUFEP8AAAD/JCQk/1VVVf9PT0//UFBQ/09P
+        T/92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP91e3j/foSB/250cf81ODf/BQUG/wAAAP8AAAH/AAAA/wYH
+        Ff8aGl3/LS2i/zw82/9ERPr/Rkb//0RE+/9CQvL/QEDt/0BA6/9AQOv/QEDt/0BA6v8LCyf/AAAA/xkZ
+        Gv9UVFT/T09P/09PT/9UVVT/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6d/94fnv/foWB/2lu
+        a/85PDr/DA0O/wAAAP8AAAD/AAAA/wAAAP8GBhD/ExND/yMjf/8zM7n/Pj7l/0RE+/9GRv//RUX+/0VF
+        +/9HR///ERE5/wAAAP8RERP/UVFR/09PT/9RUVH/b3Rx/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dXt4/3R6d/95f3z/foWB/3F3dP9MUE7/ISMj/wUGCP8AAAD/AAAA/wAAAP8AAAD/AQEA/wkJ
+        G/8UFEf/ICB0/ygok/8uLqf/NDS5/w8PLv8AAAD/CgoM/01OTf9PTk7/aW1r/3l/fP92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3R6d/93fXr/fYSA/3uCfv9pbmv/R0pJ/yYn
+        J/8NDhD/AAAB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/AQEB/wgICP9JSEj/Y2Vk/3h/
+        fP91e3j/dXt433Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3R6
+        d/91e3j/eX98/36Egf98g3//cXd0/1pfXP9CRkT/Ky0t/xcYGv8JCgz/AQED/wAAAP8AAAD/AAAA/wAA
+        AP8BAQH/UlRT/3l/fP91e3j/dXt433Z8eH92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3V7eP90enf/dHp3/3d9ev98gn//f4WC/32DgP93fnr/bnNw/2Fm
+        ZP9UWFb/SEtK/zw/Pv87Pj3/LzEw/2lubP95gHz/dXt4/3Z8eH93d3cPdXt5z3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dXt4/3R6
+        d/90enf/dnx5/3h+e/96gX7/fYOA/36Egf9/hYL/f4WC/32EgP93fXr/dnx5/3V7ec93d3cP////AXN7
+        ex91fHnvdnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef91e3j/dXt4/3V7eP90enf/dHp3/3R6d/90enf/dnx5/3V8
+        ee9ze3sf////Af///wH///8Bd3d3D3V8d291fHi/dXx4v3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8ef92fHn/dnx5/3Z8
+        ef91fHi/dXx4v3V8d293d3cP////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Helpers/DeviceHelper.cs b/PokemonGo.RocketBot.Window/Helpers/DeviceHelper.cs
new file mode 100644
index 0000000..12524b4
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Helpers/DeviceHelper.cs
@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Security.Cryptography;
+using PokemonGo.RocketBot.Logic.Utils;
+
+namespace PokemonGo.RocketBot.Window.Helpers
+{
+    public class DeviceHelper
+    {
+        private readonly string _deviceSourcePath = Directory.GetCurrentDirectory() + @"\Resources\device info.csv";
+        public List<DeviceInfo> DeviceBucket;
+
+        public DeviceHelper()
+        {
+            var deviceInfoStrings = new List<string[]>();
+            if (File.Exists(_deviceSourcePath))
+            {
+                using (var reader = new StreamReader(_deviceSourcePath))
+                {
+                    string stringLine;
+                    while ((stringLine = reader.ReadLine()) != null)
+                    {
+                        deviceInfoStrings.Add(stringLine.Split(';'));
+                    }
+                }
+                DeviceBucket = deviceInfoStrings.Select(info => new DeviceInfo
+                {
+                    DeviceId = info[0],
+                    AndroidBoardName = info[1],
+                    AndroidBootloader = info[2],
+                    DeviceBrand = info[3],
+                    DeviceModel = info[4],
+                    DeviceModelIdentifier = info[5],
+                    DeviceModelBoot = info[6],
+                    HardwareManufacturer = info[7],
+                    HardwareModel = info[8],
+                    FirmwareBrand = info[9],
+                    FirmwareTags = info[10],
+                    FirmwareType = info[11],
+                    FirmwareFingerprint = info[12]
+                }).ToList();
+            }
+            //also add the list from Necro
+            foreach (var necroSet in DeviceInfoHelper.DeviceInfoSets.Values)
+            {
+                DeviceBucket.Add(new DeviceInfo
+                {
+                    DeviceId = necroSet["DeviceId"],
+                    AndroidBoardName = necroSet["AndroidBoardName"],
+                    AndroidBootloader = necroSet["AndroidBootloader"],
+                    DeviceBrand = necroSet["DeviceBrand"],
+                    DeviceModel = necroSet["DeviceModel"],
+                    DeviceModelIdentifier = necroSet["DeviceModelIdentifier"],
+                    DeviceModelBoot = necroSet["DeviceModelBoot"],
+                    HardwareManufacturer = necroSet["HardwareManufacturer"],
+                    HardwareModel = necroSet["HardwareModel"],
+                    FirmwareBrand = necroSet["FirmwareBrand"],
+                    FirmwareTags = necroSet["FirmwareTags"],
+                    FirmwareType = necroSet["FirmwareType"],
+                    FirmwareFingerprint = necroSet["FirmwareFingerprint"]
+                });
+            }
+        }
+
+        public int GetRandomIndex(int max)
+        {
+            var rand = new Random(DateTime.Now.Millisecond);
+            return rand.Next(0, max);
+        }
+
+        public string RandomString(int length, string alphabet = "abcdefghijklmnopqrstuvwxyz0123456789")
+        {
+            var outOfRange = byte.MaxValue + 1 - (byte.MaxValue + 1)%alphabet.Length;
+
+            return string.Concat(
+                Enumerable
+                    .Repeat(0, int.MaxValue)
+                    .Select(e => RandomByte())
+                    .Where(randomByte => randomByte < outOfRange)
+                    .Take(length)
+                    .Select(randomByte => alphabet[randomByte%alphabet.Length])
+                );
+        }
+
+        private static byte RandomByte()
+        {
+            using (var randomizationProvider = new RNGCryptoServiceProvider())
+            {
+                var randomBytes = new byte[1];
+                randomizationProvider.GetBytes(randomBytes);
+                return randomBytes.Single();
+            }
+        }
+    }
+
+    public class DeviceInfo
+    {
+        public string DeviceI { get; set; }
+        public string DeviceId { get; set; }
+        public string AndroidBoardName { get; set; }
+        public string AndroidBootloader { get; set; }
+        public string DeviceBrand { get; set; }
+        public string DeviceModel { get; set; }
+        public string DeviceModelIdentifier { get; set; }
+        public string DeviceModelBoot { get; set; }
+        public string HardwareManufacturer { get; set; }
+        public string HardwareModel { get; set; }
+        public string FirmwareBrand { get; set; }
+        public string FirmwareTags { get; set; }
+        public string FirmwareType { get; set; }
+        public string FirmwareFingerprint { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Helpers/MachineIdHelper.cs b/PokemonGo.RocketBot.Window/Helpers/MachineIdHelper.cs
new file mode 100644
index 0000000..82923a0
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Helpers/MachineIdHelper.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Management;
+
+namespace PokemonGo.RocketBot.Window.Helpers
+{
+    public class MachineIdHelper
+    {
+        public static string GetCpuId()
+        {
+            var cpuInfo = string.Empty;
+            var mc = new ManagementClass("win32_processor");
+            var moc = mc.GetInstances();
+
+            foreach (var o in moc)
+            {
+                var mo = (ManagementObject) o;
+                cpuInfo = mo.Properties["processorID"].Value.ToString();
+                break;
+            }
+            return cpuInfo;
+        }
+
+        public static string GetHardDriveId()
+        {
+            var drive = "C";
+            var dsk = new ManagementObject(
+                @"win32_logicaldisk.deviceid=""" + drive + @":""");
+            dsk.Get();
+            return dsk["VolumeSerialNumber"].ToString();
+        }
+
+        public static string GetMachineId()
+        {
+            string id;
+            try
+            {
+                id = GetCpuId() + GetHardDriveId();
+            }
+            catch (Exception)
+            {
+                id = "BF00LIKELYVIRTUALMACHINE";
+            }
+            return id;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Helpers/ResourceHelper.cs b/PokemonGo.RocketBot.Window/Helpers/ResourceHelper.cs
new file mode 100644
index 0000000..4bcc81c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Helpers/ResourceHelper.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Drawing;
+
+namespace PokemonGo.RocketBot.Window.Helpers
+{
+    public class ResourceHelper
+    {
+        public static Image GetImage(string name)
+        {
+            return (Image) Properties.Resources.ResourceManager.GetObject(name);
+        }
+
+        public static Image GetImage(string name, int maxHeight, int maxWidth)
+        {
+            var image = GetImage(name);
+            var ratioX = (double) maxWidth/image.Width;
+            var ratioY = (double) maxHeight/image.Height;
+            var ratio = Math.Min(ratioX, ratioY);
+
+            var newWidth = (int) (image.Width*ratio);
+            var newHeight = (int) (image.Height*ratio);
+
+            var newImage = new Bitmap(newWidth, newHeight);
+
+            using (var graphics = Graphics.FromImage(newImage))
+                graphics.DrawImage(image, 0, 0, newWidth, newHeight);
+
+            return newImage;
+        }
+
+        public static Image GetPokemonImage(int pokemonId)
+        {
+            return GetImage("Pokemon_" + pokemonId);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Helpers/S2GMapDrawer.cs b/PokemonGo.RocketBot.Window/Helpers/S2GMapDrawer.cs
new file mode 100644
index 0000000..24a9050
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Helpers/S2GMapDrawer.cs
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using System.Drawing;
+using GMap.NET;
+using GMap.NET.WindowsForms;
+using Google.Common.Geometry;
+
+namespace PokemonGo.RocketBot.Window.Helpers
+{
+    internal class S2GMapDrawer
+    {
+        public static void DrawS2Cells(List<ulong> cellsIds, GMapOverlay mapLayer)
+        {
+            for (var i = 0; i < cellsIds.Count; i++)
+            {
+                var cellId = new S2CellId((ulong) i);
+                var cell = new S2Cell(cellId);
+
+                var points = new List<PointLatLng>();
+                for (var j = 0; j < 4; j++)
+                {
+                    var point = new S2LatLng(cell.GetVertex(j));
+                    points.Add(new PointLatLng(point.LatDegrees, point.LngDegrees));
+                }
+                var polygon = new GMapPolygon(points, "mypolygon");
+                polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
+                polygon.Stroke = new Pen(Color.Red, 1);
+                mapLayer.Polygons.Add(polygon);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Helpers/TimeHelper.cs b/PokemonGo.RocketBot.Window/Helpers/TimeHelper.cs
new file mode 100644
index 0000000..da16ebb
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Helpers/TimeHelper.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace PokemonGo.RocketBot.Window.Helpers
+{
+    public class TimeHelper
+    {
+        public static DateTime FromUnixTimeUtc(long time)
+        {
+            return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(time);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Helpers/VersionHelper.cs b/PokemonGo.RocketBot.Window/Helpers/VersionHelper.cs
new file mode 100644
index 0000000..0f0b544
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Helpers/VersionHelper.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Net;
+using System.Text.RegularExpressions;
+using System.Windows.Forms;
+using PokemonGo.RocketBot.Logic.Logging;
+
+namespace PokemonGo.RocketBot.Window.Helpers
+{
+    public class VersionHelper
+    {
+        public static void CheckVersion()
+        {
+            try
+            {
+                var match =
+                    new Regex(
+                        @"\[assembly\: AssemblyVersion\(""(\d{1,})\.(\d{1,})\.(\d{1,})""\)\]")
+                        .Match(DownloadServerVersion());
+
+                if (!match.Success) return;
+                var gitVersion =
+                    new Version(
+                        $"{match.Groups[1]}.{match.Groups[2]}.{match.Groups[3]}");
+                // makes sense to display your version and say what the current one is on github
+                Logger.Write("Your version is " + Application.ProductVersion);
+                Logger.Write("Github version is " + gitVersion);
+                Logger.Write("You can find it at www.GitHub.com/TheUnnameOrganization/RocketBot/releases");
+            }
+            catch (Exception)
+            {
+                Logger.Write("Unable to check for updates now...", LogLevel.Error);
+            }
+        }
+
+        private static string DownloadServerVersion()
+        {
+            using (var wC = new WebClient())
+                return
+                    wC.DownloadString(
+                        "https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/PokemonGo.RocketBot.Window/Properties/AssemblyInfo.cs");
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemBlukBerry.png b/PokemonGo.RocketBot.Window/Images/Items/ItemBlukBerry.png
new file mode 100644
index 0000000..04304f9
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemBlukBerry.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemGreatBall.png b/PokemonGo.RocketBot.Window/Images/Items/ItemGreatBall.png
new file mode 100644
index 0000000..c68ee4b
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemGreatBall.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemHyperPotion.png b/PokemonGo.RocketBot.Window/Images/Items/ItemHyperPotion.png
new file mode 100644
index 0000000..4674fba
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemHyperPotion.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemIncenseOrdinary.png b/PokemonGo.RocketBot.Window/Images/Items/ItemIncenseOrdinary.png
new file mode 100644
index 0000000..21c556a
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemIncenseOrdinary.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasic.png b/PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasic.png
new file mode 100644
index 0000000..ac36da8
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasic.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasicUnlimited.png b/PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasicUnlimited.png
new file mode 100644
index 0000000..8a52f98
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemIncubatorBasicUnlimited.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemItemStorageUpgrade.png b/PokemonGo.RocketBot.Window/Images/Items/ItemItemStorageUpgrade.png
new file mode 100644
index 0000000..3cef2db
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemItemStorageUpgrade.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemLuckyEgg.png b/PokemonGo.RocketBot.Window/Images/Items/ItemLuckyEgg.png
new file mode 100644
index 0000000..f6062da
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemLuckyEgg.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemMasterBall.png b/PokemonGo.RocketBot.Window/Images/Items/ItemMasterBall.png
new file mode 100644
index 0000000..d209f4b
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemMasterBall.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemMaxPotion.png b/PokemonGo.RocketBot.Window/Images/Items/ItemMaxPotion.png
new file mode 100644
index 0000000..501b4ad
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemMaxPotion.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemMaxRevive.png b/PokemonGo.RocketBot.Window/Images/Items/ItemMaxRevive.png
new file mode 100644
index 0000000..be6a0ea
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemMaxRevive.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemNanabBerry.png b/PokemonGo.RocketBot.Window/Images/Items/ItemNanabBerry.png
new file mode 100644
index 0000000..5a91acb
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemNanabBerry.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemPinapBerry.png b/PokemonGo.RocketBot.Window/Images/Items/ItemPinapBerry.png
new file mode 100644
index 0000000..4a113cb
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemPinapBerry.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemPokeBall.png b/PokemonGo.RocketBot.Window/Images/Items/ItemPokeBall.png
new file mode 100644
index 0000000..2900bb0
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemPokeBall.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemPokemonStorageUpgrade.png b/PokemonGo.RocketBot.Window/Images/Items/ItemPokemonStorageUpgrade.png
new file mode 100644
index 0000000..ec44038
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemPokemonStorageUpgrade.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemPotion.png b/PokemonGo.RocketBot.Window/Images/Items/ItemPotion.png
new file mode 100644
index 0000000..1d9734d
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemPotion.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemRazzBerry.png b/PokemonGo.RocketBot.Window/Images/Items/ItemRazzBerry.png
new file mode 100644
index 0000000..6ad5176
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemRazzBerry.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemRevive.png b/PokemonGo.RocketBot.Window/Images/Items/ItemRevive.png
new file mode 100644
index 0000000..10c5162
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemRevive.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemSpecialCamera.png b/PokemonGo.RocketBot.Window/Images/Items/ItemSpecialCamera.png
new file mode 100644
index 0000000..a9cb4e3
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemSpecialCamera.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemSuperPotion.png b/PokemonGo.RocketBot.Window/Images/Items/ItemSuperPotion.png
new file mode 100644
index 0000000..9db7573
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemSuperPotion.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemTroyDisk.png b/PokemonGo.RocketBot.Window/Images/Items/ItemTroyDisk.png
new file mode 100644
index 0000000..91881ec
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemTroyDisk.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemUltraBall.png b/PokemonGo.RocketBot.Window/Images/Items/ItemUltraBall.png
new file mode 100644
index 0000000..f45a069
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemUltraBall.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Items/ItemWeparBerry.png b/PokemonGo.RocketBot.Window/Images/Items/ItemWeparBerry.png
new file mode 100644
index 0000000..e372aa5
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Items/ItemWeparBerry.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Markers/Pokestop.png b/PokemonGo.RocketBot.Window/Images/Markers/Pokestop.png
new file mode 100644
index 0000000..f537b5d
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Markers/Pokestop.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Markers/Pokestop_looted.png b/PokemonGo.RocketBot.Window/Images/Markers/Pokestop_looted.png
new file mode 100644
index 0000000..7ca76bc
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Markers/Pokestop_looted.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Front.png b/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Front.png
new file mode 100644
index 0000000..20d619e
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Front.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Left.png b/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Left.png
new file mode 100644
index 0000000..f081aa0
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Left.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Right.png b/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Right.png
new file mode 100644
index 0000000..5113c95
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Markers/Trainer_Right.png differ
diff --git a/PokemonGo.RocketBot.Window/Images/Miscs/question.png b/PokemonGo.RocketBot.Window/Images/Miscs/question.png
new file mode 100644
index 0000000..0c854e9
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Images/Miscs/question.png differ
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_1.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_1.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_1.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_1.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_10.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_10.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_10.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_10.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_100.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_100.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_100.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_100.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_101.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_101.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_101.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_101.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_102.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_102.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_102.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_102.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_103.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_103.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_103.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_103.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_104.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_104.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_104.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_104.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_105.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_105.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_105.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_105.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_106.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_106.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_106.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_106.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_107.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_107.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_107.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_107.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_108.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_108.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_108.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_108.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_109.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_109.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_109.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_109.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_11.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_11.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_11.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_11.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_110.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_110.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_110.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_110.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_111.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_111.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_111.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_111.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_112.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_112.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_112.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_112.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_113.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_113.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_113.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_113.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_114.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_114.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_114.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_114.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_115.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_115.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_115.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_115.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_116.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_116.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_116.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_116.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_117.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_117.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_117.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_117.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_118.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_118.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_118.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_118.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_119.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_119.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_119.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_119.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_12.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_12.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_12.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_12.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_120.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_120.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_120.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_120.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_121.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_121.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_121.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_121.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_122.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_122.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_122.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_122.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_123.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_123.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_123.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_123.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_124.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_124.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_124.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_124.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_125.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_125.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_125.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_125.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_126.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_126.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_126.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_126.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_127.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_127.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_127.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_127.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_128.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_128.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_128.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_128.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_129.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_129.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_129.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_129.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_13.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_13.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_13.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_13.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_130.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_130.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_130.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_130.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_131.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_131.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_131.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_131.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_132.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_132.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_132.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_132.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_133.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_133.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_133.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_133.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_134.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_134.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_134.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_134.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_135.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_135.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_135.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_135.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_136.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_136.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_136.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_136.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_137.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_137.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_137.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_137.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_138.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_138.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_138.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_138.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_139.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_139.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_139.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_139.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_14.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_14.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_14.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_14.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_140.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_140.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_140.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_140.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_141.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_141.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_141.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_141.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_142.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_142.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_142.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_142.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_143.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_143.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_143.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_143.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_144.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_144.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_144.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_144.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_145.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_145.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_145.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_145.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_146.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_146.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_146.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_146.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_147.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_147.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_147.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_147.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_148.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_148.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_148.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_148.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_149.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_149.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_149.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_149.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_15.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_15.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_15.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_15.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_150.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_150.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_150.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_150.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_151.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_151.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_151.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_151.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_16.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_16.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_16.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_16.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_17.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_17.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_17.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_17.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_18.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_18.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_18.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_18.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_19.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_19.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_19.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_19.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_2.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_2.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_2.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_2.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_20.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_20.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_20.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_20.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_21.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_21.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_21.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_21.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_22.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_22.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_22.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_22.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_23.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_23.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_23.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_23.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_24.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_24.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_24.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_24.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_25.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_25.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_25.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_25.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_26.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_26.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_26.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_26.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_27.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_27.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_27.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_27.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_28.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_28.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_28.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_28.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_29.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_29.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_29.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_29.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_3.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_3.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_3.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_3.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_30.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_30.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_30.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_30.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_31.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_31.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_31.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_31.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_32.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_32.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_32.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_32.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_33.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_33.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_33.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_33.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_34.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_34.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_34.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_34.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_35.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_35.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_35.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_35.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_36.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_36.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_36.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_36.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_37.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_37.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_37.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_37.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_38.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_38.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_38.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_38.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_39.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_39.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_39.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_39.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_4.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_4.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_4.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_4.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_40.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_40.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_40.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_40.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_41.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_41.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_41.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_41.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_42.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_42.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_42.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_42.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_43.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_43.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_43.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_43.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_44.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_44.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_44.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_44.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_45.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_45.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_45.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_45.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_46.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_46.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_46.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_46.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_47.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_47.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_47.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_47.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_48.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_48.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_48.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_48.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_49.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_49.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_49.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_49.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_5.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_5.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_5.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_5.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_50.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_50.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_50.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_50.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_51.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_51.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_51.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_51.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_52.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_52.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_52.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_52.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_53.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_53.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_53.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_53.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_54.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_54.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_54.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_54.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_55.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_55.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_55.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_55.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_56.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_56.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_56.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_56.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_57.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_57.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_57.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_57.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_58.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_58.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_58.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_58.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_59.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_59.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_59.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_59.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_6.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_6.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_6.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_6.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_60.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_60.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_60.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_60.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_61.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_61.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_61.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_61.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_62.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_62.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_62.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_62.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_63.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_63.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_63.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_63.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_64.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_64.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_64.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_64.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_65.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_65.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_65.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_65.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_66.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_66.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_66.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_66.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_67.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_67.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_67.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_67.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_68.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_68.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_68.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_68.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_69.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_69.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_69.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_69.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_7.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_7.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_7.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_7.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_70.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_70.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_70.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_70.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_71.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_71.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_71.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_71.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_72.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_72.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_72.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_72.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_73.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_73.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_73.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_73.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_74.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_74.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_74.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_74.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_75.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_75.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_75.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_75.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_76.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_76.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_76.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_76.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_77.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_77.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_77.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_77.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_78.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_78.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_78.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_78.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_79.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_79.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_79.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_79.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_8.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_8.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_8.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_8.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_80.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_80.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_80.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_80.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_81.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_81.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_81.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_81.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_82.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_82.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_82.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_82.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_83.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_83.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_83.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_83.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_84.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_84.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_84.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_84.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_85.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_85.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_85.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_85.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_86.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_86.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_86.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_86.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_87.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_87.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_87.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_87.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_88.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_88.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_88.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_88.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_89.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_89.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_89.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_89.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_9.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_9.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_9.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_9.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_90.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_90.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_90.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_90.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_91.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_91.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_91.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_91.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_92.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_92.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_92.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_92.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_93.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_93.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_93.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_93.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_94.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_94.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_94.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_94.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_95.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_95.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_95.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_95.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_96.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_96.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_96.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_96.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_97.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_97.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_97.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_97.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_98.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_98.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_98.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_98.png
diff --git a/PokemonGo/RocketAPI/Window/img/Pokemon_99.png b/PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_99.png
similarity index 100%
rename from PokemonGo/RocketAPI/Window/img/Pokemon_99.png
rename to PokemonGo.RocketBot.Window/Images/Pokemon/Pokemon_99.png
diff --git a/PokemonGo.RocketBot.Window/ItemSetting.Designer.cs b/PokemonGo.RocketBot.Window/ItemSetting.Designer.cs
new file mode 100644
index 0000000..a522ea1
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/ItemSetting.Designer.cs
@@ -0,0 +1,77 @@
+namespace PokemonGo.RocketAPI.Window {
+    partial class ItemSetting {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing) {
+            if (disposing && (components != null)) {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent() {
+            this.count = new System.Windows.Forms.NumericUpDown();
+            this.ItemId = new System.Windows.Forms.Label();
+            ((System.ComponentModel.ISupportInitialize)(this.count)).BeginInit();
+            this.SuspendLayout();
+            //
+            // count
+            //
+            this.count.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.count.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.count.Location = new System.Drawing.Point(132, 0);
+            this.count.Maximum = new decimal(new int[] {
+            999,
+            0,
+            0,
+            0});
+            this.count.Name = "count";
+            this.count.Size = new System.Drawing.Size(75, 21);
+            this.count.TabIndex = 0;
+            this.count.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            //
+            // ItemId
+            //
+            this.ItemId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.ItemId.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.ItemId.Location = new System.Drawing.Point(-1, -1);
+            this.ItemId.Name = "ItemId";
+            this.ItemId.Size = new System.Drawing.Size(127, 18);
+            this.ItemId.TabIndex = 1;
+            this.ItemId.Text = "Pokeball";
+            this.ItemId.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            //
+            // ItemSetting
+            //
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.ItemId);
+            this.Controls.Add(this.count);
+            this.Margin = new System.Windows.Forms.Padding(0);
+            this.Name = "ItemSetting";
+            this.Size = new System.Drawing.Size(210, 19);
+            ((System.ComponentModel.ISupportInitialize)(this.count)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.NumericUpDown count;
+        private System.Windows.Forms.Label ItemId;
+    }
+}
diff --git a/PokemonGo.RocketBot.Window/ItemSetting.cs b/PokemonGo.RocketBot.Window/ItemSetting.cs
new file mode 100644
index 0000000..d47f6fc
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/ItemSetting.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using POGOProtos.Inventory.Item;
+
+namespace PokemonGo.RocketAPI.Window {
+    public partial class ItemSetting : UserControl {
+
+        private ItemData itemData_;
+
+        public ItemSetting(ItemData itemData) {
+            InitializeComponent();
+            ItemData = itemData;
+
+            count.ValueChanged += Count_ValueChanged;
+        }
+
+        private void Count_ValueChanged(object sender, EventArgs e) {
+            ItemData.Count = Decimal.ToInt32(count.Value);
+        }
+
+        public ItemData ItemData
+        {
+            get
+            {
+                return itemData_;
+            }
+            set
+            {
+                itemData_ = value;
+                ItemId.Text = itemData_.ItemId.ToString().Remove(0, 4);
+                count.Value = itemData_.Count;
+            }
+        }
+    }
+}
diff --git a/PokemonGo.RocketBot.Window/ItemSetting.resx b/PokemonGo.RocketBot.Window/ItemSetting.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/ItemSetting.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Models/GMapMarkerPokestops.cs b/PokemonGo.RocketBot.Window/Models/GMapMarkerPokestops.cs
new file mode 100644
index 0000000..0786ed1
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Models/GMapMarkerPokestops.cs
@@ -0,0 +1,31 @@
+using System.Drawing;
+using GMap.NET;
+using GMap.NET.WindowsForms;
+
+namespace PokemonGo.RocketBot.Window.Models
+{
+    public class GMapMarkerPokestops : GMapMarker
+    {
+        /// <summary>
+        ///     Constructor
+        /// </summary>
+        /// <param name="p">The position of the marker</param>
+        public GMapMarkerPokestops(PointLatLng p, Image image)
+            : base(p)
+        {
+            MarkerImage = image;
+            Size = MarkerImage.Size;
+            Offset = new Point(-Size.Width/2, -Size.Height);
+        }
+
+        /// <summary>
+        ///     The image to display as a marker.
+        /// </summary>
+        public Image MarkerImage { get; set; }
+
+        public override void OnRender(Graphics g)
+        {
+            g.DrawImage(MarkerImage, LocalPosition.X, LocalPosition.Y, Size.Width, Size.Height);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Models/GMapMarkerTrainer.cs b/PokemonGo.RocketBot.Window/Models/GMapMarkerTrainer.cs
new file mode 100644
index 0000000..3d9148f
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Models/GMapMarkerTrainer.cs
@@ -0,0 +1,31 @@
+using System.Drawing;
+using GMap.NET;
+using GMap.NET.WindowsForms;
+
+namespace PokemonGo.RocketBot.Window.Models
+{
+    public class GMapMarkerTrainer : GMapMarker
+    {
+        /// <summary>
+        ///     Constructor
+        /// </summary>
+        /// <param name="p">The position of the marker</param>
+        public GMapMarkerTrainer(PointLatLng p, Image image)
+            : base(p)
+        {
+            MarkerImage = image;
+            Size = MarkerImage.Size;
+            Offset = new Point(-Size.Width/2, -Size.Height/2);
+        }
+
+        /// <summary>
+        ///     The image to display as a marker.
+        /// </summary>
+        public Image MarkerImage { get; set; }
+
+        public override void OnRender(Graphics g)
+        {
+            g.DrawImage(MarkerImage, LocalPosition.X, LocalPosition.Y, Size.Width, Size.Height);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Models/LoggingStrings.cs b/PokemonGo.RocketBot.Window/Models/LoggingStrings.cs
new file mode 100644
index 0000000..f6b9744
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Models/LoggingStrings.cs
@@ -0,0 +1,113 @@
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.State;
+
+namespace PokemonGo.RocketBot.Window.Models
+{
+    internal class LoggingStrings
+    {
+        internal static string Attention;
+
+        internal static string Berry;
+
+        internal static string Debug;
+
+        internal static string Egg;
+
+        internal static string Error;
+
+        internal static string Evolved;
+
+        internal static string LevelUp;
+
+        internal static string Farming;
+
+        internal static string Info;
+
+        internal static string Pkmn;
+
+        internal static string Pokestop;
+
+        internal static string Recycling;
+
+        internal static string Sniper;
+
+        internal static string Transferred;
+
+        internal static string Update;
+
+        internal static string New;
+
+        internal static string SoftBan;
+
+        internal static void SetStrings(ISession session)
+        {
+            Attention =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryAttention) ?? "ATTENTION";
+
+            Berry =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryBerry) ?? "BERRY";
+
+            Debug =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryDebug) ?? "DEBUG";
+
+            Egg =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryEgg) ?? "EGG";
+
+            Error =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryError) ?? "ERROR";
+
+            Evolved =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryEvolved) ?? "EVOLVED";
+
+            LevelUp =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryLevelUp) ?? "LEVELUP";
+
+            Farming =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryFarming) ?? "FARMING";
+
+            Info =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryInfo) ?? "INFO";
+
+            Pkmn =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryPkmn) ?? "PKMN";
+
+            Pokestop =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryPokestop) ?? "POKESTOP";
+
+            Recycling =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryRecycling) ?? "RECYCLING";
+
+            Sniper =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntrySniper) ?? "SNIPER";
+
+            Transferred =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryTransfered) ?? "TRANSFERRED";
+
+            Update =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryUpdate) ?? "UPDATE";
+
+            New =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntryNew) ?? "NEW";
+
+            SoftBan =
+                session?.Translation.GetTranslation(
+                    TranslationString.LogEntrySoftBan) ?? "SOFTBAN";
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Plugin/INecroPlugin.cs b/PokemonGo.RocketBot.Window/Plugin/INecroPlugin.cs
new file mode 100644
index 0000000..ff7b1f7
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Plugin/INecroPlugin.cs
@@ -0,0 +1,7 @@
+namespace PokemonGo.RocketBot.Window.Plugin
+{
+    public interface INecroPlugin
+    {
+        void Initialize(PluginInitializerInfo pii);
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Plugin/PluginInitializerInfo.cs b/PokemonGo.RocketBot.Window/Plugin/PluginInitializerInfo.cs
new file mode 100644
index 0000000..b37cbe0
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Plugin/PluginInitializerInfo.cs
@@ -0,0 +1,14 @@
+using PokemonGo.RocketBot.Logic;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Utils;
+
+namespace PokemonGo.RocketBot.Window.Plugin
+{
+    public class PluginInitializerInfo
+    {
+        public Session Session { get; set; }
+        public GlobalSettings Settings { get; set; }
+        public ConsoleLogger Logger { get; set; }
+        public Statistics Statistics { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Plugin/PluginManager.cs b/PokemonGo.RocketBot.Window/Plugin/PluginManager.cs
new file mode 100644
index 0000000..0247b27
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Plugin/PluginManager.cs
@@ -0,0 +1,121 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using PokemonGo.RocketBot.Logic.Logging;
+
+namespace PokemonGo.RocketBot.Window.Plugin
+{
+    /// <summary>
+    ///     Plugin loader.
+    /// </summary>
+    internal class PluginManager
+    {
+        // Private vars.
+        private readonly PluginInitializerInfo _initInfo;
+        private readonly List<INecroPlugin> _plugins;
+        private readonly Type _pluginType = typeof(INecroPlugin);
+
+
+        /// <summary>
+        ///     Plugin loader.
+        /// </summary>
+        /// <param name="initInfo"></param>
+        public PluginManager(PluginInitializerInfo initInfo)
+        {
+            _initInfo = initInfo;
+            _plugins = new List<INecroPlugin>();
+        }
+
+
+        /// <summary>
+        ///     Load all the plugins found in the Necro root folder.
+        /// </summary>
+        public void InitPlugins()
+        {
+            // Get all the plugin DLLs.
+            var pluginDir = Path.Combine(Directory.GetCurrentDirectory(), "Plugins");
+            if (!Directory.Exists(pluginDir))
+                Directory.CreateDirectory(pluginDir);
+
+            var dllFiles = Directory.GetFiles(pluginDir, "*.dll");
+
+            // Attempt to load all the assemblies from the DLLs.
+            var assemblies = new List<Assembly>();
+            foreach (var dll in dllFiles)
+            {
+                var assembly = AttemptAssemblyLoad(dll);
+                if (assembly != null)
+                    assemblies.Add(assembly);
+            }
+
+            // Attemp to load all plugins.
+            LoadPlugins(assemblies);
+        }
+
+
+        /// <summary>
+        ///     Attempt to load an assembly.
+        /// </summary>
+        /// <param name="dll">List of DLLs</param>
+        /// <returns>Assembly if found, null if not.</returns>
+        private Assembly AttemptAssemblyLoad(string dll)
+        {
+            try
+            {
+                var an = AssemblyName.GetAssemblyName(dll);
+                var assembly = Assembly.Load(an);
+                return assembly;
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+
+        /// <summary>
+        ///     Load plugins from an assembly.
+        /// </summary>
+        /// <param name="assemblies">List of assemblies.</param>
+        private void LoadPlugins(List<Assembly> assemblies)
+        {
+            // Get all the types from this assembly that match our plugin type.
+            ICollection<Type> pluginTypes = new List<Type>();
+            foreach (var assembly in assemblies)
+            {
+                try
+                {
+                    var types = assembly.GetTypes();
+                    foreach (var type in types)
+                    {
+                        if (type.IsInterface || type.IsAbstract)
+                            continue;
+
+                        if (type.GetInterface(_pluginType.FullName) != null)
+                            pluginTypes.Add(type);
+                    }
+                }
+                catch
+                {
+                    Logger.Write("Could not load assembly: " + assembly.GetName().FullName, LogLevel.Error);
+                }
+            }
+
+            // Iterate through them all and create an instance of the plugin.
+            foreach (var type in pluginTypes)
+            {
+                try
+                {
+                    var plugin = (INecroPlugin) Activator.CreateInstance(type);
+                    plugin.Initialize(_initInfo);
+                    _plugins.Add(plugin);
+                }
+                catch
+                {
+                    Logger.Write("Could not load plugin: " + type.FullName, LogLevel.Error);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/PokemomObject.cs b/PokemonGo.RocketBot.Window/PokemomObject.cs
new file mode 100644
index 0000000..7202afd
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/PokemomObject.cs
@@ -0,0 +1,126 @@
+using System;
+using System.Collections.Generic;
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using POGOProtos.Data;
+using POGOProtos.Enums;
+using POGOProtos.Networking.Responses;
+
+namespace PokemonGo.RocketBot.Window
+{
+    public class PokemonObject
+    {
+        private static bool _initialized;
+        public static Dictionary<PokemonId, int> CandyToEvolveDict = new Dictionary<PokemonId, int>();
+
+        public PokemonObject(PokemonData pokemonData)
+        {
+            PokemonData = pokemonData;
+        }
+
+        public PokemonData PokemonData { get; }
+
+        public ulong Id
+        {
+            get { return PokemonData.Id; }
+        }
+
+        public PokemonId PokemonId
+        {
+            get { return PokemonData.PokemonId; }
+        }
+
+        public int Cp
+        {
+            get { return PokemonData.Cp; }
+        }
+
+        public int IndividualAttack
+        {
+            get { return PokemonData.IndividualAttack; }
+        }
+
+        public int IndividualDefense
+        {
+            get { return PokemonData.IndividualDefense; }
+        }
+
+        public int IndividualStamina
+        {
+            get { return PokemonData.IndividualStamina; }
+        }
+
+        public double GetIV
+        {
+            get { return Math.Round(PokemonInfo.CalculatePokemonPerfection(PokemonData)/100, 2); }
+        }
+
+        public double GetLv
+        {
+            get { return PokemonInfo.GetLevel(PokemonData); }
+        }
+
+        public string Nickname
+        {
+            get { return PokemonData.Nickname; }
+        }
+
+        public string Move1
+        {
+            get { return PokemonData.Move1.ToString(); }
+        }
+
+        public string Move2
+        {
+            get { return PokemonData.Move2.ToString(); }
+        }
+
+        public int Candy { get; set; } = 0;
+
+        public int CandyToEvolve
+        {
+            get
+            {
+                if (CandyToEvolveDict.ContainsKey(PokemonData.PokemonId))
+                {
+                    return CandyToEvolveDict[PokemonData.PokemonId];
+                }
+                return 0;
+            }
+        }
+
+        public int EvolveTimes
+        {
+            get
+            {
+                if (CandyToEvolve > 0)
+                {
+                    return Candy/CandyToEvolve;
+                }
+                return 0;
+            }
+        }
+
+        public bool CanEvolve
+        {
+            get { return EvolveTimes > 0; }
+        }
+
+        public static void Initilize(DownloadItemTemplatesResponse itemtemplates)
+        {
+            if (!_initialized)
+            {
+                foreach (var t in itemtemplates.ItemTemplates)
+                {
+                    if (t != null)
+                    {
+                        if (t.PokemonSettings != null)
+                        {
+                            CandyToEvolveDict.Add(t.PokemonSettings.PokemonId, t.PokemonSettings.CandyToEvolve);
+                        }
+                    }
+                }
+                _initialized = true;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/PokemonGo.RocketBot.Window.csproj b/PokemonGo.RocketBot.Window/PokemonGo.RocketBot.Window.csproj
new file mode 100644
index 0000000..c3fee91
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/PokemonGo.RocketBot.Window.csproj
@@ -0,0 +1,634 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{1FEA147E-F704-497B-A538-00B053B5F672}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PokemonGo.RocketBot.Window</RootNamespace>
+    <AssemblyName>RocketBot</AssemblyName>
+    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+    <TargetFrameworkProfile />
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignManifests>false</SignManifests>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ManifestCertificateThumbprint>FABFDFD920EF90E9348A803A9225ADFB5B8BF8AB</ManifestCertificateThumbprint>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ManifestKeyFile>PoGo.NecroBot.CLI_TemporaryKey.pfx</ManifestKeyFile>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>Resources\Icon.ico</ApplicationIcon>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>none</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Analytics.NET, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\Analytics.2.0.2\lib\Analytics.NET.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="GeoCoordinatePortable, Version=0.1.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\GeoCoordinate.1.1.0\lib\portable-net45+wp80+win+wpa81\GeoCoordinatePortable.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="GMap.NET.Core, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b85b9027b614afef, processorArchitecture=MSIL">
+      <HintPath>..\packages\GMap.NET.WindowsForms.1.7.1\lib\net40\GMap.NET.Core.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="GMap.NET.WindowsForms, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b85b9027b614afef, processorArchitecture=MSIL">
+      <HintPath>..\packages\GMap.NET.WindowsForms.1.7.1\lib\net40\GMap.NET.WindowsForms.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Apis, Version=1.16.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL">
+      <HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Apis.Auth, Version=1.16.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL">
+      <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Apis.Auth.PlatformServices, Version=1.16.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL">
+      <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Apis.Core, Version=1.16.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL">
+      <HintPath>..\packages\Google.Apis.Core.1.16.0\lib\net45\Google.Apis.Core.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Apis.PlatformServices, Version=1.16.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab, processorArchitecture=MSIL">
+      <HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.PlatformServices.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+      <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="MetroFramework.Design, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Design.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="MetroFramework.Fonts, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Fonts.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>$(SolutionDir)\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="ObjectListView, Version=2.9.1.1072, Culture=neutral, PublicKeyToken=b1c5bf581481bcd4, processorArchitecture=MSIL">
+      <HintPath>..\packages\ObjectListView.Official.2.9.1\lib\net20\ObjectListView.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\S2Geometry.1.0.3\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="SuperSocket.SocketBase, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+      <HintPath>$(SolutionDir)\packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.SocketBase.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="SuperSocket.WebSocket, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+      <HintPath>$(SolutionDir)\packages\SuperSocket.WebSocket.1.6.6.1\lib\net45\SuperSocket.WebSocket.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Configuration" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.IO.Compression" />
+    <Reference Include="System.Management" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ConsoleEventListener.cs" />
+    <Compile Include="ConsoleLogger.cs" />
+    <Compile Include="Forms\SettingForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\SettingForm.Designer.cs">
+      <DependentUpon>SettingForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Helpers\DeviceHelper.cs" />
+    <Compile Include="Forms\ItemBox.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Forms\ItemBox.designer.cs">
+      <DependentUpon>ItemBox.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Forms\ItemForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\ItemForm.designer.cs">
+      <DependentUpon>ItemForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Forms\MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\MainForm.designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Helpers\MachineIdHelper.cs" />
+    <Compile Include="Helpers\ResourceHelper.cs" />
+    <Compile Include="Helpers\S2GMapDrawer.cs" />
+    <Compile Include="Helpers\TimeHelper.cs" />
+    <Compile Include="Helpers\VersionHelper.cs" />
+    <Compile Include="Models\GMapMarkerPokestops.cs" />
+    <Compile Include="Models\GMapMarkerTrainer.cs" />
+    <Compile Include="Models\LoggingStrings.cs" />
+    <Compile Include="Forms\NicknamePokemonForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\NicknamePokemonForm.designer.cs">
+      <DependentUpon>NicknamePokemonForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Plugin\INecroPlugin.cs" />
+    <Compile Include="Plugin\PluginInitializerInfo.cs" />
+    <Compile Include="Plugin\PluginManager.cs" />
+    <Compile Include="PokemomObject.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Resources\ProgressBar.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Events\WebResponce.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Events\EggListResponce.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Events\ItemListResponce.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Events\TrainerProfileResponce.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\GetEggListHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\GetItemsListHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\GetPokemonSettingsHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\GetTrainerProfileHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Helpers\TrainerProfileWeb.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Tasks\GetPokemonSettingsTask.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Tasks\GetTrainerProfileTask.cs" />
+    <Compile Include="WebSocketHandler\ActionCommands\EvolvePokemonHandler.cs" />
+    <Compile Include="WebSocketHandler\ActionCommands\TransferPokemonHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Helpers\EggListWeb.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Tasks\GetEggListTask.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Tasks\GetItemListTask.cs" />
+    <Compile Include="WebSocketHandler\EncodingHelper.cs" />
+    <Compile Include="WebSocketHandler\IWebSocketResponce.cs" />
+    <Compile Include="WebSocketHandler\IWebSocketRequestHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Events\PokemonListResponce.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Helpers\PokemonListWeb.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\GetPokemonListHandler.cs" />
+    <Compile Include="WebSocketHandler\GetCommands\Tasks\GetPokemonListTask.cs" />
+    <Compile Include="WebSocketHandler\WebSocketEventManager.cs" />
+    <Compile Include="WebSocketInterface.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+    <None Include="Config\log4net.config" />
+    <None Include="Config\log4net.unix.config" />
+    <Content Include="Config\Translations\translation.ca.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.cs.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.da.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.de.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.es.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.et.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.fr.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.gr.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.hu.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.id.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.it.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.lt.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.nl.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.no.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.pl.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.pt-br.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.pt-pt.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.ro.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.ru_RU.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.sv.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.th.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.tr.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.uk_UA.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.vi.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.zh_CN.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Config\Translations\translation.zh_TW.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <None Include="packages.config" />
+    <None Include="cert.pfx">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Include="Images\Miscs\question.png" />
+    <Content Include="Resources\device info.csv">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <None Include="supersocket.cmd" />
+    <None Include="supersocket.sh" />
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Service References\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Images\Items\ItemBlukBerry.png" />
+    <Content Include="Images\Items\ItemGreatBall.png" />
+    <Content Include="Images\Items\ItemHyperPotion.png" />
+    <Content Include="Images\Items\ItemIncenseOrdinary.png" />
+    <Content Include="Images\Items\ItemIncubatorBasic.png" />
+    <Content Include="Images\Items\ItemIncubatorBasicUnlimited.png" />
+    <Content Include="Images\Items\ItemItemStorageUpgrade.png" />
+    <Content Include="Images\Items\ItemLuckyEgg.png" />
+    <Content Include="Images\Items\ItemMasterBall.png" />
+    <Content Include="Images\Items\ItemMaxPotion.png" />
+    <Content Include="Images\Items\ItemMaxRevive.png" />
+    <Content Include="Images\Items\ItemNanabBerry.png" />
+    <Content Include="Images\Items\ItemPinapBerry.png" />
+    <Content Include="Images\Items\ItemPokeBall.png" />
+    <Content Include="Images\Items\ItemPokemonStorageUpgrade.png" />
+    <Content Include="Images\Items\ItemPotion.png" />
+    <Content Include="Images\Items\ItemRazzBerry.png" />
+    <Content Include="Images\Items\ItemRevive.png" />
+    <Content Include="Images\Items\ItemSpecialCamera.png" />
+    <Content Include="Images\Items\ItemSuperPotion.png" />
+    <Content Include="Images\Items\ItemTroyDisk.png" />
+    <Content Include="Images\Items\ItemUltraBall.png" />
+    <Content Include="Images\Items\ItemWeparBerry.png" />
+    <None Include="Images\Markers\Pokestop.png" />
+    <None Include="Images\Markers\Pokestop_looted.png" />
+    <None Include="Images\Markers\Trainer.png" />
+    <None Include="Images\Markers\Trainer_Front.png" />
+    <None Include="Images\Markers\Trainer_Left.png" />
+    <None Include="Images\Markers\Trainer_Right.png" />
+    <Content Include="Images\Pokemon\Pokemon_1.png" />
+    <Content Include="Images\Pokemon\Pokemon_10.png" />
+    <Content Include="Images\Pokemon\Pokemon_100.png" />
+    <Content Include="Images\Pokemon\Pokemon_101.png" />
+    <Content Include="Images\Pokemon\Pokemon_102.png" />
+    <Content Include="Images\Pokemon\Pokemon_103.png" />
+    <Content Include="Images\Pokemon\Pokemon_104.png" />
+    <Content Include="Images\Pokemon\Pokemon_105.png" />
+    <Content Include="Images\Pokemon\Pokemon_106.png" />
+    <Content Include="Images\Pokemon\Pokemon_107.png" />
+    <Content Include="Images\Pokemon\Pokemon_108.png" />
+    <Content Include="Images\Pokemon\Pokemon_109.png" />
+    <Content Include="Images\Pokemon\Pokemon_11.png" />
+    <Content Include="Images\Pokemon\Pokemon_110.png" />
+    <Content Include="Images\Pokemon\Pokemon_111.png" />
+    <Content Include="Images\Pokemon\Pokemon_112.png" />
+    <Content Include="Images\Pokemon\Pokemon_113.png" />
+    <Content Include="Images\Pokemon\Pokemon_114.png" />
+    <Content Include="Images\Pokemon\Pokemon_115.png" />
+    <Content Include="Images\Pokemon\Pokemon_116.png" />
+    <Content Include="Images\Pokemon\Pokemon_117.png" />
+    <Content Include="Images\Pokemon\Pokemon_118.png" />
+    <Content Include="Images\Pokemon\Pokemon_119.png" />
+    <Content Include="Images\Pokemon\Pokemon_12.png" />
+    <Content Include="Images\Pokemon\Pokemon_120.png" />
+    <Content Include="Images\Pokemon\Pokemon_121.png" />
+    <Content Include="Images\Pokemon\Pokemon_122.png" />
+    <Content Include="Images\Pokemon\Pokemon_123.png" />
+    <Content Include="Images\Pokemon\Pokemon_124.png" />
+    <Content Include="Images\Pokemon\Pokemon_125.png" />
+    <Content Include="Images\Pokemon\Pokemon_126.png" />
+    <Content Include="Images\Pokemon\Pokemon_127.png" />
+    <Content Include="Images\Pokemon\Pokemon_128.png" />
+    <Content Include="Images\Pokemon\Pokemon_129.png" />
+    <Content Include="Images\Pokemon\Pokemon_13.png" />
+    <Content Include="Images\Pokemon\Pokemon_130.png" />
+    <Content Include="Images\Pokemon\Pokemon_131.png" />
+    <Content Include="Images\Pokemon\Pokemon_132.png" />
+    <Content Include="Images\Pokemon\Pokemon_133.png" />
+    <Content Include="Images\Pokemon\Pokemon_134.png" />
+    <Content Include="Images\Pokemon\Pokemon_135.png" />
+    <Content Include="Images\Pokemon\Pokemon_136.png" />
+    <Content Include="Images\Pokemon\Pokemon_137.png" />
+    <Content Include="Images\Pokemon\Pokemon_138.png" />
+    <Content Include="Images\Pokemon\Pokemon_139.png" />
+    <Content Include="Images\Pokemon\Pokemon_14.png" />
+    <Content Include="Images\Pokemon\Pokemon_140.png" />
+    <Content Include="Images\Pokemon\Pokemon_141.png" />
+    <Content Include="Images\Pokemon\Pokemon_142.png" />
+    <Content Include="Images\Pokemon\Pokemon_143.png" />
+    <Content Include="Images\Pokemon\Pokemon_144.png" />
+    <Content Include="Images\Pokemon\Pokemon_145.png" />
+    <Content Include="Images\Pokemon\Pokemon_146.png" />
+    <Content Include="Images\Pokemon\Pokemon_147.png" />
+    <Content Include="Images\Pokemon\Pokemon_148.png" />
+    <Content Include="Images\Pokemon\Pokemon_149.png" />
+    <Content Include="Images\Pokemon\Pokemon_15.png" />
+    <Content Include="Images\Pokemon\Pokemon_150.png" />
+    <Content Include="Images\Pokemon\Pokemon_151.png" />
+    <Content Include="Images\Pokemon\Pokemon_16.png" />
+    <Content Include="Images\Pokemon\Pokemon_17.png" />
+    <Content Include="Images\Pokemon\Pokemon_18.png" />
+    <Content Include="Images\Pokemon\Pokemon_19.png" />
+    <Content Include="Images\Pokemon\Pokemon_2.png" />
+    <Content Include="Images\Pokemon\Pokemon_20.png" />
+    <Content Include="Images\Pokemon\Pokemon_21.png" />
+    <Content Include="Images\Pokemon\Pokemon_22.png" />
+    <Content Include="Images\Pokemon\Pokemon_23.png" />
+    <Content Include="Images\Pokemon\Pokemon_24.png" />
+    <Content Include="Images\Pokemon\Pokemon_25.png" />
+    <Content Include="Images\Pokemon\Pokemon_26.png" />
+    <Content Include="Images\Pokemon\Pokemon_27.png" />
+    <Content Include="Images\Pokemon\Pokemon_28.png" />
+    <Content Include="Images\Pokemon\Pokemon_29.png" />
+    <Content Include="Images\Pokemon\Pokemon_3.png" />
+    <Content Include="Images\Pokemon\Pokemon_30.png" />
+    <Content Include="Images\Pokemon\Pokemon_31.png" />
+    <Content Include="Images\Pokemon\Pokemon_32.png" />
+    <Content Include="Images\Pokemon\Pokemon_33.png" />
+    <Content Include="Images\Pokemon\Pokemon_34.png" />
+    <Content Include="Images\Pokemon\Pokemon_35.png" />
+    <Content Include="Images\Pokemon\Pokemon_36.png" />
+    <Content Include="Images\Pokemon\Pokemon_37.png" />
+    <Content Include="Images\Pokemon\Pokemon_38.png" />
+    <Content Include="Images\Pokemon\Pokemon_39.png" />
+    <Content Include="Images\Pokemon\Pokemon_4.png" />
+    <Content Include="Images\Pokemon\Pokemon_40.png" />
+    <Content Include="Images\Pokemon\Pokemon_41.png" />
+    <Content Include="Images\Pokemon\Pokemon_42.png" />
+    <Content Include="Images\Pokemon\Pokemon_43.png" />
+    <Content Include="Images\Pokemon\Pokemon_44.png" />
+    <Content Include="Images\Pokemon\Pokemon_45.png" />
+    <Content Include="Images\Pokemon\Pokemon_46.png" />
+    <Content Include="Images\Pokemon\Pokemon_47.png" />
+    <Content Include="Images\Pokemon\Pokemon_48.png" />
+    <Content Include="Images\Pokemon\Pokemon_49.png" />
+    <Content Include="Images\Pokemon\Pokemon_5.png" />
+    <Content Include="Images\Pokemon\Pokemon_50.png" />
+    <Content Include="Images\Pokemon\Pokemon_51.png" />
+    <Content Include="Images\Pokemon\Pokemon_52.png" />
+    <Content Include="Images\Pokemon\Pokemon_53.png" />
+    <Content Include="Images\Pokemon\Pokemon_54.png" />
+    <Content Include="Images\Pokemon\Pokemon_55.png" />
+    <Content Include="Images\Pokemon\Pokemon_56.png" />
+    <Content Include="Images\Pokemon\Pokemon_57.png" />
+    <Content Include="Images\Pokemon\Pokemon_58.png" />
+    <Content Include="Images\Pokemon\Pokemon_59.png" />
+    <Content Include="Images\Pokemon\Pokemon_6.png" />
+    <Content Include="Images\Pokemon\Pokemon_60.png" />
+    <Content Include="Images\Pokemon\Pokemon_61.png" />
+    <Content Include="Images\Pokemon\Pokemon_62.png" />
+    <Content Include="Images\Pokemon\Pokemon_63.png" />
+    <Content Include="Images\Pokemon\Pokemon_64.png" />
+    <Content Include="Images\Pokemon\Pokemon_65.png" />
+    <Content Include="Images\Pokemon\Pokemon_66.png" />
+    <Content Include="Images\Pokemon\Pokemon_67.png" />
+    <Content Include="Images\Pokemon\Pokemon_68.png" />
+    <Content Include="Images\Pokemon\Pokemon_69.png" />
+    <Content Include="Images\Pokemon\Pokemon_7.png" />
+    <Content Include="Images\Pokemon\Pokemon_70.png" />
+    <Content Include="Images\Pokemon\Pokemon_71.png" />
+    <Content Include="Images\Pokemon\Pokemon_72.png" />
+    <Content Include="Images\Pokemon\Pokemon_73.png" />
+    <Content Include="Images\Pokemon\Pokemon_74.png" />
+    <Content Include="Images\Pokemon\Pokemon_75.png" />
+    <Content Include="Images\Pokemon\Pokemon_76.png" />
+    <Content Include="Images\Pokemon\Pokemon_77.png" />
+    <Content Include="Images\Pokemon\Pokemon_78.png" />
+    <Content Include="Images\Pokemon\Pokemon_79.png" />
+    <Content Include="Images\Pokemon\Pokemon_8.png" />
+    <Content Include="Images\Pokemon\Pokemon_80.png" />
+    <Content Include="Images\Pokemon\Pokemon_81.png" />
+    <Content Include="Images\Pokemon\Pokemon_82.png" />
+    <Content Include="Images\Pokemon\Pokemon_83.png" />
+    <Content Include="Images\Pokemon\Pokemon_84.png" />
+    <Content Include="Images\Pokemon\Pokemon_85.png" />
+    <Content Include="Images\Pokemon\Pokemon_86.png" />
+    <Content Include="Images\Pokemon\Pokemon_87.png" />
+    <Content Include="Images\Pokemon\Pokemon_88.png" />
+    <Content Include="Images\Pokemon\Pokemon_89.png" />
+    <Content Include="Images\Pokemon\Pokemon_9.png" />
+    <Content Include="Images\Pokemon\Pokemon_90.png" />
+    <Content Include="Images\Pokemon\Pokemon_91.png" />
+    <Content Include="Images\Pokemon\Pokemon_92.png" />
+    <Content Include="Images\Pokemon\Pokemon_93.png" />
+    <Content Include="Images\Pokemon\Pokemon_94.png" />
+    <Content Include="Images\Pokemon\Pokemon_95.png" />
+    <Content Include="Images\Pokemon\Pokemon_96.png" />
+    <Content Include="Images\Pokemon\Pokemon_97.png" />
+    <Content Include="Images\Pokemon\Pokemon_98.png" />
+    <Content Include="Images\Pokemon\Pokemon_99.png" />
+    <Content Include="Resources\encrypt.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Resources\Icon.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Forms\ItemBox.resx">
+      <DependentUpon>ItemBox.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Forms\MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Forms\NicknamePokemonForm.resx">
+      <DependentUpon>NicknamePokemonForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Forms\SettingForm.resx">
+      <DependentUpon>SettingForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
+      <Visible>False</Visible>
+      <ProductName>Microsoft .NET Framework 4.5.2 %28x86 和 x64%29</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\POGOProtos\POGOProtos.csproj">
+      <Project>{a03a7bb2-4f0b-467b-84b2-9a76e6aae6fb}</Project>
+      <Name>POGOProtos</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\PokemonGo.RocketAPI\PokemonGo.RocketAPI.csproj">
+      <Project>{05d2da44-1b8e-4cf7-94ed-4d52451cd095}</Project>
+      <Name>PokemonGo.RocketAPI</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\PokemonGo.RocketBot.Logic\PokemonGo.RocketBot.Logic.csproj">
+      <Project>{0739e40d-c589-4aeb-93e5-ee8cd6773c60}</Project>
+      <Name>PokemonGo.RocketBot.Logic</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+  <UsingTask TaskName="CosturaCleanup" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" TaskFactory="CodeTaskFactory">
+    <ParameterGroup>
+      <Config Output="false" Required="true" ParameterType="Microsoft.Build.Framework.ITaskItem" />
+      <Files Output="false" Required="true" ParameterType="Microsoft.Build.Framework.ITaskItem[]" />
+    </ParameterGroup>
+    <Task Evaluate="true">
+      <Reference xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Include="System.Xml" />
+      <Reference xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Include="System.Xml.Linq" />
+      <Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System" />
+      <Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System.IO" />
+      <Using xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Namespace="System.Xml.Linq" />
+      <Code xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Type="Fragment" Language="cs"><![CDATA[
+var config = XElement.Load(Config.ItemSpec).Elements("Costura").FirstOrDefault();
+
+if (config == null) return true;
+
+var excludedAssemblies = new List<string>();
+var attribute = config.Attribute("ExcludeAssemblies");
+if (attribute != null)
+    foreach (var item in attribute.Value.Split('|').Select(x => x.Trim()).Where(x => x != string.Empty))
+        excludedAssemblies.Add(item);
+var element = config.Element("ExcludeAssemblies");
+if (element != null)
+    foreach (var item in element.Value.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Where(x => x != string.Empty))
+        excludedAssemblies.Add(item);
+
+var filesToCleanup = Files.Select(f => f.ItemSpec).Where(f => !excludedAssemblies.Contains(Path.GetFileNameWithoutExtension(f), StringComparer.InvariantCultureIgnoreCase));
+
+foreach (var item in filesToCleanup)
+  File.Delete(item);
+]]></Code>
+    </Task>
+  </UsingTask>
+  <Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild;NonWinFodyTarget">
+    <CosturaCleanup Config="FodyWeavers.xml" Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
+  </Target>
+  <Import Project="$(SolutionDir)\packages\Fody.1.29.4\build\dotnet\Fody.targets" Condition="Exists('$(SolutionDir)\packages\Fody.1.29.4\build\dotnet\Fody.targets')" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('$(SolutionDir)\packages\Fody.1.29.4\build\dotnet\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Fody.1.29.4\build\dotnet\Fody.targets'))" />
+  </Target>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Program.cs b/PokemonGo.RocketBot.Window/Program.cs
new file mode 100644
index 0000000..3334776
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Program.cs
@@ -0,0 +1,20 @@
+#region using directives
+
+using System;
+using System.Windows.Forms;
+using PokemonGo.RocketBot.Window.Forms;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Window
+{
+    internal class Program
+    {
+        [STAThread]
+        private static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.Run(new MainForm());
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs b/PokemonGo.RocketBot.Window/Properties/AssemblyInfo.cs
similarity index 73%
rename from PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs
rename to PokemonGo.RocketBot.Window/Properties/AssemblyInfo.cs
index bb8d2be..0681526 100644
--- a/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs
+++ b/PokemonGo.RocketBot.Window/Properties/AssemblyInfo.cs
@@ -1,26 +1,32 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
+#region using directives
+
+using System.Reflection;
 using System.Runtime.InteropServices;

+#endregion
+
 // General Information about an assembly is controlled through the following
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("PokemonGo.RocketAPI.Window")]
+
+[assembly: AssemblyTitle("RocketBot 2.0")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("PokemonGo.RocketAPI.Window")]
-[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyProduct("PokemonGo.RocketBot.Window")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

 // Setting ComVisible to false makes the types in this assembly not visible
 // to COM components.  If you need to access a type in this assembly from
 // COM, set the ComVisible attribute to true on that type.
+
 [assembly: ComVisible(false)]

 // The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("c85b9d78-9ca3-4830-84cd-6b69090b987f")]
+
+[assembly: Guid("1fea147e-f704-497b-a538-00b053b5f672")]

 // Version information for an assembly consists of the following four values:
 //
@@ -32,5 +38,6 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.7.3.2")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+
+[assembly: AssemblyVersion("2.0.0")]
+[assembly: AssemblyFileVersion("2.0.0")]
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/Properties/Resources.Designer.cs b/PokemonGo.RocketBot.Window/Properties/Resources.Designer.cs
similarity index 83%
rename from PokemonGo/RocketAPI/Window/Properties/Resources.Designer.cs
rename to PokemonGo.RocketBot.Window/Properties/Resources.Designer.cs
index 540bcb6..fe5a228 100644
--- a/PokemonGo/RocketAPI/Window/Properties/Resources.Designer.cs
+++ b/PokemonGo.RocketBot.Window/Properties/Resources.Designer.cs
@@ -8,7 +8,7 @@
 // </auto-generated>
 //------------------------------------------------------------------------------

-namespace PokemonGo.RocketAPI.Window.Properties {
+namespace PokemonGo.RocketBot.Window.Properties {
     using System;


@@ -39,7 +39,7 @@ namespace PokemonGo.RocketAPI.Window.Properties {
         internal static global::System.Resources.ResourceManager ResourceManager {
             get {
                 if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PokemonGo.RocketAPI.Window.Properties.Resources", typeof(Resources).Assembly);
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PokemonGo.RocketBot.Window.Properties.Resources", typeof(Resources).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
@@ -60,6 +60,246 @@ namespace PokemonGo.RocketAPI.Window.Properties {
             }
         }

+        /// <summary>
+        ///   查找类似于 (Icon) 的 System.Drawing.Icon 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Icon Icon {
+            get {
+                object obj = ResourceManager.GetObject("Icon", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemBlukBerry {
+            get {
+                object obj = ResourceManager.GetObject("ItemBlukBerry", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemGreatBall {
+            get {
+                object obj = ResourceManager.GetObject("ItemGreatBall", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemHyperPotion {
+            get {
+                object obj = ResourceManager.GetObject("ItemHyperPotion", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemIncenseOrdinary {
+            get {
+                object obj = ResourceManager.GetObject("ItemIncenseOrdinary", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemIncubatorBasic {
+            get {
+                object obj = ResourceManager.GetObject("ItemIncubatorBasic", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemIncubatorBasicUnlimited {
+            get {
+                object obj = ResourceManager.GetObject("ItemIncubatorBasicUnlimited", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemItemStorageUpgrade {
+            get {
+                object obj = ResourceManager.GetObject("ItemItemStorageUpgrade", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemLuckyEgg {
+            get {
+                object obj = ResourceManager.GetObject("ItemLuckyEgg", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemMasterBall {
+            get {
+                object obj = ResourceManager.GetObject("ItemMasterBall", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemMaxPotion {
+            get {
+                object obj = ResourceManager.GetObject("ItemMaxPotion", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemMaxRevive {
+            get {
+                object obj = ResourceManager.GetObject("ItemMaxRevive", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemNanabBerry {
+            get {
+                object obj = ResourceManager.GetObject("ItemNanabBerry", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemPinapBerry {
+            get {
+                object obj = ResourceManager.GetObject("ItemPinapBerry", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemPokeBall {
+            get {
+                object obj = ResourceManager.GetObject("ItemPokeBall", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemPokemonStorageUpgrade {
+            get {
+                object obj = ResourceManager.GetObject("ItemPokemonStorageUpgrade", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemPotion {
+            get {
+                object obj = ResourceManager.GetObject("ItemPotion", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemRazzBerry {
+            get {
+                object obj = ResourceManager.GetObject("ItemRazzBerry", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemRevive {
+            get {
+                object obj = ResourceManager.GetObject("ItemRevive", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemSpecialCamera {
+            get {
+                object obj = ResourceManager.GetObject("ItemSpecialCamera", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemSuperPotion {
+            get {
+                object obj = ResourceManager.GetObject("ItemSuperPotion", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemTroyDisk {
+            get {
+                object obj = ResourceManager.GetObject("ItemTroyDisk", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemUltraBall {
+            get {
+                object obj = ResourceManager.GetObject("ItemUltraBall", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap ItemWeparBerry {
+            get {
+                object obj = ResourceManager.GetObject("ItemWeparBerry", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>
@@ -1569,5 +1809,65 @@ namespace PokemonGo.RocketAPI.Window.Properties {
                 return ((System.Drawing.Bitmap)(obj));
             }
         }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap Pokestop {
+            get {
+                object obj = ResourceManager.GetObject("Pokestop", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap Pokestop_looted {
+            get {
+                object obj = ResourceManager.GetObject("Pokestop_looted", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap question {
+            get {
+                object obj = ResourceManager.GetObject("question", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap Trainer_Front {
+            get {
+                object obj = ResourceManager.GetObject("Trainer_Front", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap Trainer_Left {
+            get {
+                object obj = ResourceManager.GetObject("Trainer_Left", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap Trainer_Right {
+            get {
+                object obj = ResourceManager.GetObject("Trainer_Right", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
     }
 }
diff --git a/PokemonGo.RocketBot.Window/Properties/Resources.resx b/PokemonGo.RocketBot.Window/Properties/Resources.resx
new file mode 100644
index 0000000..4636423
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Properties/Resources.resx
@@ -0,0 +1,2005 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAYAUFAAAAEAIADoZwAAZgAAAEhIAAABACAAiFQAAE5oAABAQAAAAQAgAChCAADWvAAAMDAAAAEA
+        IACoJQAA/v4AACAgAAABACAAqBAAAKYkAQAQEAAAAQAgAGgEAABONQEAKAAAAFAAAACgAAAAAQAgAAAA
+        AADAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQ/xAQEP9aUsX/WlLF/xAQ
+        EP9aUsX/WlLF/1pSxf8QEBD/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQ
+        EP9aUsX/EBAQ/1pSxf9aUsX/ABBi/1pSxf9aUsX/WlLF/1pSxf9aUsX/EBAQ/wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAABAQEP8QEBD/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQ/xAQEP9aUsX/WlLF/xAQ
+        EP9aUsX/WlLF/1pSxf8QEBD/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAABBi/1pSxf8AEGL/apz//zFz7v9aUsX/apz//zFz7v9aUsX/WlLF/1pS
+        xf9aUsX/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAQEBD/EBAQ/wAAAAAAAAAAAAAAABAQEP8QEBD/c8Xu/3PF7v8QEBD/AAAAAAAAAAAAAAAAAAAAABAQ
+        EP9aUsX/EBAQ/1pSxf9aUsX/EBAQ/1pSxf9aUsX/WlLF/1pSxf9aUsX/EBAQ/wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGL/apz//1pSxf9qnP//apz//2qc
+        //9aUsX/apz//zFz7v9aUsX/WlLF/1pSxf9aUsX/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP9zxe7/IGKU/xAQEP8QEBD/c8Xu/3PF7v9zxe7/c8Xu/xAQ
+        EP8AAAAAAAAAAAAAAAAAAAAAABBi/1pSxf8AEGL/MXPu/zFz7v8AEGL/WlLF/zFz7v8xc+7/WlLF/1pS
+        xf9aUsX/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFpS
+        xf9qnP//apz//1pSxf9qnP//apz//2qc//9qnP//apz//zFz7v8xc+7/WlLF/1pSxf8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/EBAQ/wAAAAAAAAAAEBAQ/3PF7v9zxe7/IGKU/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/IGKU/xAQEP8QEBD/AAAAAAAAAAAAEGL/MXPu/zFz7v8AEGL/MXPu/zFz
+        7v8AEGL/MXPu/zFz7v8xc+7/WlLF/1pSxf8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFpSxf9aUsX/apz//2qc//9qnP//apz//2qc//8xc+7/MXPu/zFz
+        7v9aUsX/WlLF/1pSxf8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP9zxe7/EBAQ/yBi
+        lP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAA
+        AAAAEGL/MXPu/zFz7v9aUsX/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/1pSxf8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaUsX/WlLF/zFz
+        7v8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v9aUsX/WlLF/1pSxf8QEBD/AAAAAAAAAAAAAAAAAAAAAAAA
+        AAAQEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/EBAQ/xAQEP8AAAAAAAAAAAAAAAAAEGL/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf9aUsX/WlLF/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAABBi/wAQYv8xc+7/YmqD/2Jqg/9iaoP/MXPu/zFz7v9aUsX/WlLF/xAQ
+        EP8QEBD/AAAAAAAAAAAgYpT/EBAQ/xAQEP8QEBD/EBAQ/xAQEP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8gYpT/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAEGL/ABBi/1pS
+        xf9aUsX/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYv9iaoP/YmqD/2Jq
+        g/9iaoP/YmqD/xAQEP8QEBD/EBAQ/xAQEP8gYpT/IGKU/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQ
+        EP8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/wAA
+        AAAQEBD/EBAQ/yBilP8gYpT/EBAQ/xAQEP9aUsX/WlLF/1pSxf9aUsX/EBAQ/xAQEP8AEGL/EBAQ/wAA
+        AAAAAAAAAAAAABAQEP8QEBD/EBAQ/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAIGKU/wAQYv9iaoP/YmqD/2Jqg/9iaoP/YmqD/xAQEP8QEBD/IGKU/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8QEBD/EBAQ/xAQEP9zxe7/c8Xu/yBilP8QEBD/EBAQ/xAQEP8QEBD/WlLF/1pS
+        xf9aUsX/EBAQ/3PF7v9zxe7/EBAQ/xAQEP8QEBD/WlLF/1pSxf9aUsX/EBAQ/xAQEP8QEBD/EBAQ/wAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP9zxe7/lPb//yBilP9iaoP/apz//2qc//8xc+7/YmqD/yBi
+        lP9zxe7/IGKU/xAQEP8QEBD/EBAQ/xAQEP8QEBD/IGKU/yBilP9zxe7/c8Xu/3PF7v8QEBD/IGKU/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8gYpT/IGKU/xAQ
+        EP8QEBD/EBAQ/xAQEP8QEBD/WlLF/1pSxf8QEBD/c8Xu/3PF7v9zxe7/IGKU/xAQEP9aUsX/WlLF/1pS
+        xf8QEBD/WlLF/1pSxf8AEGL/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGKU/5T2//+U9v//lPb//yBi
+        lP9iaoP/apz//xAQEP8QEBD/EBAQ/3PF7v8QEBD/IDHF//b///8gMcX/IDHF/yAxxf8gMcX/IDHF/yBi
+        lP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yBilP8gYpT/IGKU/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/IGKU/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/1pSxf9zxe7/c8Xu/3PF
+        7v8gYpT/ABBi/1pSxf8xc+7/MXPu/wAQYv8xc+7/MXPu/1pSxf8QEBD/AAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQ
+        EP+U9v//lPb//5T2//+U9v//c8Xu/wAQYv8gYpT/c8Xu/3PF7v9zxe7/EBAQ/xAQEP8gMcX/9v////b/
+        //8QEBD/IDHF/yAxxf8gMcX/EBAQ/yBilP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yBilP9aUsX/WlLF/xAQEP8QEBD/EBAQ/xAQ
+        EP8QEBD/EBAQ/3PF7v9zxe7/c8Xu/3PF7v8QEBD/ABBi/zFz7v8xc+7/WlLF/zFz7v8xc+7/WlLF/xAQ
+        EP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAEBAQ/5T2//+U9v//lPb//5T2//+U9v//IGKU/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/yBilP8QEBD/EBAQ/xAQEP8QEFL/EBBS/xAQUv8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/xAQ
+        EP9aUsX/WlLF/1pSxf8QEBD/EBAQ/xAQEP8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/WlLF/1pS
+        xf9aUsX/WlLF/1pSxf9aUsX/ABBi/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYpT/lPb//yBilP8gYpT/lPb//xAQ
+        EP9zxe7/lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yBilP8gYpT/IGKU/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP9aUsX/WlLF/1pSxf8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v8gYpT/IGKU/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAgYpT/AAAAACBilP+U9v//EBAQ/5T2//8QEBD/EBAQ/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/5T2
+        //8QEBD/IGKU/3PF7v+U9v//c8Xu/5T2//9zxe7/c8Xu/3PF7v8QEBD/WlLF/1pSxf9aUsX/WlLF/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/ABBi/wAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP8AAAAAEBAQ/2Jqg/9iaoP/IGKU/5T2
+        //+U9v//lPb//5T2//+U9v//IGKU/yBilP8gYpT/lPb//5T2//+U9v//lPb//5T2//+U9v//c8Xu/3PF
+        7v+U9v//lPb//5T2//+U9v//lPb//5T2//8gYpT/lPb//3PF7v+U9v//c8Xu/5T2//8gYpT/IGKU/1pS
+        xf9aUsX/WlLF/1pSxf9aUsX/IGKU/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8gYpT/EBAQ/xAQ
+        EP9aUsX/WlLF/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAQEBD/1d7e/2Jqg/8QEBD/c8Xu/3PF7v9zxe7/IGKU/yBilP9aUsX/WlLF/1pSxf8gYpT/IGKU/3PF
+        7v+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//IGKU/3PF7v9zxe7/lPb//3PF
+        7v+U9v//c8Xu/xAQEP9aUsX/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/IGKU/yBilP8gYpT/IGKU/3PF
+        7v9zxe7/c8Xu/xAQEP9zxe7/c8Xu/xAQEP8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/c8Xu/3PF7v9zxe7/c8Xu/yBilP8xc+7/ABBi/xAQ
+        EP/2////EBAQ/1pSxf9aUsX/IGKU/3PF7v9zxe7/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //8gYpT/c8Xu/3PF7v9zxe7/lPb//3PF7v+U9v//EBAQ/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf9aUsX/ABBi/3PF7v9zxe7/IGKU/3PF7v9zxe7/EBAQ/3PF7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP+U9v//c8Xu/yBi
+        lP9zxe7/c8Xu/yBilP8gYpT/WlLF/xAQEP8QEBD/9v///wAQYv9aUsX/IGKU/3PF7v9zxe7/c8Xu/5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//8QEBD/c8Xu/3PF7v9zxe7/EBAQ/yBilP9aUsX/WlLF/1pS
+        xf9aUsX/WlLF/1pSxf8QEBD/EBAQ/xAQEP8AEGL/c8Xu/3PF7v9zxe7/IGKU/xAQEP9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAgYpT/lPb//5T2//8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8gYpT/ABBi/xAQEP/V3t7/ABBi/1pS
+        xf9aUsX/IGKU/3PF7v9zxe7/c8Xu/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//8QEBD/c8Xu/3PF
+        7v8gYpT/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/ABBi/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/IGKU/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/EBAQ/wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYpT/lPb//yBilP+U9v//lPb//3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/IGKU/wAQYv8AEGL/WlLF/1pSxf9aUsX/WlLF/xAQEP8QEBD/EBAQ/5T2//+U9v//EBAQ/yBi
+        lP8gYpT/IGKU/yBilP9zxe7/c8Xu/3PF7v8gYpT/EBAQ/xAQEP8QEBD/EBAQ/xAQEP8QEBD/EBAQ/wAQ
+        Yv8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v8QEBD/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/lPb//5T2
+        //+U9v//lPb//3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf9aUsX/EBAQ/xAQEP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8gYpT/EBAQ/xAQ
+        EP8QEBD/EBAQ/1pSxf8AEGL/AAAAACBilP9zxe7/ABBi/wAQYv8AEGL/ABBi/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAABAQEP+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/1pS
+        xf9aUsX/WlLF/wAQYv8AEGL/ABBi/wAQYv8xc+7/MXPu/xAQEP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8gYpT/WlLF/1pSxf8AEGL/ABBi/xAQEP8AAAAAIGKU/wAQYv9aUsX/WlLF/1pS
+        xf9aUsX/ABBi/wAQYv9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGL/EBAQ/5T2//+U9v//lPb//5T2//+U9v//c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/wAQYv9aUsX/EBAQ/1pSxf9aUsX/ABBi/wAQYv8xc+7/EBAQ/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yBilP8QEBD/IGKU/1pSxf8AEGL/ABBi/xAQEP9aUsX/EBAQ/xAQ
+        EP8AEGL/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/xAQEP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBi/zFz7v8gYpT/lPb//5T2
+        //+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/lPb//3PF7v9zxe7/ABBi/1pSxf8xc+7/EBAQ/1pS
+        xf9aUsX/WlLF/1pSxf8xc+7/EBAQ/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/WlLF/xAQ
+        EP8QEBD/EBAQ/1pSxf8QEBD/ABBi/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/xAQ
+        EP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAEGL/EBAQ/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v+U9v//c8Xu/3PF
+        7v9zxe7/ABBi/zFz7v8xc+7/ABBi/1pSxf9aUsX/ABBi/2qc//8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v8gYpT/EBAQ/1pSxf9aUsX/EBAQ/xAQEP8QEBD/WlLF/wAQYv9aUsX/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf8QEBD/EBAQ/xAQEP9aUsX/IGKU/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAABBi/2qc//8QEBD/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF
+        7v9zxe7/lPb//5T2//+U9v//c8Xu/3PF7v8AEGL/ABBi/zFz7v8xc+7/WlLF/wAQYv8AEGL/apz//xAQ
+        EP9zxe7/c8Xu/3PF7v8gYpT/IGKU/xAQEP8QEBD/WlLF/1pSxf8QEBD/EBAQ/xAQEP9aUsX/ABBi/1pS
+        xf8xc+7/MXPu/1pSxf9aUsX/WlLF/1pSxf8QEBD/EBAQ/xAQEP9aUsX/IGKU/3PF7v9zxe7/c8Xu/3PF
+        7v+U9v//lPb//xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGL/WlLF/xAQEP+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//c8Xu/5T2//+U9v//lPb//5T2//+U9v//c8Xu/3PF7v8AEGL/ABBi/wAQ
+        Yv8xc+7/apz//2qc//9qnP//EBAQ/3PF7v9zxe7/c8Xu/yBilP8QEBD/EBAQ/xAQEP9iaoP/MXPu/xAQ
+        EP8QEBD/WlLF/wAQYv9aUsX/MXPu/zFz7v8xc+7/MXPu/1pSxf9aUsX/EBAQ/xAQEP8QEBD/EBAQ/xAQ
+        EP8gYpT/c8Xu/3PF7v9zxe7/c8Xu/5T2//+U9v//EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAEBAQ/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/lPb//5T2//+U9v//lPb//5T2
+        //9zxe7/c8Xu/3PF7v9zxe7/ABBi/wAQYv8AEGL/ABBi/wAQYv8AEGL/c8Xu/3PF7v9zxe7/c8Xu/yBi
+        lP8QEBD/YmqD/2Jqg/9iaoP/YmqD/xAQEP9aUsX/ABBi/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/1pS
+        xf9aUsX/EBAQ/xAQEP8QEBD/ABBi/3PF7v9zxe7/c8Xu/3PF7v9zxe7/IGKU/3PF7v8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYpT/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/IGKU/xAQEP9iaoP/YmqD/2Jqg/9iaoP/YmqD/1pSxf8AEGL/MXPu/zFz
+        7v8xc+7/MXPu/zFz7v8xc+7/WlLF/1pSxf9aUsX/EBAQ/xAQEP8AEGL/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v8QEBD/IGKU/5T2//8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYpT/EBAQ/5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF7v+U9v//c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/IGKU/zFz7v9iaoP/YmqD/2Jq
+        g/9iaoP/WlLF/wAQYv8xc+7/MXPu/zFz7v8xc+7/YmqD/2Jqg/8xc+7/WlLF/1pSxf8QEBD/EBAQ/wAQ
+        Yv9zxe7/c8Xu/3PF7v9zxe7/IGKU/wAAAAAAAAAAIGKU/yBilP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAQEBD/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//3PF7v+U9v//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/IGKU/yBi
+        lP8gYpT/MXPu/zFz7v8xc+7/YmqD/zFz7v8xc+7/WlLF/zFz7v8xc+7/MXPu/zFz7v8xc+7/YmqD/2Jq
+        g/9aUsX/WlLF/1pSxf8AEGL/AAAAACBilP9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/xAQEP9iaoP/MXPu/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v9aUsX/MXPu/zFz
+        7v8xc+7/MXPu/2Jqg/9iaoP/YmqD/1pSxf9aUsX/WlLF/wAQYv8AAAAAIGKU/3PF7v8gYpT/EBAQ/wAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/lPb//5T2
+        //+U9v//IGKU/yBilP+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP9iaoP/YmqD/2Jqg/8xc+7/MXPu/zFz
+        7v8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/2Jqg/9iaoP/EBAQ/1pSxf8AEGL/AAAAAAAA
+        AAAgYpT/c8Xu/yBilP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAABAQEP+U9v//IGKU/xAQEP8AAAAAAAAAABAQEP+U9v//lPb//yBilP8gYpT/lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//yBilP8QEBD/EBAQ/3PF7v9zxe7/EBAQ/2Jq
+        g/9iaoP/YmqD/2Jqg/9iaoP/YmqD/2Jqg/8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v8xc+7/YmqD/2Jq
+        g/8QEBD/EBAQ/wAQYv8AAAAAAAAAACBilP8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGKU/xAQEP8gYpT/AAAAAAAAAAAAAAAAEBAQ/yBi
+        lP8gYpT/AAAAABAQEP+U9v//lPb//5T2//+U9v//IGKU/5T2//+U9v//lPb//5T2//+U9v//EBAQ/2Jq
+        g/9iaoP/EBAQ/xAQEP8QEBD/YmqD/2Jqg/9iaoP/YmqD/2Jqg/9iaoP/MXPu/zFz7v8xc+7/MXPu/zFz
+        7v8xc+7/MXPu/zFz7v8xc+7/EBAQ/xAQEP8QEBD/ABBi/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP+U9v//lPb//5T2//8gYpT/IGKU/5T2
+        //+U9v//lPb//5T2//8QEBD/YmqD/2Jqg/9iaoP/YmqD/2Jqg/9iaoP/YmqD/2Jqg/9iaoP/MXPu/zFz
+        7v8xc+7/MXPu/zFz7v9iaoP/MXPu/2Jqg/8xc+7/MXPu/zFz7v8QEBD/EBAQ/wAQYv8AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGKU/5T2
+        //+U9v//IGKU/wAAAAAQEBD/IGKU/5T2//+U9v//lPb//3PF7v8QEBD/YmqD/2Jqg/9iaoP/YmqD/zFz
+        7v8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v9iaoP/YmqD/2Jqg/8xc+7/WlLF/xAQ
+        EP8QEBD/ABBi/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAIGKU/5T2//8gYpT/AAAAABAQEP9zxe7/IGKU/yBilP+U9v//lPb//xAQ
+        EP9qnP//apz//2qc//9qnP//apz//2qc//8xc+7/MXPu/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/2Jq
+        g/9iaoP/YmqD/zFz7v9aUsX/EBAQ/wAQYv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP9zxe7/IGKU/3PF7v8QEBD/EBAQ/3PF
+        7v9zxe7/c8Xu/yBilP8gYpT/WlLF/2qc//9qnP//apz//2qc//9qnP//apz//2qc//9qnP//MXPu/zFz
+        7v8xc+7/MXPu/zFz7v8xc+7/YmqD/2Jqg/9iaoP/WlLF/1pSxf8QEBD/ABBi/wAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/EBAQ/xAQEP8AAAAAEBAQ/3PF
+        7v9zxe7/c8Xu/3PF7v8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/WlLF/2qc//9qnP//apz//2qc
+        //9qnP//apz//2qc//9qnP//apz//zFz7v8xc+7/MXPu/zFz7v9iaoP/YmqD/2Jqg/9aUsX/WlLF/wAQ
+        Yv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBi
+        lP9zxe7/c8Xu/xAQEP8QEBD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/WlLF/1pSxf9qnP//apz//2qc//9qnP//apz//2qc//9qnP//apz//zFz7v8xc+7/YmqD/2Jq
+        g/9iaoP/EBAQ/1pSxf8AEGL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP9zxe7/c8Xu/3PF7v8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/c8Xu/1pSxf9qnP//apz//2qc//9qnP//apz//2qc
+        //9qnP//MXPu/zFz7v9iaoP/YmqD/xAQEP8AEGL/ABBi/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/3PF7v9zxe7/c8Xu/1pS
+        xf9aUsX/WlLF/2qc//9qnP//apz//zFz7v8xc+7/YmqD/wAQYv8AEGL/ABBi/3PF7v8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAIGKU/3PF7v9zxe7/c8Xu/5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQ
+        EP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/WlLF/wAQYv8AEGL/ABBi/wAQYv8AEGL/c8Xu/3PF
+        7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGKU/3PF7v9zxe7/lPb//5T2//9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8gYpT/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/c8Xu/3PF
+        7v+U9v//lPb//3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yBilP9zxe7/lPb//5T2//+U9v//lPb//3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/wAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAABAQEP9zxe7/lPb//5T2//+U9v//lPb//3PF7v9zxe7/c8Xu/3PF7v8gYpT/c8Xu/5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQ/3PF7v+U9v//lPb//5T2//+U9v//c8Xu/3PF
+        7v9zxe7/c8Xu/yBilP+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYpT/c8Xu/5T2
+        //+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/IGKU/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/wAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAQEBD/lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/yBilP+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP+U9v//lPb//5T2//+U9v//lPb//3PF
+        7v9zxe7/IGKU/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGKU/5T2
+        //+U9v//lPb//5T2//+U9v//lPb//3PF7v8gYpT/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAEBAQ/5T2//+U9v//lPb//5T2//+U9v//c8Xu/5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYpT/lPb//5T2//+U9v//lPb//5T2
+        //9zxe7/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAgYpT/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/xAQEP8AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v8QEBD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAQYv+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//9zxe7/c8Xu/3PF7v9zxe7/c8Xu/wAQYv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBD/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF7v9zxe7/c8Xu/3PF7v8AEGL/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP8gYpT/IGKU/yBi
+        lP+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//9zxe7/c8Xu/3PF
+        7v8gYpT/ABBi/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAEBAQ/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//c8Xu/3PF7v9zxe7/IGKU/wAQYv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP+U9v//lPb//yBilP8gYpT/c8Xu/5T2
+        //+U9v//lPb//5T2//+U9v//lPb//3PF7v9zxe7/c8Xu/yBilP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGKU/yBi
+        lP8gYpT/AAAAAAAAAAAgYpT/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3PF7v8AEGL/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBi/5T2//+U9v//lPb//5T2//+U9v//IGKU/yBi
+        lP+U9v//lPb//wAQYv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEP+U9v//lPb//5T2
+        //8gYpT/EBAQ/yBilP8AAAAAAAAAACBilP+U9v//IGKU/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAQEBD/lPb//5T2//8QEBD/EBAQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP8gYpT/AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACBilP8gYpT/IGKU/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAD/////////////////////////////////////////////////////////////////////////////
+        ///+B//////////////4Af////wH///////wAP//+PgB///////wAH/84PAA///////wAD/8APAAf///
+        ///wAD/MADAAf//////4AB/AADgAP//////+AA+AABwAP///////gAYAAA4AP///////4AAAAAgAHD//
+        ////4AAAAAAAAAf/////wAAAAAAAAAP/////wAAAAAAAAAP/////gAAAAAAAAAP/////gAAAAAAAAAP/
+        ////gAAAAAAAAAf/////0AAAAAAAAAf/////+gAAAAAAAA///////gAAAAAAAB///////wAAAAAAAA//
+        /////wAAAAAAAAf//////gAAAAAAAAH//////wAAAAAAAAD//////4AAAAACAAD//////4AAAAACAAD/
+        /////wAAAAAAAAD//////gAAAAAAAAH//////gAAAAAAAAB//////AAAAAAAAAB//////AAAAAAAAAB/
+        /////wAAAAAAAAB//////wAAAAAAAAA//////4AAAAAAAAM//////8AAAAAAAIf//////8AAAAAAAIf/
+        /////4AAAAAAAY///////4YAAAAAAZ///////44gAAAAAf/////////wAAAAA//////////wgAAAA///
+        ///////4gAAAB//////////wAAAAB/////////8QAAAAD/////////8AAAAAH/////////+AAAAAP///
+        ///////AAAAAP//////////AAAAAP//////////gAAAAH//////////gAAAAH//////////gAAAAH///
+        ///////gAAAAH//////////gAAAAH//////////wAAAAH//////////wAAAAP//////////wAAAAP///
+        ///////4AAAAP//////////4AAAAf//////////8AAAAf//////////8AAAA///////////+AAAB////
+        ////////AAAD///////////+AAAH///////////+AAAP////////////wAAf////////////gAB/////
+        ////////jAD/////////////+AD/////////////8Bj/////////////4Pz/////////////4///////
+        ////////////////////////////////////////////////////////////////////////////////
+        //8oAAAASAAAAJAAAAABACAAAAAAAGBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAM0B5WSs0YH8rM19/KjJdfyoxXH8yPXVZAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVE
+        gkwlLlKZNTRw4Dw3fP8UExr/PDd8/zw3fP81NG/gJSxQmTVCgUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqOWVbHyVDmR8kRJkfIkOZHyJEmR8jRJknLF1rAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANUKARzEyZ9gkIkL/Qz6O/1pS
+        xf8NFlX/WlLF/1pSxf9TTLT/Qz6O/zExZ9gzQn1HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMU9ffSIzPbIhMTyyAAAAAAAA
+        AAAAAAAAAAAAAC1AaFkVGCDgNDBo/0M+jv8VFBz/Qz6O/0M+jv84NHToHB44siwwaFkAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKjmHZi4xi/8lKn//SGfC/0Jy6P9GSLb/Yory/z9n
+        3/9aUsX/WlLF/1JLsv8tLVvgNEV8PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAHSkvzCk/S6MAAAAAAAAAADpfcmYdKS/MS32V71+gwf8XHiH/AAAAAAAAAAAAAAAAMUttUTIy
+        ZuUnJUn/Qz6O/1pSxf8XFiL/WlLF/1pSxf9VTrr/S0Sg/zEvZeUtMGVRAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAKDmMZjRSrf9aaNP/YoPq/2WY/f9olPn/XF/Q/1qP+f9AZt7/WlLF/1pS
+        xf9VTrr/JyZK7ThMgi0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSAk/1uj
+        yvkhUXPlFx0g5UBofPJpstf/cL/n/3PF7v8ZIib/AAAAAAAAAAAAAAAAKUiDZi0xj/8kKoT/JVO+/zVv
+        6f8GGWj/VlXI/zVv6f9AZt7/WlLF/1ZOu/8tKljvLzJmRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAASlSyW2B03vJolPn/X2vY/2eO9P9qnP//apz//2ib/v9UjPj/MXPu/0Vi2f9aUsX/KyhT/zVJ
+        eEdBXZgCAAAAAAAAAAAAAAAAAAAAAAAAAAAlOUuZFx8j/z5phEdLhawZIzI6/3PF7v9cqtX/Ro+9/3PF
+        7v9zxe7/c8Xu/3PF7v8vdaX/GCAk/xsmL8wAAAAALVCMWxlBpPIvb+j/EjSW/yte0f81b+r/DR94/zVv
+        6v81b+r/Q2Pb/1pSxf8yLmP/LDFfXjlBgwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5b
+        uGZWVsHLYnzk72aN8/9fk/r/XpP7/1WN+P8xc+7/MXPu/0Fl3f9WVMj/WlLF/yonUf83TXhHAAAAAAAA
+        AAAAAAAAAAAAAD1ghRk0apStX63Y/zNRYP8vb5v/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/abLX/xkiKdZDb5cjAAAAACpKiWYdRqrqM2jf/1NXy/9aUsX/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf9aUsX/JiNG/zE6bjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUl+8fFVZ
+        v7InVcP3I1jI/zNy5/8/cM3/P3DN/zhx3f9CZdz/VlTI/1pSxf8XFiL/Nk50RQAAAAA+Y5MXNVqCTCEv
+        PaU5XG3/VY6r/1WOq/9wv+f/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/abXb/xku
+        Pf8xTF/JP2aNLQAAAAAoRYZrMjiX6D4+p/9XUML/WlLF/1pSxf9aUsX/WlLF/1pSxf9aUsX/JiNG/zM9
+        cTIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjPImJHjiIoytR
+        q/9iaoP/YmqD/1Nso/9Eb8P/PkiR/zw3fP8UExr/Exgd7zZmmGY5cKCUPXWY/zdYaP83WGj/N1ho/zdY
+        aP9JeJD/T4Oe/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/br/o/0uVwv9Vjqv/JzpNmD1h
+        iTMvRmZmFzZw0Qwwdv83Nnv/PzqD/1pSxf9aUsX/WlLF/0tEoP88N3z/GBtH/yQsUoQ+TYwKAAAAADtN
+        iBQqN1xmKjldZis7X2Y2S4IoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR2uvGRY5ef8/Snf/YmqD/2Jq
+        g/9iaoP/RUpa/xgZG/8QEBD/HUJd/0mTwf9Wos7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9Gc4r/QWp//0t8
+        lf9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9Vjqv/HCUvzB4qNr8tRlL/R4et/yhr
+        nf8RGB3/ExMZ/zQwav9AOoX/WlLF/0dBl/8eHTT/LU96/z9qh/8rN1eMKDJTfysyWJk1MWr/NTFq/yIg
+        Pf8eJTmyJjBTfyQrUH80PYYMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALEFeo1OcyP9PirD/SmeJ/2R5qP9miM3/TnbG/0FO
+        a/8dQV7/UJvI/z9/qP83WGj/N1ho/zdYaP83WGj/Pnqg/0GJuP9uv+j/b73l/0d1jP86Z4D/VaHN/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9nr9P/S3yV/0t8lf9jqMr/UJvI/yZpm/8RGB3/EBAQ/xAQ
+        EP8YFyX/PzqD/1pSxf8tKlj/VY6r/3PF7v9Pg57/GDxX/x4dNP9aUsX/WlLF/zQwav8qJ1H/PDd8/xEX
+        Tf8cIUGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAJll6/4zq+v+J6PX/WKG+/0xum/9njtz/MU6G/yUrOP8WKDf/abXb/xYo
+        Sf9IUpr/dX2n/xsnjv8bJ47/Hjiq/yA/tv82ea//c8Xu/2264P9Wlrf/ZLPd/3PF7v9zxe7/c8Xu/0SN
+        u/84f6//Poa1/3PF7v9zxe7/c8Xu/3PF7v9zxe7/YbDb/1qn0/8hUnb/EBAQ/xAQEP8QEBD/GBcl/yYj
+        Rv83M3H/ZJzR/3PF7v9zxe7/HVmM/xUdYv9RWM3/PWnh/yE8lf8mRaT/PWnh/z5Gs/8UFB//AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAiLkC3f9vs/5T2//+U9v//gNrx/zppov8jT4//UJG6/1+gwf9foMH/ITA3/xMWNP9gbtb/5O76/292
+        k/8aJov/IDHF/yAxxf8UIjn/N32t/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/2W13/9isdz/KGyd/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/z2FtP9LWLn/RT+S/xAQEP8QEBD/EBAQ/xAQEP8YFyX/WZK2/3PF
+        7v9zxe7/WaHJ/w0SMf8bNpn/MXPu/zxbz/86YNX/MXPu/1FYzf8XFiL/AAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGyDllPb//5T2
+        //+U9v//kvT+/1alxv9LlML/cMLr/3PF7v9zxe7/abPY/1qhy/8iTXb/Jicn/xsbG/8QET7/ERNd/xET
+        Xf8dUoL/a7zm/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/zd9rf9rvOb/a7zl/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/yU6Rv8WFiH/WVHD/1JLsv8+OYH/EBAQ/xAQEP8YPFf/WaTP/3PF7v9zxe7/csPr/1aS
+        sf8jJE3/VVXJ/1dTx/9XVMf/VVXJ/1lSxf8KFmT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApaJjOftrr/CRklepCjrT/X5qf/0Nt
+        gP+A1ur/ht/n/5Hx+v+U9v//kfL9/3bK7/92yu//dsrv/3bK7/9JlL//K3Ge/ytxnv9uwef/dsrw/3XJ
+        7/9zxe7/c8Xu/3PF7v9zxe7/c8Xu/ytCTv8qaZP/abPZ/2y95/90xu7/dcjv/3TH7/90x+7/c8Xu/3PF
+        7v9qtNr/Hhwy/1pSxf9aUsX/QD6F/0Zziv9zxe7/c8Xu/3PF7v9zxe7/J2qa/ypYk/9aUsX/WlLF/1pS
+        xf9aUsX/WlLF/x0dOv89V4wZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmyYt0p+oChDi7DbV5Kf6kx5f+VEZGr/ICIn/2qz
+        wv+R8/z/lPb//5T2//+U9v//iur2/3zY6f982On/je34/5T2//+U9v//lPb//47u/P93y/D/c8Xu/3bJ
+        7/95zvH/ec7x/3nO8f+R8v3/KUFI/zJ3pv9/1/T/heD3/4Pd9v+B2vX/abri/2Kx2/8lLEX/WlLF/1pS
+        xf9aUsX/XXjO/2q75f9zxe7/c8Xu/3PF7v9zxe7/a7bc/yw6Vf9NULP/S0Sg/1JLsv9aUsX/T0ir/xop
+        edZAYJoUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLhaQ1QYClajVTYH9WWmX/bHSL/ylPcP9/1+v/iuf6/4Xh
+        9P9xyd7/V57G/zFdov8xXaL/XqnM/3HJ3v+H5Pf/lPb//5T2//+N6/v/fNPz/4jk+f+U9v//lPb//5T2
+        //+U9v//a8La/0mUvv+G4ff/gtv1/4Pd9v+E3/f/PHiW/y1Zl/9WU8H/WlLF/1pSxf9aUsX/SVa3/0WC
+        uv9ap9L/WqfS/1qn0v9wwuv/c8Xu/2Gs1P8gSGT/LUZS/zhCcP9DPo7/LDNXyUFhkSMAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZ0h0xjcXbWcY2j/0Fjdv9tuuD/b8Hq/0mSxv8gXKf/Iz1+/2pn
+        rP9hXaL/OFCa/zdbp/9Plsb/huL4/4nm+f+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//KGyd/3PF
+        7v94zfH/hN72/4Pd9v+C3Pb/MUxU/0tEoP9aUsX/WlLF/1pSxf9aUsX/WlLF/0hWtv8hS4//M3On/0GJ
+        uP9Qm8j/c8Xu/1+gwf8tRlL/c8Xu/1WOq/83WGj/NVBsk0drnxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA0Y32ZY6zF/3bJ7/9NmMX/bsDp/0KLwf8hW6v/HjV0/1xcef89Pz//enqj/0VI
+        o/87Var/TZjF/3bJ7/+D3fb/iuf5/5T2//+U9v//lPb//5T2//+U9v//V6XC/0t8lf9zxe7/ec7x/2Kj
+        uv9Qkav/QFWH/1JLsv9aUsX/WlLF/1pSxf9OSKn/NDBq/zQwav8VHWX/UI7E/3PF7v9NmMX/SI+6/0Fq
+        fv9QhaD/c8Xu/3PF7v9zxe7/UIWg/zJKZplKcaYMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6T
+        s0xUosHWhuTy/0p3hv9PlsD/c8Xu/2y95v9Rncr/R4O8/x41dP8MECP/o6mp/y07ff9RS7v/Ql2y/0uV
+        wv9zxe7/eMzw/4rn+f+U9v//lPb//5T2//+U9v//juz1/1eMlP9JeZD/c8Xu/0aDpv8XN0//JixS/y0q
+        WP8tKlj/LSpY/y0qWP8kIkL/EBAQ/wsQKP8sUYf/Za/d/3PF7v9zxe7/TJS//ytbe/9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/1OLp/8sQFajLUFbiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFuiviZIkra3e9bo/zNr
+        if9/1+v/h+T4/3PF7v9zxe7/abnj/1Wby/8wZY//NEx//wwcaf9RS7v/WFLD/01cu/9RZqv/LUZS/zJN
+        Vf9vtbz/lPb//0p1ef9BiKv/Qo60/zqApf81bpP/c8Xu/2a24P80bpX/EyEr/xAQEP8QEBD/EBAQ/xAQ
+        EP8QEBD/CxAn/w0sZ/9Ok8T/c8Xu/3PF7v9zxe7/cMLr/1+t2P9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9YlLL/EhMV9y5EWY4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfp8MeOFtmwWy5x/+R8/z/k/X+/4jk
+        +P9zxe7/c8Xu/3PF7v9pueP/XaXV/0xXt/9YUMP/WlLF/1pSxf9VTrr/S0Sg/0tEoP83QGb/Kj0//1SN
+        p/9ir9n/YrHc/2Kx3P9nt+H/c8Xu/3PF7v9pueP/MW6X/xIdJf8QEBD/EBAQ/xsaLf81NIn/FidprSlW
+        kZlRncr/Ml+f/xY0fv8XNH7/IEKJ/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/V5Kv/x4p
+        McsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkFIsnnIz/+U9v//lPb//43s+/9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3G76v9cXMj/WlLF/0lGs/8IFmv/CBZr/wgWa/8fSKz/LWnX/x0wSf9qtNr/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/bb7n/y1tmf9NTK7/SkWp/wMRXf8KFFL/ISxLmC9cln8TO37/PD+k/1FL
+        u/9RS7v/Skez/wsicP8qU5X/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/abLX/x4qMcsAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAGOpwwwpUJCjDRg2/3rJ0v+U9v//lPb//5T2//+L6fr/dcjv/3PF7v9zxe7/dcjv/3PG
+        7v9zxe7/CRZs/0tGpf8mKFD/VU66/zE0mP8JFmz/J1XE/xorTf9go8b/c8Xu/3PF7v9zxe7/c8Xu/02Y
+        xf8fP1X/HUlp/05TuP8KFmT/AxBS/x4dNP9DPo7/DxAT/wsTQv85OqH/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf9GQJT/OFVr/2684/9zxe7/c8Xu/3PF7v9zxe7/YKPF/CM1PrcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVh
+        lX8ZP5v/M3Ww/4He7f+U9v//lPb//5T2//+U9v//huL4/3PF7v9zxe7/iuf5/3nO8f9zxe7/HDaD/0NO
+        vf8pW7j/KjFr/1BLu/9aUsX/TUi3/z5w5P8UGib/c8Xu/3PF7v9zxe7/c8Xu/2q75f9gp8z/MkRe/05H
+        qP8XFiL/EBAQ/x4dNP9CPpP/DhVC/zY3nf9aUsX/WlLF/1pSxf9aUsX/S0Sg/0tEoP9PSKv/PT6H/0Ny
+        jP9zxe7/c8Xu/3PF7v9zxe7/JztF6kd4kzNOhaIjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWpy6HjVenqUWIEP/bLG3/5T2
+        //+U9v//lPb//5T2//+U9v//huL4/3PF7v94zfH/jev7/4Ha9f90xu7/Z7Lg/wYddf8mXtD/I1fG/zQ/
+        qP9JRrP/Eh12/1SA3/8ZHij/c8Xu/3PF7v9rvOX/WqfS/zp4n/8UJjT/Qz6O/1pSxf8XFiL/EBAQ/x4d
+        NP8+Pqf/JCqJ/1NWy/9NW9H/VlTI/1pSxf9aUsX/JCFA/xAQEP8fHTb/PEqW/0WCuv9pueP/c8Xu/3PF
+        7v9zxe7/dcfj/y9HSf8mOkSyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPG2bZjFHpP8xPGb/bLG3/5T2//+U9v//lPb//5T2
+        //+U9v//huL4/3nO8f+M6vr/lPb//5T2//+C2/X/bLrl/yRJjv8IIXv/HUu1/zNVxf82UbX/Kkig/12L
+        7P8ZHij/c8Xu/3PF7v9ap9L/HVR+/xQoN/8QEBD/RkR8/01ezP8VFyP/EhIX/y8tZv8wM5f/Mz+o/z1p
+        4f8xc+7/QmXc/1ZUyP9aUsX/NzNx/xAQEP8QEBD/IR87/y5MiP9Rncr/c8Xu/3PF7v9zxe7/lPb//3nH
+        z/8lOUOyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAUIusM0tyrX8xPlnMbLG3/5T2//+U9v//lPb//5T2//+U9v//huL4/4Pd
+        9v+U9v//lPb//5T2//+U9v//c8Xu/2ey4P85aqj/IkaM/wwohf8pTa3/NFWw/zRVsP8MF0X/c8Xu/3PF
+        7v9mtuD/NW+U/xQkMf8oKzL/VVxx/05trf86QlT/FxYi/0dEsf8UKIX/PWnh/zFz7v8xc+7/MXPu/0Fl
+        3f9YU8f/MS1h/xAQEP8QEBD/DBAg/yhRff9isdz/c8Xu/3PF7v9zxe7/XrDO/2y0yP8lOUOyAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA6cImZb7/P/5T2//+U9v//lPb//5T2//+U9v//ju78/43s+/+U9v//lPb//5T2
+        //+U9v//hN/3/3PF7v9zxe7/YKjX/0V8tv9FfLb/RXy2/0V8tv9FfLb/c8Xu/3PF7v9zxe7/UZ3K/xc4
+        Uf9BRlX/YmqD/2Jqg/9iaoP/Q0dg/0dEsf8OLYz/MXPu/zFz7v8xc+7/MXPu/zFz7v9WVcn/V0+9/zMv
+        Zv8QEBD/CRAw/zlqqP9zxe7/c8Xu/3PF7v9zxe7/GjlQ/0eMs/9QgYngPml+WwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABeqMAtSJO2yTlgav+K5e7/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//kPH9/3fL
+        8P+D3fb/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/abnj/zp4n/8xYKf/V2uZ/2Jq
+        g/9iaoP/YWeJ/0dEsf8OLYz/MXPu/zFz7v8xc+7/SW65/1Nso/8/adv/WlLF/0tEoP8QEBD/CRAw/zlq
+        qP9zxe7/c8Xu/3PF7v8+hrX/OF56TEB/p3A2eZ7/NGqMmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY63EIx8u
+        M9aG3+f/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//k/X+/47u/P+S8/7/jez7/4DY
+        9P+C3Pb/etDy/3PF7v9zxe7/c8Xu/3PF7v9frdj/MHWm/yhrnf8qbMr/N3Hf/zpx2P9eaov/OnDa/zxk
+        2/9BUsP/MXPu/zFz7v8xc+7/N3Hf/1prlP9Za5b/WlLF/1dPvf81NIn/FyttrTNlnplYpdH/c8Xu/zNR
+        X/85Zo5HAAAAAEqEqQpIia8yUJK2HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMyNsyG3+f/lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5Lz/v+S9P7/fdPz/3PF
+        7v9zxe7/c8Xu/2Gkxv8tN0L/SWyr/y9x5f8wcur/MXPu/zFz7v81cuT/MXPu/zls5v9NXNH/MXPu/zFz
+        7v8xc+7/T22q/2Fqhf9iaoP/WlLF/1pSxf8+Pqf/GjF7mDFimn9Rncr/Poa1/xQiLP88YocZAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK0JHsnnIz/+J6PX/fdPf/ChrmeVEjrHtjOjw/5T2
+        //+N7fj/iOf0/5Hz/P+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3LG6v9ps9n/arTZ/3PF
+        7v9Vjqv/MDQ+/2Jqg/9iaoP/Q2/G/zVy4/82cuP/NXLk/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/1hr
+        mP9iaoP/FhUg/0E/ov8SKHSyAAAAAC9hmH9Lkrz/N3mn7TZgjC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAALU1ZsmWmrv8obJn/Kj9EtwAAAABTipVMO2Bn/3zY6f9OnL3gIlyF73zV
+        5P+U9v//lPb//4/w+v+D4fD/lPb//5T2//+U9v//lPb//zRylP8gJi//Ji42/1+gwf9HdYz/MDQ+/2Jq
+        g/9iaoP/YmqD/2Jqg/9iaoP/VGyh/zFz7v8xc+7/MXPu/zFz7v8xc+7/MXPu/1Btqf9SWXD/EBAQ/wwQ
+        IP8SJ3SyAAAAADFfl2YdOFPLMEhqPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAARYysfC1NWbI1dZmyAAAAAAAAAABal6Q1MVtusjd9prJapsFHQWp0fF+boe+Q7/f/lPb//3zY
+        6f84gar/f9vr/5T2//+U9v//lPb//yo9P/9ZYXf/XGN6/ygrMv8oKzL/P0RS/2Jqg/9iaoP/YmqD/1Zs
+        nP9TbKP/MXPu/zFz7v81cuT/OXHa/zhx3f82ceH/MXPu/zFz7v8TGSb/DxAS/wwUN+8eNn98AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChNYcyH4uz/j/D6/12wzOozcZa3OHGO/3zY
+        6f+U9v//lPb//0p4hv9AR1f/YmqD/2Jqg/9iaoP/WmuU/05trf9Oba3/Tm2t/zZx4f8xc+7/MXPu/zFz
+        7v85cdr/Sm62/1Nso/9Qban/NnHh/z5o4P8UGCT/DhAY/wsebcsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6ZumVYqcfyiOf0/y9zoctRh5lMJ0RW/1Gfxf9Zq8n/gt/v/4bi
+        +P8bJCf/ZoPB/2aDwf9mg8H/XITW/02H9v88e/H/MXPu/zFz7v8xc+7/MXPu/zFz7v8xc+7/RG/D/2Jq
+        g/9iaoP/P3DN/1FYzf8XFiL/ChNA8iM9hWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAEBpdXpPlr/0Tp3A/0yOtOopP0a3N1ho/2Kx3P9Rncr/T53C/06dvv8+QYP/apz//2qc
+        //9qnP//apz//2qc//9ckvr/U4v4/zd38P8xc+7/MXPu/zFz7v8xc+7/RG/D/2Jqg/9iaoP/UGK8/1ZU
+        yP8XFiL/Bhdo5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS36ORypAR7IqQEeyVJGjNSEw
+        Ncxpstf/XKrV/2264P9AaHz/N1ho/3PF7v9zxe7/YbDb/1qn0/9po+D/X23a/2qc//9qnP//apz//2qc
+        //9qnP//apz//1yS+v9Yj/r/MXPu/zFz7v8xc+7/RG/D/2Jqg/9iaoP/XFmx/1pSxf8NFlX/LUySRAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQoCeZj55nf9foMH/M1Jf2xMWF/Rpstf/c8Xu/3PF
+        7v9tuuD/TI+2/1Gdyv9zxe7/c8Xu/3PF7v9zxe7/bKbj/11g0P9hct7/apz//2qc//9qnP//apz//2qc
+        //9qnP//WpD6/zFz7v88cNT/XGuP/2Jqg/86Pkv/SEOV/yAnhf8vUZlHAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAVpmyCj+DqYxVoc3/bLje/2mz2P8uc6P/c8Xu/3PF7v9zxe7/b8Hq/27A
+        6f9zxe7/c8Xu/3PF7v9zxe7/abPZ/yk3Sv9qnOD/YXTf/2qc//9qnP//apz//2qc//9qnP//ZJj9/zFz
+        7v8/cM3/YmqD/z1BT/8KE0H/BhRm/zJXnkdBbawCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAwUF6ZVZGv/3PF7v9zxe7/dsnv/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9qtNn/IjI6/3PF7v9zxe7/apvf/1xdyf9cXcn/ZITq/2GP8f9fju//LGnf/zRnzP9BTnv/CyJw/wsi
+        cP9Jg7v/LUZS/zxilTIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABDiK16Up3J72/B6v9zxe7/kfL9/3jM8P9zxe7/c8Xu/3PF7v9zxe7/c8Xu/2W13/8qQEz/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/ZYTX/yU+jf8XNH7/FzR+/xc0fv8yX5//c8Xu/3PF7v9zxe7/O19x/zpc
+        hFtKea8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMWeHsmGs
+        1P9zxe7/lPb//43s+/9zxe7/c8Xu/3PF7v9zxe7/c8Xu/zB1pv9qu+X/fNPz/3zT8/980/P/eM3x/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yM0PP9JdaUZAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkBHsl+gwf9+1vT/lPb//5Dw
+        /f980vL/c8Xu/3PF7v9zxe7/W6nU/0SNu/960e//lPb//5T2//+U9v//jOr6/4DY9P+A2PT/dsrw/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yM0PP9MfKkZAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK0FIsl+gwf+Q8f3/lPb//5T2//+K5/n/c8Xu/3PF
+        7v9zxe7/OH+v/2/E4v+S8/7/lPb//5T2//+U9v//lPb//5T2//+U9v//iOT5/3bJ7/9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yM0PP9PgasZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAM2aCsmGq0f+Q8f3/lPb//5T2//+Q8P3/ftb0/3PF7v9zxe7/OH+v/3zY
+        6f+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3nO8f9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/yM0PP9Rhq0ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAYrHONTZaatuJ5O3/lPb//5T2//+U9v//huL4/3PF7v9Qm8j/YLPQ/43t+P+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//4zq+v91yO//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/yM0
+        PP9Ti68ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ1
+        OcyG3+f/lPb//5T2//+U9v//huL4/3PF7v9Bibj/ccne/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//92yu//c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/O19x/0Z0j1tbm8IFAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBwmMyI5vP/lPb//5T2
+        //+U9v//kvT+/4Hb9f9Bibj/ccnf/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //92yvD/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/LUZS/1GIpzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbKjDllPb//5T2//+U9v//lPb//4Pd
+        9v+G4vj/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//92yu//c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9tuuD/MEtZ7VSOrC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3fqi3f9vr/5T2//+U9v//lPb//4bi+P+J5vn/lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//92yu//c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v83WGj/SnyXTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAK3Ge/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//92yu//c8Xu/3PF7v9zxe7/c8Xu/2SpzP87X3HRUYmoNQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAARY+0o27G3P+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//92yu//c8Xu/3PF7v9zxe7/Y6jK/z9mestRiaU9AAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb8LXDEqS
+        tplgpcj/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//4bi
+        +P90x+//c8Xu/3PF7v9hqdj/O2iTy1KLpT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbbvMDz9ndK1qtdP/lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3nO8f9zxe7/c8Xu/2Wv
+        3f80YZ/RUpG9PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaLfMGSNXev9CjrT/Qo60/2vC2f+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//g972/3XH7/9zxe7/Nnmr/ytUldtXmcM1AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAbb/TBWGxyTJjtMsyRHqMhFOLlP+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+E3vb/dcfv/3PF7v83fa3/Di116l+lyigAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABYlaJFRW5y8I3q8/9VpsX/K3Ge/2e43/+R8v3/lPb//5T2//+U9v//lPb//4Xg
+        9/90x+7/c8Xu/zd9rf9lttMwaLXVFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABaqMJEKGua5ShsmuVYpsNbcMHVEjiAqdGJ6PX/lPb//5T2//+Q8fv/iOf0/47u+f+C2/X/I0eM/16l
+        yTIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABossEeMl2QwXzR5f+U9v//fNbm/3rL1P9mu9TvMXejy1enxuWK6vb/MGCY/12myTIAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCmtSZCa3K3eMXM/3S+
+        xf9ssbf/N3qfsi9SX7JLlrl8AAAAAFelxVlarMngOIGq/2Gx0DIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD90h39Fg5r/ZbrU/z9qda02V16YAAAAAAAA
+        AAAAAAAAAAAAAAAAAABToMJbQIiwmGW21B4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFOduD9Ciq1/Q4yuf2SyyRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA////////////AAAA////////////AAAA////////
+        ////AAAA/A//////////AAAA8AP///+A////AAAA4AH//48AP///AAAA4AD/5g4AH///AAAA4AB/4A4A
+        D///AAAA4AA+AAIAB///AAAA8AA8AAEAB///AAAA/AAQAACAB///AAAA/wAAAAAAAg//AAAA/4AAAAAA
+        AAH/AAAA/4AAAAAAAAH/AAAA/4AAAAAAAAH/AAAA/wAAAAAAAAH/AAAA/wAAAAAAAAH/AAAA/wAAAAAA
+        AAH/AAAA/4AAAAAAAAH/AAAA/+AAAAAAAAP/AAAA//gAAAAAAAP/AAAA//wAAAAAAAH/AAAA//gAAAAA
+        AAD/AAAA//gAAAAAAAB/AAAA//wAAAAAAAB/AAAA//4AAAAAAAB/AAAA//gAAAAAAAB/AAAA//gAAAAA
+        AAA/AAAA//AAAAAAAAA/AAAA//AAAAAAAAA/AAAA//AAAAAAAAA/AAAA//wAAAAAAAAfAAAA//wAAAAA
+        AAAfAAAA//4AAAAAAAEfAAAA//8AAAAAAAH/AAAA//4AAAAAAEP/AAAA//4QAAAAAEf/AAAA//4wAAAA
+        AH//AAAA////gAAAAP//AAAA////gAAAAP//AAAA////gAAAAf//AAAA///4AAAAAf//AAAA///4AAAA
+        A///AAAA///4AAAAA///AAAA///+AAAAB///AAAA///+AAAAA///AAAA////AAAAA///AAAA////AAAA
+        A///AAAA////AAAAA///AAAA////AAAAA///AAAA////AAAAA///AAAA////gAAAA///AAAA////gAAA
+        B///AAAA////wAAAB///AAAA////wAAAD///AAAA////4AAAD///AAAA////4AAAH///AAAA////4AAA
+        P///AAAA////4AAAf///AAAA////4AAA////AAAA////4AAB////AAAA////+AAD////AAAA////+AAP
+        ////AAAA/////wAP////AAAA/////gEP////AAAA/////g+P////AAAA/////h//////AAAA////////
+        ////AAAA////////////AAAA////////////AAAA////////////AAAAKAAAAEAAAACAAAAAAQAgAAAA
+        AAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO0yUMy85boQeHTT/EhIX/x4d
+        NP8eHTT/LzdshDpIkTMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4To8KLzx3My44
+        dzMuNnczLzV4My82eTM1PYsUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM0F9UScl
+        Sf8tKlj/WlLF/xkdTv9aUsX/WlLF/z86g/8tKlj/MkB7UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHeZIoNVdrZjNTaWYAAAAAAAAAAAAA
+        AAAAAAAAJTFRhBsaLP8tKlj/FRUe/y0qWP8tKlj/KixdoyktYmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAABIeVsxJRKr/KzyD/09v4f84QKr/XHnl/0td0/9aUsX/WlLF/zc1cuouPGxbAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtDT5k8ZHhbAAAAAAAAAAArQ1CZOFprwUt8
+        lf8bJSr/AAAAAAAAAAAAAAAAKDpXejMvZv8tKlj/WlLF/x4dNP9aUsX/WlLF/0hCmf88N3z/JilTegAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHXDMYH7m/1Vn0P9jl/3/ZY71/11r2f9PhPL/TFzS/1pS
+        xf9XT73/NzVy6jFBb1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfLDP/Souy6iNF
+        W8weKjHMX6DB/2ev0/9zxe7/IzQ8/wAAAAAAAAAAAAAAABAiYcxIRK3/GDSM/zls5f8OIm//U1fL/zls
+        5f9MXNL/WlLF/0E8iPQmKE56AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUVS7o2aN8/9ie+X/ZITs/2qc
+        //9qnP//ZZj9/0OA8/8xc+7/WlLF/0I8i/8tOmGEQFuUCgAAAAAAAAAAAAAAAAAAAAA4XX0zGSgx/zVX
+        bIRGfqUzM1Ff/3PF7v9LlcL/ZbXf/3PF7v9zxe7/c8Xu/z2FtP8fLDP/JzxOmQAAAAAZM3mjKWPX/yFT
+        wf8mT7z/OWzl/xktjP85bOX/OWzl/1NXy/9OR6j/JidLrTY+fBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABTW72ZWmnOwWN+5/9WifT/U4v4/0WB9P8xc+7/MXPu/0xc0v9aUsX/PzqD/y89YYQAAAAAAAAAAAAA
+        AAAAAAAAMlRwhFWhzf9Pg57/P3+o/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/X6DB/x4r
+        NsFBa5IoAAAAABs5h60rVcX/UFnO/1pSxf9aUsX/WlLF/1pSxf9aUsX/WlLF/zw3fP8pMFZmAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1otihRYblmHz+g4BlDqv88cNT/Tm2t/05trf80cOr/S13T/1pS
+        xf8eHTT/KzxXegAAAAA1Y5RbJTxUmRceIf83WGj/N1ho/2ev0/9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/2Gq0f8tWHT/NlVqwUJqlR5AZp0UJjqHoyQqif9PSrn/WlLF/1pSxf9aUsX/WlLF/1pS
+        xf88N3z/KzNZZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFhqigzUJxbLT+A/2Jq
+        g/9iaoP/WGuY/0FMcP8eHTT/EhIX/xQgKvQnY5XMSpK/6l+kxv9foMH/X6DB/1+gwf8vSVf/M1Ff/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9vwer/abnj/zdYaP8/ZYwzGiItzBo0UeAZUYr/HSdF/yon
+        Uf9aUsX/WlLF/1pSxf8eHTT/Exc//xAXOeA5R38oAAAAADE+alEZHSnMGR0pzCApQaMAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAPmOYWylfl/8+V4T/X2mD/2N0m/9fcJr/Nj9U/xUgKf86gbD/YarR/1+gwf9foMH/X6DB/2Cn
+        zP9isdz/b8Hq/2Ooyv87X3H/YarR/2/B6v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9DboP/IzQ8/zNR
+        X/9sveb/OoGw/xMgKv8QEBD/EBAQ/zMvZv9XT73/S0Sg/zdYaP9zxe7/M1Ff/xIdJf8tKlj/WlLF/1pS
+        xf8SEhf/Hh00/xQVKP8nLmJbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACtSaP+I5Pj/asDY/0hxlP9njNf/TXvU/zVIbv8hQl3/YarR/xgy
+        XP9JTmb/Jy1d/xYdWP8aMHj/IE6n/0eNw/9zxe7/W5m4/z11mP9pueP/c8Xu/3PF7v9frdj/UZ3K/1il
+        0f9zxe7/c8Xu/3PF7v9zxe7/X63Y/0GJuP8eQlv/EBAQ/xAQEP8QEBD/My9m/zk0df9JaJT/c8Xu/3PF
+        7v8bUYD/KSps/1BZzv9JX9X/Fh9R/0lf1f8zP6f/FBUo/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJJanpuxtz/lPb//5T2//9fr9T/K0F//0N6
+        rv9LfJX/S3yV/y9JV/8WHVj/oKzn/7G97P8YIW7/IDHF/yAxxf8YMF7/S5XC/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/X63Y/1Gdyv8wdab/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9Voc3/QmKy/zMvZv8QEBD/EBAQ/xAQ
+        EP8VFR7/SWiU/3PF7v9zxe7/Q4Gr/xQaVP8rVcX/MXPu/zVDrf8xc+7/SV/V/x4dNP8AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcJjHMlPb//5T2
+        //+U9v//ju78/yhkmv9pueP/c8Xu/3PF7v9foMH/RYOz/zJJZf8+Pz//EBEh/xMWaf8TFmn/GkV2/2W1
+        3/9zxe7/c8Xu/3PF7v9zxe7/c8Xu/0uVwv9ltd//ZbXf/3PF7v9zxe7/c8Xu/3PF7v9zxe7/OWJ4/xwd
+        Mv9XT73/S0Sg/yclSf8QEBD/Eh0l/z9/qP9zxe7/c8Xu/2+95f8+ZoH/NjuI/1FYzf9YU8b/UVjN/1ZU
+        yP8UHWj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAMG2bo2zC2fQmZZXgZbrU/yo+P/95zer/ecjP/4nj6/+U9v//ju78/3nO8f95zvH/ec7x/2y/
+        4/83f6n/N3+p/2y/4/95zvH/dsrw/3PF7v9zxe7/c8Xu/3PF7v9DboP/M3CT/1+kxv9pueP/dsrw/3TH
+        7v94zPD/c8Xu/3PF7v9jqMr/KidR/1pSxf9aUsX/LjpX/3PF7v9zxe7/c8Xu/3PF7v8sbp3/NVGX/1pS
+        xf9aUsX/WlLF/1pSxf8rKmL/OFCBMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6dZx6R32fPVKevdY4XGmtVYWL/zA0Pv9QhJj/iur2/5T2
+        //+U9v//lPb//27G3P9lutT/eNLl/5T2//+U9v//lPb//4zq+/94zPD/c8Xu/4DY9P+A2PT/gNj0/5Dw
+        /f89anb/RpG6/4Te9v+B2vX/heD3/23A4/9Rncr/NEFv/1pSxf9aUsX/WlLF/1OOyf9zxe7/c8Xu/3PF
+        7v9zxe7/Z6/T/zxYhf8+RJH/PDd8/1pSxf9OR6j/KTZ8wT5dmR4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLiKc9VpSwFC4v
+        Mf+Lk6P/NEdd/2u30f+A2PT/bMDf/06dvv9FZrT/Qlix/0dztv9Onb7/dszq/5T2//+U9v//jOr7/4bi
+        +P+U9v//lPb//5T2//+U9v//T53B/2S12/+E3vb/gdr1/4Xg9/9Vla7/MUiG/1VTwf9aUsX/WlLF/1pS
+        xf9HV7X/QYm4/0GJuP9Bibj/abnj/3PF7v9Niar/Nl51/0t8lf8tKlj/MDhhwUFhkCgAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABJdYdbTWl4/2Woyv9vveX/ZbXf/y9zu/8WQJj/GR0//7K2zf8xM2r/TlW7/zZv
+        qv95zvH/hN72/5T2//+U9v//lPb//5T2//+U9v//lPb//zB1pv9zxe7/dsrw/4nm+f991PP/W5Sd/zw3
+        fP9aUsX/WlLF/1pSxf9aUsX/WlLF/0BKq/8rWpj/YrHc/zqBsP9zxe7/S3yV/0t8lf9zxe7/X6DB/0Ru
+        h+o5VHtRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATpO1W1yvy/90wtr/OX6r/3PF7v9YpdH/MHWm/0hb
+        t/8NEB3/aWxs/19snv9IRLH/Nm+q/2m54/9zxe7/iOT4/5T2//+U9v//lPb//5T2//9+0dj/P2Vz/2u2
+        3P9zxe7/FSo6/y9Mif9LRKD/S0Sg/0tEoP9LRKD/JyVJ/xAQEP8OFzP/O26q/3PF7v9zxe7/KmSN/zli
+        eP9zxe7/c8Xu/3PF7v9zxe7/Q26D/ztZfltGa5goAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESMsa140uX/SH+P/2u3
+        0f991PP/c8Xu/3PF7v9LlcL/KVCJ/0BVbv8zQX//SESx/1NTv/9Lc73/V4ey/0t8lf9prLL/lPb//3S+
+        xf9ktMn/ZbrU/0WDmv9Niar/c8Xu/zh3of8TIy//EBAQ/xAQEP8QEBD/EBAQ/xAQEP8KECr/IU6O/3PF
+        7v9zxe7/c8Xu/2m54/9Voc3/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9DboP/GB0k4EVpjj0AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABiqcQUSYKZo1ibrP+K6vb/kfL9/37W9P9zxe7/c8Xu/2y95v9MkML/PFOn/1JMvf9aUsX/WlLF/0hC
+        mf88N3z/PkJ6/0Rsb/9IdYb/UJa//1Gdyv9Rncr/ZbXf/3PF7v9sveb/O3if/xMjL/8QEBD/EBAQ/yEf
+        O/8cH1j/IDN1hDB1pv9Xmcz/Llia/y5Ymv87bqr/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/z9m
+        ev8sQlKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVygGZfmp//lPb//5T2//+G4vj/c8Xu/3PF7v9zxe7/c8Xu/3C3
+        6f9eZMv/WlLF/z08pf8SHXX/Eh11/xYqhf8qX8H/JkVx/2Ooyv9zxe7/c8Xu/3PF7v9zxe7/c8Xu/2y9
+        5v84d6H/QUeZ/zw6kf8JFWD/DhVC/zVJgDMeWI//KjqS/0hEsf9IRLH/PkGn/xc0fv9Oi8H/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9foMH/LENSmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEV8qlsNIlz/YKCq/5T2//+U9v//lPb//4Te
+        9v90x+7/c8Xu/3XI7/91yO//c8Xu/xIddf8/P47/Njd4/1dPvf8SHXX/ITyi/yRAgP9Qh6f/c8Xu/3PF
+        7v9zxe7/c8Xu/y5okP8hP1T/QVGm/xQdaP8FEET/LSpY/y0qWP8NEB3/ICeF/1pSxf9aUsX/WlLF/1pS
+        xf9aUsX/NjJu/1KGpf9zxe7/c8Xu/3PF7v9zxe7/Uomk9DRUZnoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHG2z/NGyl/3jS
+        5f+U9v//lPb//5T2//+U9v//ec7x/3PF7v+A2PT/gNj0/3PF7v8vUZr/NE+9/yVPnv8xN5L/WlLF/0tH
+        tf9AZdH/Gyc9/3PF7v9zxe7/c8Xu/3PF7v9Qlr//P1t8/0hCmf8eHTT/EBAQ/y0qWP8pKmz/HiV3/1pS
+        xf9aUsX/WlLF/1pSxf88N3z/PDd8/05HqP8jN17/c8Xu/3PF7v9zxe7/c8Xu/zdZauA6XnNmTYSfKAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA2ZJd6NlOd/0Rsb/+U9v//lPb//5T2//+U9v//lPb//3nO8f92yvD/jOr7/4zq+/92yvD/XKDS/wcf
+        eP8lW8z/IVPB/09Kuf8VH3n/P2TA/yIsP/9zxe7/c8Xu/1Whzf9Bibj/FSo6/y0qWP9aUsX/Hh00/xAQ
+        EP8tKlj/JCqJ/0hEsf9BZd3/S13T/1pSxf9aUsX/My9m/xAQEP8hHzv/Pk+f/0uVwv9zxe7/c8Xu/3PF
+        7v9+0+b/P2Jm/zxkd2YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAFC50zE1Qqv9EbG//lPb//5T2//+U9v//lPb//5T2//95zvH/ju78/5T2
+        //+U9v//ju78/2696P83ZqX/BRty/wkjfv8+cOT/VIDf/2GQ8v8iLD//c8Xu/3PF7v9Bibj/FS0//xAQ
+        EP8wMkP/SGnD/xgiOv8bGiz/NDSP/zI0mf88ZNv/MXPu/zRw6v9MXNL/WlLF/xsaLP8QEBD/EBAQ/xsa
+        LP8wdab/c8Xu/3PF7v9zxe7/lPb//1+an/87Y3ZmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABamKozRnV//5T2//+U9v//lPb//5T2
+        //+U9v//ftb0/5T2//+U9v//lPb//5T2//94zPD/c8Xu/3PF7v8pUZT/FzR+/xc0fv8XNH7/FzR+/3PF
+        7v9zxe7/c8Xu/zB1pv8gIif/YmqD/2Jqg/9iaoP/KytG/zY3nf8dS7b/MXPu/zFz7v8xc+7/MXPu/1FY
+        zf9OR6j/GBcl/xAQEP8DEFH/c8Xu/3PF7v9zxe7/c8Xu/ypkjf9Mg53/PWV2hFaVtAoAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYqzCHk6a
+        usFhp7T/iePr/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//jez7/3jM8P94zPD/c8Xu/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9LlcL/ITxZ/1ZsnP9iaoP/YmqD/2BlkP82N53/HUu2/zFz
+        7v8xc+7/OHHc/0Rvw/9IYtH/WlLF/zw3fP8QEBD/AxBR/3PF7v9zxe7/c8Xu/1il0f8oRVuZRo6zwTZo
+        fv9MhqMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABhq8IoKUZSwXnIz/+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5Hy
+        /f+M6vv/jOr7/4bi+P92yvD/ftb0/3PF7v9zxe7/c8Xu/3PF7v9Voc3/QYm4/yNlpv84cdz/RG/D/1xr
+        j/9Dbcj/PFPD/zNbzf8xc+7/MXPu/zhx3P9WbJz/Umyl/1pSxf9OR6j/HB9Y/yE5e4RLlcL/c8Xu/0+D
+        nv81ZY2EAAAAAEaBqCg/gKlmVJW3FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZUXJl5yM//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//ju78/4bi+P9zxe7/c8Xu/3PF7v9Ti6f/QVNo/zVu
+        yv8ucN//MXPu/zFz7v84cdz/MXPu/0Fl3f9BZd3/MXPu/zFz7v9AcMv/XmqL/2Jqg/9aUsX/WlLF/yQq
+        if81UpQzMHWm/1il0f8dOEz/N1l6MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEd0fmZfmp//gd7t/2q3
+        xfQvdJ/MXKa86o7s9f+P8Pr/fNjp/4rq9v+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//dszq/1+k
+        xv9jqMr/c8Xu/zdYaP9RWGz/YmqD/1Jspf86cdj/OnHY/zhx3P8xc+7/MXPu/zFz7v8xc+7/MXPu/05t
+        rf9iaoP/Gxos/y0vh/8lQIdmAAAAACxunf9Ih67qMmCNUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABJgJFmQm97/yxtlv9AaHB6AAAAADZVW5lUmK3/XrDM6jBrjsFjrb//lPb//5T2//+B3u3/gd7t/5T2
+        //+U9v//lPb//0qJn/8sNkT/NkJP/0t8lf8nO0X/UVhs/2Jqg/9iaoP/YmqD/2Jqg/9Ibrr/MXPu/zFz
+        7v8xc+7/MXPu/zFz7v9Cb8f/Q01m/xAQEP8JEDD/JD6FZgAAAAAoVIOZKj5cWwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAXqe7KEiAkWZLjqdmAAAAAAAAAABXkp49TpKtZlaivlFhpLQoRnF5wYTa
+        4v+U9v//ZbrU/zuFrf+G5PL/lPb//5T2//9EbG//UVhs/1tief9BRlX/QUZV/1tief9iaoP/YmqD/1Bt
+        qf9Eb8P/MXPu/zFz7v9Cb8f/NnHh/0huuv8xc+7/MXPu/xYjPP8OEBn/EiJcwTFOkigAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAD59npl81eT/gd7t/0aQtq0xV2mtMGyQ/5T2//+U9v//dMLa/yw7Rf9iaoP/YmqD/2Jq
+        g/9Cb8f/OnHY/zpx2P80cuX/MXPu/zFz7v8xc+7/NnHh/1Jspf9gaof/SG66/0Rj2v8dHjX/DBAg/xct
+        eZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABip7weOX2n1m3E3P9Bg6itLUZOrV+gwf8wdab/T53B/3zY
+        6f8xQlj/apz//2qc//9qnP//apz//2CV/P88e/H/NXbv/zFz7v8xc+7/MXPu/zFz7v9Ya5j/YmqD/1Fq
+        qv9MXNL/Hh00/wwfbswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASnyKUURxfmZTjJ49M1JbmV+gwf9LlcL/W5m4/x8s
+        M/9foMH/c8Xu/1+t2P9Bibj/XYHP/2SE7P9qnP//apz//2qc//9qnP//apz//1WN+P9Hg/T/MXPu/zFz
+        7v8xc+7/WGuY/2Jqg/9eYJ3/WlLF/xkdTv8fOoN6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZUcMxLfJX/QWt91h0p
+        LdZfoMH/c8Xu/3PF7v9bmbj/Q4ex/3PF7v9zxe7/c8Xu/3PF7v9nj93/YG/c/2aK8f9qnP//apz//2qc
+        //9qnP//apz//0yG9v8xc+7/Qm/H/15qi/9YX3X/QUB0/zk6of8lQI2EAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABRlbIoPYW0/2u23P9foMH/OX6r/3PF7v9zxe7/c8Xu/2W13/9zxe7/c8Xu/3PF7v9zxe7/YqPI/z5X
+        e/9jf9n/Z5D1/2qc//9qnP//apz//2qc//9ek/v/MXPu/05trf9iaoP/Gh4v/wkVYP8nQ5CEP2mqCgAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE+LojM5Ynj/c8Xu/3PF7v94zPD/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/Y6jK/zNRX/9zxe7/c8Xu/2N70/9fac3/Ynfc/1yF5/9UgN//J1/S/zZcr/8tQn3/FzR+/ylR
+        lP9LfJX/MU5zZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbo8AeRIu1wWW13/9zxe7/kPD9/3rQ
+        8v9zxe7/c8Xu/3PF7v9zxe7/X63Y/zxmfP9zxe7/c8Xu/3PF7v9zxe7/c8Xu/22p5P9DaLH/Llia/y5Y
+        mv8uWJr/V5nM/3PF7v9zxe7/W5m4/zVUcKNHc6YUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEV8
+        k2ZNiar/c8Xu/5T2//+G4vj/c8Xu/3PF7v9zxe7/c8Xu/0GJuP9isdz/huL4/4bi+P+G4vj/dsrw/3PF
+        7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v83WGj/Q2yVMwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABFcX9mS3yV/4jk+P+U9v//kfL9/33U8/9zxe7/c8Xu/1il0f9Omcb/hOD1/5T2
+        //+U9v//lPb//47u/P+N7Pv/gtz2/3PF7v9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9zxe7/N1ho/0Zx
+        mDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASX2PZkyDn/+N7Pv/lPb//5T2//+E3vb/dMfu/3PF
+        7v9Rncr/ZbrU/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+A2PT/c8Xu/3PF7v9zxe7/c8Xu/3PF
+        7v9zxe7/c8Xu/zdYaP9Jd5szAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF6syj1HgqDWhd3p/5T2
+        //+U9v//lPb//3nO8f9sveb/UJ3F/3jS5f+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//iOT4/3XI
+        7/9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v83WGj/S3ydMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAOFpjmXnIz/+U9v//lPb//5T2//95zvH/YrHc/06dvv+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//95zvH/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9bmbj/PGF2o1aSthQAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAECCopl81eT/lPb//5T2//+U9v//ju78/2Kx3P9Onb7/lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//ec7x/3PF7v9zxe7/c8Xu/3PF7v9zxe7/S3yV/0Bq
+        gWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkJOzJT2//+U9v//lPb//5T2
+        //95zvH/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3nO8f9zxe7/c8Xu/3PF
+        7v9zxe7/b73l/0ZziupIeJFRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEyX
+        uXpuxtz/lPb//5T2//+U9v//hN72/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //95zvH/c8Xu/3PF7v9zxe7/c8Xu/1+gwf8xTV2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAN3+p/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//ec7x/3PF7v9zxe7/c8Xu/3PF7v86XW7gT4ajPQAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqpxltcr8v/lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//3nO8f9zxe7/c8Xu/3PF7v8zUV//WZi1KAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvwNEKRnyfhGSs
+        zP+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//4DY9P9zxe7/c8Xu/2m2
+        4v8yXp3gWp3GKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAX6e5MzZofv9lutT/ZbrU/5T2//+U9v//lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//47u
+        /P960PL/c8Xu/0+Wxv87bajWU5O+PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGm6zxRRnbxmU6C+ZiJHXeCU9v//lPb//5T2//+U9v//lPb//5T2
+        //+U9v//lPb//5Dw/f960PL/c8Xu/0uVwv8XP4HgVZbAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERveHpoqrH0gd7t/zd/
+        qf9fr9T/ju78/5T2//+U9v//lPb//5T2//94zPD/c8Xu/0uVwv9Zp8hbYKjMKAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABJlLV6MHWhzD6HraNuv9QUR5C0rYHe7f+U9v//lPb//4bk8v982On/ju78/0iCuP9Gf69mAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruMcURniTo3C+2f+U9v//ZLTJ/2GntP9Qn8DBQoyymW7G
+        3P9dp8j/Sou2ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPmVrrXS+xf9ko6n/RGxv/0+X
+        s2ZNip5mZrjSKAAAAABRnsCEO4Wt/1CcwGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJa
+        g/83f6n/TZGqhFyerDMAAAAAAAAAAAAAAAAAAAAAbL7YCmCvzTNoudYUAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////AP
+        ///wH///4Af/+PAP///gA/8w4Af//+AB/wDgA///4ADwACAB///wAPAAEAH///gAQAAAAf///gAAAAAA
+        h///AAAAAAAA//8AAAAAAAD//gAAAAAAAP/+AAAAAAAA//4AAAAAAAD//wAAAAAAAP//wAAAAAAB///w
+        AAAAAAH///AAAAAAAH//8AAAAAAAP//wAAAAAAA///gAAAAAAD//8AAAAAAAP//wAAAAAAAf/+AAAAAA
+        AB//4AAAAAAAH//wAAAAAAAP//AAAAAAAA//+AAAAAAAj//8AAAAAAD///gAAAAAEf//+EAAAAAT///4
+        wAAAAB/////8AAAAP/////wAAAB/////4AAAAH/////gAAAA/////+AAAAD/////8AAAAf/////wAAAA
+        //////gAAAD/////+AAAAP/////4AAAA//////gAAAD//////AAAAP/////8AAAB//////4AAAH/////
+        /gAAA///////AAAD//////8AAAf//////wAAD///////AAAf//////8AAD///////8AAf///////wAH/
+        ///////wAf////////AR////////8PH//////////////////////////////////////////////ygA
+        AAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPXNmLi5d4BsaLP8tKlj/Li1d4DA6cGYAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAzRn8oJy9dZicsXWYnLF5mKzBqUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk0a3oyL23/Sk+s/y00jv9YXc//VVC//0tE
+        oP8uNmmOPVGcCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGdo8zUYupCgAAAABGdo8zNFRlrSM1
+        P8wAAAAAAAAAADlWiB4eIDbgPzqD/yclSf9LRKD/RD6Q9CcnT8w2O4UeAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABorfphRYsr/W4Tq/12D
+        7v5beuf/SWne/1lRxP5OR6j/LjdjjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnO0X+OG6PrSxF
+        UplLfJX+a7bc/zdYaP4AAAAAAAAAAB40Zpg4N5D/NVS+/x0yf/5QWc7/RmHY/1lRxP4xL2XWNjl5HgAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtW
+        s1tjfuf/Y3vl/2qc//9qnP//UIr3/zFz7v9aUsX/NjZw4DpShCgAAAAAAAAAAAAAAAAxVHNmMFBi4Dps
+        j2ZPg57/abnj/1+t2P9zxe7/c8Xu/1Whzf8nO0X/PmeMMi1QjFslW8z/Iky4/0Fl3f8vQqv/QWXd/1BZ
+        zv9IQpn/LTFgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABNZLcyV2bIrUJm0eo2b+D/O3Pd/zpx2P9DZNz/VVC//y4vWuA9WogeQGKUCjhb
+        gjMvTV/gV5W1/1mcv/9zxe7/c8Xu/3PF7v9zxe7/c8Xu/3PF7v9Mg5//LUhct0RvmxQqTJBwOUWu9FJM
+        vf9aUsX/WlLF/1pSxf9aUsX/JyhMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpYoj0jQpWjUl+H/2Fpgv5Oba3/NDdp/xsa
+        LP4cMkbWNXCgrU2Jqv9LfJX+S3yV/z9mev9Pg57+c8Xu/3PF7v9yxO3+c8Xu/3LE7f5ltd//WJi6/zNP
+        bGUlNUqZFj506iMzaP4/OoP/WlLF/1lRxP4tKlj/ExpF6jRAcj0AAAAAKDJTeiErQ5gtPWdbAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6Y4+jPnCg/1do
+        hf9lfrT/TWWY/yAyQv9Hkb//TIOf/0t8lf9LfJX/UJa//2W13/9bmbj/SHyW/2W13/9zxe7/c8Xu/3PF
+        7v9zxe7/Z6/T/zdYaP9Pg57/TpnG/xYwRP8QEBD/GBcl/05HqP88N3z/X6DB/0+Dnv8TIy//S0Sg/1pS
+        xf8bGi3/JiVQ/xshSaMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElv
+        qR5Xobr/ju76/1eev/9UdLf/NlZ+/yxFVf9AbYX/PUmS/3uFuv8aJov/Hze2/yhUnv9pueP/Y6vP/2y9
+        5v9zxe7/abnj/0GJuP9LlcL/c8Xu/3PF7v9zxe7/YrHc/zhtn/8YFyX/EBAQ/xgXJf8qJ1H/aKjX/3PF
+        7v8fTX3/N0Kl/zls5f8jPJj/PGTb/yYlUP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACk8U5iU9v//lPb//4zq+v4sZp3/bL3m/3LE7f5LfJX/N16Y/2tvb/8SFTz+Fh1//xgy
+        bP9frdj+c8Xu/3PF7v9yxO3+abnj/1+t2P5frdj/c8Xu/3LE7f5zxe7/YKfM/yQsUP5OR6j/My9m/w8P
+        D/4TIy//YarR/3LE7f5jqMr/IzVl/0lf1f5TV8v/TFzS/ycqdf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD52oFtRnL3WO4Kq6kRrb/9zv9L/aayy/5T2//+M6vv/gNj0/4DY
+        9P9swN//Tp2+/2zB3/+A2PT/dcnv/3PF7v9zxe7/Z6/T/0WBnP9Oiar/b8Ho/3jM8P970PL/c8Xu/1uZ
+        uP8/OoP/WlLF/0VVjf9zxe7/c8Xu/3PF7v8xbJT/TU6w/1pSxf9aUsX/SUSn/yxBcGUAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNg6IeS4alR0eBnHBDUVj/UGF2/2m6
+        0P+N7Pv/gNzt/1qhyf9CfLP/ccbe/4bk9P+U9v//iuj6/3nO8f+N7Pv/jez7/5Hy/f9OlbL/dMrn/4Te
+        9v+C3Pb/QoGo/0VXpv9aUsX/WlLF/0hluP9isdz/YrHc/2y95v9rttz/NVyI/zJBYP9LRKD/ND1wt0Jk
+        nhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABLZW+jY42m/2Ooyv9frdj/KGa1/yAtZP+AgK7/Pk+f/0F2tf+A2PT/kPD9/5T2//+U9v//lPb//5T2
+        //9Bibj/dcnv/4Te9v+C3Pb/Nkdi/1pSxf9aUsX/WlLF/1lRxP8tSJn/RIe5/0eRv/9zxe7/N1ho/3PF
+        7v9LfJX/NlJvjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABJkrWjd8vc/0WEqf5zxe7/S5XC/0Jss/8MDyP+jpen/zY3nf9BdbX+bL3m/37W
+        9P+T9f7+lPb//5P1/v50vsX/Uoef/3LE7f4XN0//NTl2/zw3fP48N3z/My9m/w8PD/4YLFr/Za/d/3LE
+        7f4wZon/YKfM/3LE7f5zxe7/Z6/T/zZSbKNBY4w9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRmbpwYau99Gm60P+F4Pf/dMfu/2m54/9JibX/NFKO/z08
+        pf9VU8H/Ul2z/zJBYP9SfY7/bbO7/0N/m/9Hk7v/QIGp/3PF7v9Nk7v/Fyo4/xAQEP8QEBD/GBcp/w4Y
+        ROA9f7L/YKjX/1ug0f9ep9b/b8Hq/3PF7v9zxe7/c8Xu/2ev0/8hLzjqTHabKAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPF5lzJT2//+U9v//ec7x/3PF
+        7v9zxe7/cbvq/2Btzv9ZUcT/LjKV/yQqif8jN47/J06M/1uZuP9zxe7/c8Xu/3PF7v9zxe7/TZK7/y47
+        cP8mJ2T/GB9p/yk7b2YlXpb/ND6c/zY3nf8yRJz/O26q/3LE7f9zxe7/c8Xu/3PF7v9LfJX/SXeWMgAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtWp6jL1l7/5P1
+        /v6U9v//kPD8/3jM8P9yxO3+etDy/3LE7f8kKon+Lzx//05HqP8kKon+NFC1/zhgg/5zxe7/c8Xu/3LE
+        7f49dZj/LEl1/ycqdf4KEC3/PDd8/wwPI/45OqH/WlLF/1lRxP5aUsX/UUqv/z9bfP5zxe7/c8Xu/3LE
+        7f4+ZXrWT4WkHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFud
+        ux4VKGX/bbrL/5T2//+U9v//lPb//4DY9P91yO//ieb5/3XJ7/8+bK3/I1K8/yFDpf9STL3/LDyc/y9E
+        bv9zxe7/b8Hq/2Kx2/8pUWv/RkSU/y0qWP8QEBD/OTeJ/ywvi/9RWM3/WFPG/1pSxf8nJUn/JyVJ/zZK
+        j/9pueP/c8Xu/3PF7v9TiZzqL0pXowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAChOiJhASYr/ecjP/5T2//+U9v//lPb//4DY9P+M6vr/lPb//4zq+/9gqNf/ES1+/xM3
+        mv9AZdH/SG/M/zNHb/9zxe7/YrHc/xpEZP8QEBD/SVGO/yMyYv8hHzv/LC+L/zxTw/8xc+7/Q2Tc/1lS
+        xf8hHzv/EBAQ/yEfO/9Bibj/c8Xu/3PF7v+U9v//OFlizAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJgZRmes7Z/5P1/v6U9v//lPb//4jk+P+T9f7+lPb//5P2
+        //960PH+c8Xu/0mDu/8uWJn+Llia/y5Ymf5zxe7/c8Xu/0GJt/4wND7/YmqD/2Fpgv5BQHT/GzGR/zBy
+        7f4xc+7/MXPu/0lf1f5IQpn/FRUe/wYPQf5zxe7/c8Xu/3LE7f4wZon/RXSD4E2EnygAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlsMUURYWft2mssv+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+J5vn/heD3/3nO8f91yO//dMfu/3PF7v9zxe7/b8Hq/1il0f8oXp//Umyl/15q
+        i/9VZK3/JDqf/zFz7v8xc+7/Sm62/0truv9aUsX/JyVN/w0aT+BpueP/b73l/0eIseA/b5EyPH6krUWC
+        pFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW5inM1+Z
+        n/6U9v//lPb//5T2//+T9f7+lPb//5T2//+T9f7+lPb//5T2//+M6vr+ec7x/3LE7f5zxe7/RnCJ/zVp
+        sP4sbtj/MXPu/zxw1P4xc+7/SV/V/zBy7f4xc+7/TG2y/2Fpgv5aUsX/R0Sx/yhCiGVBibj/QX2h/y1H
+        YGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAPF9kzHjS5f9SkaPWRoqorX7R2P+B3u3/bsbc/5T2//+U9v//lPb//5T2//+U9v//huT0/02J
+        qv9bmbj/X6DB/0FGVf9iaoP/Sm62/0Rvw/88cNT/MXPu/zFz7v8xc+7/OnHY/2Jqg/8hHzv/GCdzzAAA
+        AAAxbJT/NGWPjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAO3KJozRrhsthpLIeX5+tKDhrgsxRnbyOQnOCt4nj7P+U9v//V6nH/4rq
+        9v+U9v//esvU/zhBUf9FUGL/MD5K/0dNXv9iaoP/YGqH/1hrmP82ceH/M3Lp/zRy5f82ceH/MnLp/ypB
+        bf8OEBb/FShnrQAAAAAzU4UyNlWBCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXqa8M2Ot
+        v/940uX+Q4Skozhxjv+T9f7+hd3p/ztQYP5iaoP/YmqD/1Btqf5Eb8P/QHDL/zBy7f4xc+7/NHLl/0pu
+        tv5aa5T/O23c/ycvXv4JEDD/LkuQMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAZKzBFESCpMJXp8j/OmV4o0t8lf9Bibj/XrHO/0Nkif9qnP//apz//2qc//9ckvv/Q4Dz/zFz
+        7v8xc+7/MXPu/05trf9iaoP/TGLG/y0qWP8YLnqZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADxpeno1VGHMQWx6ekt8lf9pueP/V5Kv/0l/nP9zxe7/ZbXf/2mv4f9kgOP/Z5D1/2qc
+        //9qnP//Z5r+/16T+/83ePD/M3Lp/1Jspf9bYnn/VFCv/yYvgOA2WJkeAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuPrT1Voc3+U4um/0WEqv9yxO3+c8Xu/1+t2P9yxO3+c8Xu/3LE
+        7f5Xh7L/W3nC/2aK8P5qnP//apz//2mb/v5Ti/j/OnHY/2Fpgv4fJT//Hit84DZeoSgAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCeI9mYKfM/3PF7v960PL/c8Xu/3PF
+        7v9zxe7/c8Xu/1uZuP9Pg57/c8Xu/2qb3/9kgNX/XHnc/z9jwP8dS7b/MkqJ/y5Ymv9Jg7v/L0ldzAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfp8IUQ4Sp1nPF
+        7v+R8v3/eMzw/3PF7v9zxe7/ZbXf/0yPtv95zvH/ec7x/3XI7/9zxe7/a7Dj/1yg0v9coNL/YKjX/3PF
+        7v9zxe7/VY+t9DpbgFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAANVRhzH7W9P+T9f7+heD3/3PF7v9yxO3+TpnG/3HG5f6U9v//lPb//4zq+v6G4vj/dsrw/3LE
+        7f5zxe7/c8Xu/3LE7f5zxe7/X6DB/zhYdmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAOmqDzIbi+P+U9v//kPD9/3jM8P9zxe7/R5O7/5T2//+U9v//lPb//5T2
+        //+U9v//jez7/3PF7v9zxe7/c8Xu/3PF7v9zxe7/X6DB/zteeGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWp21UWeosf+U9v//lPb//4DY9P9YpdH/csrg/5T2
+        //+U9v//lPb//5T2//+U9v//kvT+/33U8/9zxe7/c8Xu/3PF7v9zxe7/VpCu9ENuiVEAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY67FM2Otv/+T9f7+lPb//4zq
+        +v9Rncn+fNjp/5P1/v6U9v//lPb//5P1/v6U9v//lPb//4DY9P5zxe7/c8Xu/3LE7f5zxe7/M1JhywAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxu
+        gpmU9v//lPb//5T2//+A2PT/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//4DY9P9zxe7/c8Xu/3PF
+        7v9jqMr/QGl/jgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAGq80x5crsv/lPb//5T2//+Q8Pz/lPb//5T2//+U9v//lPb//5T2//+U9v//lPb//4DY
+        9P9zxe7/c8Xu/3PF7v9Gc4rqVZGxKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQnr6jhuTy/5T2//+T9f7+lPb//5P1/v6U9v//lPb//5P1
+        /v6U9v//lPb//4DY9P5zxe7/c8Xu/0+Dnf5SiqU9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjqrkoUIuv4JT2//+U9v//lPb//5T2
+        //+U9v//lPb//5T2//+U9v//jez7/3PF7v9zxe7/SYO66lGQvD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVnbZRQoqtzDx+
+        n+qU9v//lPb//5T2//+U9v//lPb//5T2//+R8v3/fNLy/2m54/8rYJrqVJXARwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAZ7DAHlCAhtZ40uX+WKnJ/4zq+v6U9v//lPb//5P1/v560PL/abnj/0uWvqNWmME9AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAZLTKHkCJrplXpcFbU5e6cHjS5f+U9v//iur2/2W61P+M6vv/MV2ZzAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRiJJwbLTE9HnHz/9Df5fMS5CtrWS1
+        0DJdr8zgP4OuzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuZYX+TZaz4Eh6
+        hWUAAAAAAAAAAAAAAABjs9AoVqPEUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AADgf//g//8AAMAfyMA//wAAwB/AwB//
+        AADADgAAH/8AAOAAAAAf/wAA+AAAAAj/AAD8AAAAAD8AAPgAAAAAPwAA+AAAAAA/AAD4AAAAAD8AAPwA
+        AAAAPwAA/4AAAAB/AAD/gAAAAB8AAP+AAAAADwAA/8AAAAAPAAD/gAAAAA8AAP8AAAAADwAA/wAAAAAP
+        AAD/gAAAAAcAAP+AAAAABwAA/8AAAAA/AAD/wAAAAn8AAP/AAAACfwAA//8AAAP/AAD//wAAB/8AAP/8
+        AAAH/wAA//wAAA//AAD//gAAH/8AAP/+AAAP/wAA//8AAA//AAD//wAAD/8AAP//AAAP/wAA//8AAB//
+        AAD//4AAH/8AAP//gAAf/wAA///AAD//AAD//8AAf/8AAP//wAD//wAA///gAf//AAD//+AH//8AAP//
+        +Af//wAA///45///AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAUqEUMDVprSknV/88N3z/NTl2rT5Q
+        ohQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYWhCj5ohDMAAAAAAAAAACo1YXAoK1mZLjBomTA2
+        eEcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk5hmZKWbn/U3Xf/1Vx
+        4f9WVMj/PT2DzDxSjxQAAAAAAAAAAAAAAAAAAAAANFhrtztmfWZKe5TWP2Z6/wAAAAAwTn1RMDR+/zA/
+        k/9QWc7/Skqr/zIzbXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARletKF1z
+        2dZiifL/WpD6/zV27/9QT7n/N0N2hAAAAAAAAAAANl57rUJ2lq1jqMr/ZbXf/3PF7v9ltd//MU1e1jpj
+        ljMkUbnqQlnN/0FPv/9QWc7/Qj6N6jU+eB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAATGy3Cj9cr1stUabWWGuY/0Zhsf8qJ1H/KklsjkF1m7dDboP/S3yV/2Ooyv9zxe7/c8Xu/3PF
+        7v9Zn8T/PF99hCc+aJkqO4T/Tkeo/1pSxf8yL23/LDdnWztLhxQqN1tmNUmAKAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZ+pNZUfJ3/Xnu4/yg6Uv9Fgqz/S2+R/zxll/9Ok8z/W5m4/12m
+        zf9zxe7/ZbXf/2y95v9Ti6b/XKDD/ytbe/8QEBD/My9m/0FOhP9jqMr/ITBa/1NXy/8kK1z/ICZW1gAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7XIVRiur2/4Xi8/9Adqr/X6DB/zpiif9wfJ7/Fx5v/xkv
+        gP9ltd//c8Xu/3PF7v9YpdH/X63Y/3PF7v9zxe7/O2CK/zk0df8VFR7/LEZg/3PF7v9BcJn/OVfC/0RY
+        y/80O47/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmApShFhqqjRnyO4F6ToP9+0t7/jOr6/33W
+        7/9gstH/csri/4Te9v90xu7/ec7x/2Gpwv9Tlrb/fNLy/3fM7v9Xkrz/Tkeo/01bqv9zxe7/c8Xu/0Fy
+        o/9LSKb/V0+9/zJDfoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWlrIUVGh11l2Z
+        t/9gsNv/MFiS/1ttp/9Si8P/ieb5/47u/P+U9v//lPb//1WjzP+B2vX/bbfN/0dJov9aUsX/VVPB/ztu
+        rf9Rncr/X6TG/1CHo/9AXIDqQ2WXHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABZqMXBWJ65/2/B6P9Ni8P/OEhg/0hOoP9Pe8L/Z6vL/4nj6/+A1+P/Wp2u/2ey2P8kRGX/LSpY/y0q
+        WP8UFSX/N2aW/3PF7v9IiK3/c8Xu/3PF7v9NfpzWPVyAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAFaUqUd1xdD/iuj6/3PF7v9nteH/V27G/1JMvf8qLYD/MU2M/0h+oP9isdz/b8Hq/2Gt
+        1v8nPF7/HR9P/yAsZK00aKX/O06l/0Fqr/9ptuL/c8Xu/3PF7v8+Y3jMAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAI0mG1oDX4/+U9v//gdr1/3bK8P92yvD/LT+X/zhDmf82PKT/NFWN/3PF
+        7v9zxe7/N2aI/y8zd/8cHUH/ICJW/0tHtf9aUsX/S0Sg/z5Nhv9zxe7/c8Xu/z5leq1Wk7IKAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEN3oVFDXon/lPb//5T2//+G4vj/ieb5/4nm+f9Cebb/FTuf/z5W
+        vf85U4z/c8Xu/zt4n/8gJTn/Nj59/yMiSf82Qqv/PGni/1ZUyP8bGiz/IyZG/1il0f9zxe7/bLG6/0p+
+        mDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSVqYSE3ef/lPb//47u/P+U9v//lPb//3zS
+        8v9hqtj/RXy2/0V8tv9zxe7/WKXR/z5NaP9iaoP/PkCE/ydf0v8ycun/RGfU/z86g/8JEDD/c8Xu/2y9
+        5v85bo7WRXqTcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAabPHClSKk9aU9v//lPb//5T2
+        //+U9v//kfL9/47u/P+C3Pb/c8Xu/2u23P9De67/Lm7U/0Jvx/88Ztb/NWnh/zZx4f9aa5T/V0+9/yU1
+        fK1Rncr/Nl58rUd+pApPkLMeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZl6YzU5Wn/1KT
+        qI5doK7gZrnP6oXg7P+P8Pr/j/D6/5T2//9TjKX/VYun/0BQYf9eaov/Tm2t/zhx3P8xc+7/MXPu/01l
+        l/8YGj3/MU+RMzJiirc5YYwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSt
+        vQpYnK4zAAAAAF+muChlsMUeYae31nDH3epIi6bqlPb//01wfv9YX3X/UGCG/05trf8+cND/MXPu/0Bw
+        y/9Ibrr/KkaO/xEbRNY3VZYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAXaG0FFuarShLhqCjVZ3A6kJtgepUocv/U4my/2iW+v9qnP//XJL6/0B+
+        8v8xc+7/RG/D/11nk/83Oob/KESKUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJhaA9TYio9EV6l/Rzxe7/XabN/3PF7v9zxe7/Wn6//2aN
+        7/9qnP//apz//0OA8/9UbKD/LzRe/zFKmoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKh6SEb8Hq/33U8/9zxe7/c8Xu/1yg
+        w/9jqMr/b7Ln/2iT3v9IccT/Llut/0N1rf9Qi7T/PWOPRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWTqDNlq8n/kPD8/3XI
+        7/9sveb/Xa3T/43s+/+I5Pj/fdTz/3PF7v9zxe7/c8Xu/3PF7v8+Y4CZAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYKjAKGmz
+        yfSU9v//gdr1/2Cv2f+B3u3/lPb//5T2//+U9v//fNLy/3PF7v9zxe7/c8Xu/0BpgpkAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAW56uzJT2//+M6vr/WKfN/5T2//+U9v//lPb//5T2//+G4vj/c8Xu/3PF7v9jqMr/TICeRwAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABXmrBRiur2/5T2//+J5vn/lPb//5T2//+U9v//lPb//4bi+P9zxe7/c8Xu/1GH
+        o+Bbm70UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgs87WlPb//5T2//+U9v//lPb//5T2//+U9v//huL4/3PF
+        7v9jqMr/UYqmUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFKSqnBwxt3/lPb//5T2//+U9v//lPb//5L0
+        /v94zPD/WZ/P9FKRvlEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZrbNHkiAka140uX/heLz/5T2
+        //+U9v//fdTz/1ilz9ZPj7pRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVaK+UVed
+        t1tzyN7qe9Hf/2W509Zpt9b/XaXJMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAQ3+X6lSPm61eqL8zbsHYClakxHBltdMeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////gfzD/4Dwgf+AwAD/wAAAH/AA
+        AA/gAAAP4AAAD/gAAA/8AAAH/AAAB/wAAAP4AAAD/AAAA/wAAAP8AAAP/IAAP/+AAH//gAD//8AA///A
+        AP//wAD//+AA///gAP//8AH///AD///wB///+A////wP////////////KAAAABAAAAAgAAAAAQAgAAAA
+        AABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8S50ePkuW6kdNp+o+TZY9AAAAAAAAAABEdY9HRXSNhD5l
+        lhQsNXPBPkKWtzs+ih4AAAAAAAAAAAAAAAAAAAAARVaqClNxzI5FcMr0PkeM4Dtgi1FCcIrWZ7LY/2/B
+        6v9Aa42jLkmd4E5Qvv81OHaZNUR7HjNEgwoAAAAAAAAAAAAAAABLdbMUarHK9Elznf9PdJn/LlGV/2Su
+        1f9pueP/ZK7V/02Irf8kIkL/UICn/ztToP8vOYP0AAAAAAAAAAAAAAAAUY+uCk2JpWZjmav0ZrLW/2Cd
+        x/+E3vb/gNns/2m52v9gmMb/UlG2/1yl1P9Peaz/Q1WVowAAAAAAAAAAAAAAAAAAAAAAAAAAX6e+wW6+
+        5P9Pbqn/TGiy/2Chvv9lsNP/NlZ8/yAjTOpGeLP/WZvL/2mz2fRJdZhHAAAAAAAAAAAAAAAAToemFF6d
+        vPSM6vr/gNj0/y9Nof84Tp//ZbHa/y8/bf8lKWP/TlXJ/zI0Zv9sveb/UoqfegAAAAAAAAAAAAAAAAAA
+        AABlrLuZkvT+/5T2//9/1/H/X6bU/16n0v9EZaH/NVvD/0JtzP8xM3vqWZ/G6kV+nlsAAAAAAAAAAAAA
+        AAAAAAAAWp2uW16jtWZsvM63dsze9HK6yP9PZoH/Tm2t/zZx4f88Y7P/JDZqhDZcijMAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABRkKYUTomjrVqdv/Rjrdb/ZI/q/1yS+v9Dc9H/PUiE4DZUkhQAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2hwK191PP/ZrPb/3nK6f9op+H/VpbN/0+FrLcAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmr8R6jez7/3PK5P+U9v//iuj6/3PF7v9Ylba3AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa7nMFITi8PSR8v3/lPb//43s+/9vveX/V5S0UQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcpLmOiej1/5T2//94zuz0WZ7IZgAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYK7EFFidsrdrvdKEYK3OcAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAADA8AAAADAACAAwAAgAMAAOABAADAAQAA4AEAAOAD
+        AADwBwAA+A8AAPgPAAD4DwAA/B8AAPw/AAD//wAA
+</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="ItemBlukBerry" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemBlukBerry.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemGreatBall" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemGreatBall.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemHyperPotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemHyperPotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemIncenseOrdinary" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemIncenseOrdinary.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemIncubatorBasic" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemIncubatorBasic.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemIncubatorBasicUnlimited" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemIncubatorBasicUnlimited.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemItemStorageUpgrade" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemItemStorageUpgrade.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemLuckyEgg" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemLuckyEgg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemMasterBall" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemMasterBall.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemMaxPotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemMaxPotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemMaxRevive" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemMaxRevive.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemNanabBerry" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemNanabBerry.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemPinapBerry" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemPinapBerry.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemPokeBall" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemPokeBall.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemPokemonStorageUpgrade" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemPokemonStorageUpgrade.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemPotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemPotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemRazzBerry" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemRazzBerry.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemRevive" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemRevive.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemSpecialCamera" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemSpecialCamera.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemSuperPotion" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemSuperPotion.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemTroyDisk" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemTroyDisk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemUltraBall" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemUltraBall.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ItemWeparBerry" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Items\ItemWeparBerry.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_10" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_10.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_100" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_100.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_101" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_101.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_102" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_102.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_103" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_103.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_104" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_104.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_105" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_105.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_106" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_106.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_107" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_107.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_108" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_108.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_109" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_109.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_11" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_110" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_110.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_111" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_111.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_112" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_112.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_113" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_113.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_114" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_114.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_115" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_115.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_116" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_116.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_117" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_117.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_118" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_118.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_119" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_119.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_12" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_120" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_120.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_121" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_121.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_122" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_122.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_123" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_123.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_124" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_124.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_125" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_125.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_126" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_126.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_127" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_127.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_128" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_128.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_129" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_129.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_13" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_130" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_130.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_131" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_131.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_132" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_132.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_133" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_133.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_134" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_134.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_135" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_135.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_136" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_136.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_137" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_137.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_138" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_138.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_139" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_139.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_14" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_14.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_140" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_140.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_141" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_141.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_142" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_142.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_143" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_143.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_144" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_144.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_145" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_145.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_146" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_146.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_147" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_147.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_148" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_148.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_149" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_149.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_15" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_150" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_150.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_151" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_151.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_17" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_17.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_18" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_18.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_19" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_19.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_2" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_20" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_21" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_21.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_22" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_22.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_23" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_23.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_25" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_25.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_26" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_26.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_27" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_27.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_28" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_28.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_29" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_29.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_3" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_30" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_31" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_31.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_33" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_33.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_34" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_34.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_35" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_35.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_36" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_36.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_37" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_37.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_38" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_38.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_39" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_39.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_4" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_40" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_41" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_41.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_42" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_42.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_43" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_43.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_44" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_44.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_45" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_45.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_46" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_46.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_47" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_47.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_49" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_49.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_5" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_50" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_50.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_51" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_51.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_52" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_52.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_53" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_53.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_54" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_54.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_55" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_55.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_56" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_56.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_57" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_57.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_58" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_58.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_59" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_59.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_6" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_6.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_60" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_61" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_61.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_62" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_62.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_63" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_63.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_65" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_65.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_66" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_66.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_67" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_67.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_68" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_68.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_69" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_69.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_7" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_7.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_70" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_70.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_71" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_71.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_72" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_72.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_73" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_73.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_74" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_74.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_75" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_75.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_76" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_76.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_77" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_77.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_78" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_78.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_79" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_79.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_8" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_80" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_81" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_81.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_82" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_82.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_83" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_83.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_84" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_84.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_85" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_85.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_86" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_86.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_87" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_87.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_88" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_88.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_89" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_89.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_9" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_9.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_90" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_90.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_91" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_91.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_92" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_92.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_93" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_93.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_94" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_94.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_95" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_95.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_97" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_97.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_98" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_98.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokemon_99" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Pokemon\Pokemon_99.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokestop" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Markers\Pokestop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pokestop_looted" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Markers\Pokestop_looted.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="question" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Miscs\question.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Trainer_Front" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Markers\Trainer_Front.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Trainer_Left" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Markers\Trainer_Left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Trainer_Right" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Images\Markers\Trainer_Right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Resources/Icon.ico b/PokemonGo.RocketBot.Window/Resources/Icon.ico
new file mode 100644
index 0000000..af47943
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Resources/Icon.ico differ
diff --git a/PokemonGo.RocketBot.Window/Resources/ProgressBar.cs b/PokemonGo.RocketBot.Window/Resources/ProgressBar.cs
new file mode 100644
index 0000000..7887a6a
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Resources/ProgressBar.cs
@@ -0,0 +1,72 @@
+#region using directives
+
+using System;
+using System.IO;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Window.Resources
+{
+    internal class ProgressBar
+    {
+        public static int total = 100;
+        private static int leftOffset;
+
+        public static void start(string startText, int startAmt)
+        {
+            Console.BackgroundColor = ConsoleColor.Black;
+            Console.ForegroundColor = ConsoleColor.White;
+            Console.Write(startText);
+
+            leftOffset = startText.Length + 1;
+            fill(startAmt);
+        }
+
+        public static void fill(int amt, ConsoleColor barColor = ConsoleColor.Red)
+        {
+            try
+            {
+                // Window width has be be larger than what Console.CursorLeft is set to
+                // or System.ArgumentOutOfRangeException is thrown.
+                if (Console.WindowWidth < 50 + leftOffset)
+                {
+                    Console.WindowWidth = 51 + leftOffset;
+                }
+
+                Console.ForegroundColor = barColor;
+                Console.CursorLeft = 0 + leftOffset;
+                Console.Write("[");
+                Console.CursorLeft = 47 + leftOffset;
+                Console.Write("]");
+                Console.CursorLeft = 1 + leftOffset;
+                var segment = 45.5f/total;
+
+                var pos = 1 + leftOffset;
+                for (var i = 0; i < segment*amt; i++)
+                {
+                    Console.BackgroundColor = barColor;
+                    Console.CursorLeft = pos++;
+                    Console.Write(" ");
+                }
+
+                for (var i = pos; i <= 46 + leftOffset - 2; i++)
+                {
+                    Console.BackgroundColor = ConsoleColor.Black;
+                    Console.CursorLeft = pos++;
+                    Console.Write(" ");
+                }
+
+                Console.CursorLeft = 50 + leftOffset;
+                Console.BackgroundColor = ConsoleColor.Black;
+                Console.ForegroundColor = ConsoleColor.White;
+                Console.Write(amt + "%");
+
+                if (amt == total)
+                    Console.Write(Environment.NewLine);
+            }
+            catch (IOException)
+            {
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Resources/client_secret.json b/PokemonGo.RocketBot.Window/Resources/client_secret.json
new file mode 100644
index 0000000..30bb0a1
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Resources/client_secret.json
@@ -0,0 +1 @@
+{"installed":{"client_id":"1085850728336-5c0olh427pnpdrvtuq86ub2d6kkern48.apps.googleusercontent.com","project_id":"jovial-engine-140704","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"mtvRhbM1B9_bxrMAdHSK6Abm","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/Resources/device info.csv b/PokemonGo.RocketBot.Window/Resources/device info.csv
new file mode 100644
index 0000000..d23921c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/Resources/device info.csv
@@ -0,0 +1,302 @@
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 2;A1395;iOS;APPLE;iPad2,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2075073:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 2 A1396;A1396;iOS;APPLE;iPad2,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4359342:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 2 A1397;A1397;iOS;APPLE;iPad2,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M257347:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 3;A1416;iOS;APPLE;iPad3,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M730234:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 3 A1403;A1403;iOS;APPLE;iPad3,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7948214:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 3 A1430;A1430;iOS;APPLE;iPad3,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M1104024:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 4;A1458;iOS;APPLE;iPad3,5;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M8679143:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 4 A1459;A1459;iOS;APPLE;iPad3,5;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M3431274:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD 4 A1460;A1460;iOS;APPLE;iPad3,5;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M73832:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD AIR;A1474;iOS;APPLE;iPad4,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6930267:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD AIR 2;A1566;iOS;APPLE;iPad4,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7147426:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD AIR 2 A1567;A1567;iOS;APPLE;iPad4,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6021013:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD AIR A1475;A1475;iOS;APPLE;iPad4,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6475908:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD AIR A1476;A1476;iOS;APPLE;iPad4,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4577501:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 2;A1489;iOS;APPLE;iPad4,5;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4024447:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 2 A1490;A1490;iOS;APPLE;iPad4,5;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M420477:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 2 A1491;A1491;iOS;APPLE;iPad4,5;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M246492:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 3;A1599;iOS;APPLE;iPad4,8;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M1772613:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 3 A1600;A1600;iOS;APPLE;iPad4,8;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2865802:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 3 A1601;A1601;iOS;APPLE;iPad4,8;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7326455:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 4;A1550;iOS;APPLE;iPad4,8;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2845334:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI 4 WI-FI;A1538;iOS;APPLE;iPad5,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M3556066:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI A1454;A1454;iOS;APPLE;iPad5,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7645446:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD MINI A1455;A1455;iOS;APPLE;iPad5,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6216432:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD PRO;A1652;iOS;APPLE;iPad6,4;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M1883672:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPAD PRO WI-FI;A1584;iOS;APPLE;iPad6,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M5641510:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5;A1428;iOS;APPLE;iPhone5,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4496206:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5 A1429;A1429;iOS;APPLE;iPhone5,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2734152:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5 A1442;A1442;iOS;APPLE;iPhone5,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4763363:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5C;A1529;iOS;APPLE;iPhone5,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M5037630:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5C A1456;A1456;iOS;APPLE;iPhone5,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4654003:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5C A1507;A1507;iOS;APPLE;iPhone5,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M5027417:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5C A1532;A1516;iOS;APPLE;iPhone5,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4779042:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5C A1532 CDMA;A1532 CDMA;iOS;APPLE;iPhone5,3;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2227998:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S;A1530;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7695664:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1453;A1453;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6487312:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1457;A1457;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6381537:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1518;A1518;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M1076975:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1528;A1528;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M8791510:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1530 CHINA;A1530 CHINA;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M6326979:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1533;A1533;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4016191:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 5S A1533 CDMA;A1533 CDMA;iOS;APPLE;iPhone6,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M8287093:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6;A1549;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2015300:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 A1549 CDMA;A1549 CDMA;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7909786:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 A1586;A1586;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M7777206:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 A1589;A1589;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M5548831:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 PLUS;A1522;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M5528246:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 PLUS A1522 CDMA;A1522 CDMA;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M1975615:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 PLUS A1524;A1524;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2424523:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6 PLUS A1593;A1593;iOS;APPLE;iPhone8,1;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M289286:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S;A1633;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M9138290:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S A1688;A1688;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M725617:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S A1691;A1691;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M3472594:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S A1700;A1700;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M2650642:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S PLUS;A1634;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4545111:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S PLUS A1687;A1687;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M1157729:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S PLUS A1690;A1690;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M4912179:user/release-keys
+8525f5d8201f78b5;unknown;iBoot;APPLE;IPHONE 6S PLUS A1699;A1699;iOS;APPLE;iPhone8,2;apple;release-keys;user;apple/apple/unknown_6.0.1/MMB29M332946:user/release-keys
+8525f5d8201f78b5;MSM9038;unknown;DELL;AERO;AERO;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9038_6.0.1/MMB29M9051330:user/release-keys
+8525f5d8201f78b5;MSM9039;unknown;DELL;FLASH;FLASH;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9039_6.0.1/MMB29M3186163:user/release-keys
+8525f5d8201f78b5;MSM9040;unknown;DELL;MINI 3IX;MINI 3IX;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9040_6.0.1/MMB29M4153186:user/release-keys
+8525f5d8201f78b5;MSM9041;unknown;DELL;SMOKE;SMOKE;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9041_6.0.1/MMB29M538283:user/release-keys
+8525f5d8201f78b5;MSM9042;unknown;DELL;STREAK;M01M;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9042_6.0.1/MMB29M9622763:user/release-keys
+8525f5d8201f78b5;MSM9043;unknown;DELL;STREAK 10 PRO;STREAK 10 PRO;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9043_6.0.1/MMB29M8396531:user/release-keys
+8525f5d8201f78b5;MSM9044;unknown;DELL;STREAK 7;MO2M;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9044_6.0.1/MMB29M6535432:user/release-keys
+8525f5d8201f78b5;MSM9045;unknown;DELL;STREAK 7 WI-FI;STREAK 7 WI-FI;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9045_6.0.1/MMB29M4844270:user/release-keys
+8525f5d8201f78b5;MSM9046;unknown;DELL;STREAK PRO;STREAK PRO;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9046_6.0.1/MMB29M5455775:user/release-keys
+8525f5d8201f78b5;MSM9047;unknown;DELL;STREAK US;STREAK US;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9047_6.0.1/MMB29M7491292:user/release-keys
+8525f5d8201f78b5;MSM9048;unknown;DELL;VENUE 10 7000;VENUE 10 7000;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9048_6.0.1/MMB29M2745687:user/release-keys
+8525f5d8201f78b5;MSM9049;unknown;DELL;VENUE 7;VENUE 7;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9049_6.0.1/MMB29M2209238:user/release-keys
+8525f5d8201f78b5;MSM9050;unknown;DELL;VENUE 7 3730;3730;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9050_6.0.1/MMB29M7979339:user/release-keys
+8525f5d8201f78b5;MSM9051;unknown;DELL;VENUE 7 3730 8GB;VENUE 7 3730 8GB;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9051_6.0.1/MMB29M1067843:user/release-keys
+8525f5d8201f78b5;MSM9052;unknown;DELL;VENUE 7 3741;3741;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9052_6.0.1/MMB29M3681560:user/release-keys
+8525f5d8201f78b5;MSM9053;unknown;DELL;VENUE 7 WIFI;VENUE 7 WIFI;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9053_6.0.1/MMB29M4704136:user/release-keys
+8525f5d8201f78b5;MSM9054;unknown;DELL;VENUE 8;VENUE 8;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9054_6.0.1/MMB29M3634348:user/release-keys
+8525f5d8201f78b5;MSM9055;unknown;DELL;VENUE 8 3840;3840;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9055_6.0.1/MMB29M8597328:user/release-keys
+8525f5d8201f78b5;MSM9056;unknown;DELL;VENUE 8 7000;7840;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9056_6.0.1/MMB29M4035445:user/release-keys
+8525f5d8201f78b5;MSM9057;unknown;DELL;VENUE 8 7000 LTE;VENUE 8 7000 LTE;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9057_6.0.1/MMB29M4109990:user/release-keys
+8525f5d8201f78b5;MSM9058;unknown;DELL;VENUE 8 WIFI;3830;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9058_6.0.1/MMB29M3124060:user/release-keys
+8525f5d8201f78b5;MSM9059;unknown;DELL;VENUE THUNDER;VENUE THUNDER;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9059_6.0.1/MMB29M3969392:user/release-keys
+8525f5d8201f78b5;MSM9060;unknown;DELL;VENUE THUNDER NA;VENUE THUNDER NA;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9060_6.0.1/MMB29M7070917:user/release-keys
+8525f5d8201f78b5;MSM9061;unknown;DELL;XCD 28;XCD 28;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9061_6.0.1/MMB29M3219429:user/release-keys
+8525f5d8201f78b5;MSM9062;unknown;DELL;XCD 35;XCD 35;qcom;DELL;SM-G925T;google;release-keys;user;dell/google/msm9062_6.0.1/MMB29M2706559:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;TABLET P;TABLET P;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9063_6.0.1/MMB29M4953608:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;TABLET P 3G;TABLET P 3G;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9064_6.0.1/MMB29M4400248:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA A;SO-04E;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9065_6.0.1/MMB29M4851351:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA A2;SO-04F;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9066_6.0.1/MMB29M7754400:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA A4;SO-04G;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9067_6.0.1/MMB29M9966525:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ACRO S;LT26W;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9068_6.0.1/MMB29M4241336:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA AX;SO-01E;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9069_6.0.1/MMB29M943607:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C;C2304;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9070_6.0.1/MMB29M9435238:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C S39C;S39C;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9071_6.0.1/MMB29M4970526:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C S39H;S39H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9072_6.0.1/MMB29M6671210:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C3;D2533;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9073_6.0.1/MMB29M4018582:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C3 DUAL;S55U;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9074_6.0.1/MMB29M8750449:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C3 DUAL D2502;D2502;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9075_6.0.1/MMB29M6899552:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C3 DUAL S55T;S55T;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9076_6.0.1/MMB29M161167:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C4;E5303;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9077_6.0.1/MMB29M989411:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C4 DUAL;E5333;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9078_6.0.1/MMB29M9855288:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C4 DUAL E5343;E5343;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9079_6.0.1/MMB29M2291142:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C4 DUAL E5363;E5363;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9080_6.0.1/MMB29M8384528:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C4 E5306;E5306;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9081_6.0.1/MMB29M66930:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C4 E5353;E5353;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9082_6.0.1/MMB29M8971133:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C5 ULTRA;E5553;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9083_6.0.1/MMB29M7686697:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C5 ULTRA DUAL;E5533;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9084_6.0.1/MMB29M6171566:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C5 ULTRA DUAL E5563;E5563;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9085_6.0.1/MMB29M2720413:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C5 ULTRA E5506;E5506;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9086_6.0.1/MMB29M8174393:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA C670X;C670X;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9087_6.0.1/MMB29M1645569:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E;C1505;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9088_6.0.1/MMB29M7062997:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E C1504;C1504;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9089_6.0.1/MMB29M3388147:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E DUAL;C1605;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9090_6.0.1/MMB29M8387235:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E DUAL C1604;C1604;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9091_6.0.1/MMB29M3818101:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E1;D2005;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9092_6.0.1/MMB29M3639035:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E1 2;XPERIA E1 2;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9093_6.0.1/MMB29M170303:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E1 D2004;D2004;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9094_6.0.1/MMB29M9004103:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E1 DUAL;D2104;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9095_6.0.1/MMB29M4743242:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E1 DUAL D2105;D2105;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9096_6.0.1/MMB29M371531:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E1 DUAL D2114;D2114;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9097_6.0.1/MMB29M5595186:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E3;D2202;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9098_6.0.1/MMB29M8770477:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E3 D2203;D2203;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9099_6.0.1/MMB29M7447329:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E3 D2206;D2206;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9100_6.0.1/MMB29M1781068:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E3 D2243;D2243;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9101_6.0.1/MMB29M9510632:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E3 DUAL;D2212;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9102_6.0.1/MMB29M5701079:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4;E2104;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9103_6.0.1/MMB29M1265998:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4 DUAL;E2114;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9104_6.0.1/MMB29M9838741:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4 DUAL E2115;E2115;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9105_6.0.1/MMB29M4412668:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4 E2105;E2105;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9106_6.0.1/MMB29M6373242:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4G;E2003;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9107_6.0.1/MMB29M5826885:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4G DUAL;E2033;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9108_6.0.1/MMB29M6198029:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4G DUAL E2043;E2043;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9109_6.0.1/MMB29M9255982:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4G DUAL E2063;E2063;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9110_6.0.1/MMB29M8537145:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4G E2006;E2006;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9111_6.0.1/MMB29M6003982:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA E4G E2053;E2053;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9112_6.0.1/MMB29M467595:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA GO;ST27I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9113_6.0.1/MMB29M6797833:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA GO ST27A;ST27A;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9114_6.0.1/MMB29M5874233:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA GX;SO-04D;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9115_6.0.1/MMB29M4799220:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA HATSUNE MIKU;XPERIA HATSUNE MIKU;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9116_6.0.1/MMB29M3457013:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ION HSPA;LT28H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9117_6.0.1/MMB29M9559435:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ION LTE;LT28I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9118_6.0.1/MMB29M7787134:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ION LTE AT&T;LT28AT;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9119_6.0.1/MMB29M5993464:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA J;ST26I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9120_6.0.1/MMB29M6855387:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA J ST26A;ST26A;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9121_6.0.1/MMB29M929481:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA L;C2105;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9122_6.0.1/MMB29M176116:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA L C2104;C2104;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9123_6.0.1/MMB29M2030413:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M;C1904;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9124_6.0.1/MMB29M3759877:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M C1905;C1905;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9125_6.0.1/MMB29M921382:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M DUAL;C2005;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9126_6.0.1/MMB29M8956993:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M DUAL C2004;C2004;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9127_6.0.1/MMB29M1853897:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2;D2303;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9128_6.0.1/MMB29M2520016:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2 AQUA;D2403;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9129_6.0.1/MMB29M7184430:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2 AQUA D2406;D2406;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9130_6.0.1/MMB29M8533216:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2 D2305;D2305;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9131_6.0.1/MMB29M8953116:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2 D2306;D2306;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9132_6.0.1/MMB29M6588648:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2 DUAL;D2302;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9133_6.0.1/MMB29M3772399:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M2 DUAL S50H;S50H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9134_6.0.1/MMB29M9639020:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA;E2303;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9135_6.0.1/MMB29M6008675:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA DUAL;E2312;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9136_6.0.1/MMB29M9957218:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA DUAL E2333;E2333;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9137_6.0.1/MMB29M209700:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA DUAL E2363;E2363;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9138_6.0.1/MMB29M8489219:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA E2302;E2302;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9139_6.0.1/MMB29M4003521:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA E2306;E2306;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9140_6.0.1/MMB29M5324429:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M4 AQUA E2353;E2353;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9141_6.0.1/MMB29M7049232:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M5;E5603;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9142_6.0.1/MMB29M3323369:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M5 DUAL;E5633;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9143_6.0.1/MMB29M4557066:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M5 DUAL E5643;E5643;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9144_6.0.1/MMB29M3873786:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M5 DUAL E5663;E5663;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9145_6.0.1/MMB29M7411804:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M5 E5606;E5606;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9146_6.0.1/MMB29M5020978:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA M5 E5653;E5653;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9147_6.0.1/MMB29M6955798:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA MIRO;ST23I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9148_6.0.1/MMB29M7134484:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA MIRO ST23A;ST23A;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9149_6.0.1/MMB29M6650371:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA NEO L;MT25I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9150_6.0.1/MMB29M5055664:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA P;LT22I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9151_6.0.1/MMB29M8413919:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA S;LT26I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9152_6.0.1/MMB29M9252542:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SL;LT26II;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9153_6.0.1/MMB29M2359701:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SOLA;MT27I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9154_6.0.1/MMB29M4351525:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SP;C5302;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9155_6.0.1/MMB29M5897177:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SP C5306;C5306;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9156_6.0.1/MMB29M7348293:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SP CDMA;M35C;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9157_6.0.1/MMB29M6820393:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SP LTE;C5303;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9158_6.0.1/MMB29M5001571:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SP M35TS;M35TS;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9159_6.0.1/MMB29M387708:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SP TD-LTE;M35T;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9160_6.0.1/MMB29M4494155:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA SX;SO-05D;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9161_6.0.1/MMB29M2154321:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T;LT30P;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9162_6.0.1/MMB29M3616009:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T LTE;LT30A;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9163_6.0.1/MMB29M6792862:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T2 ULTRA;D5303;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9164_6.0.1/MMB29M7182407:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T2 ULTRA D5306;D5306;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9165_6.0.1/MMB29M9128368:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T2 ULTRA D5316;D5316;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9166_6.0.1/MMB29M4903606:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T2 ULTRA DUAL;D5322;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9167_6.0.1/MMB29M3607850:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T2 ULTRA DUAL XM50H;XM50H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9168_6.0.1/MMB29M7243830:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T2 ULTRA XM50T;XM50T;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9169_6.0.1/MMB29M7944973:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T3;D5103;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9170_6.0.1/MMB29M3509592:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T3 D5102;D5102;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9171_6.0.1/MMB29M1727661:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T3 D5106;D5106;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9172_6.0.1/MMB29M2630083:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA T3 M50W;M50W;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9173_6.0.1/MMB29M7847693:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET S;XPERIA TABLET S;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9174_6.0.1/MMB29M2081876:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET S 3G;SGPT131A1;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9175_6.0.1/MMB29M3491021:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET Z;SGP321;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9176_6.0.1/MMB29M6232868:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET Z SGP341;SGP341;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9177_6.0.1/MMB29M5810479:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET Z SGP351;SGP351;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9178_6.0.1/MMB29M8635726:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET Z SO-03E;SO-03E;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9179_6.0.1/MMB29M584857:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TABLET Z WIFI;SGP311;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9180_6.0.1/MMB29M4689716:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TIPO;ST21I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9181_6.0.1/MMB29M5045743:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TIPO DUAL;ST21A2;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9182_6.0.1/MMB29M8144852:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TIPO DUAL ST21I2;ST21I2;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9183_6.0.1/MMB29M5255164:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TIPO ST21A;ST21A;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9184_6.0.1/MMB29M9273122:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TL;LT30AT;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9185_6.0.1/MMB29M630184:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA TX;LT29I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9186_6.0.1/MMB29M305568:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA U;ST25A;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9187_6.0.1/MMB29M6100476:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA U ST25I;ST25I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9188_6.0.1/MMB29M3699072:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA UL;SOL22;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9189_6.0.1/MMB29M1536325:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA V;LT25I;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9190_6.0.1/MMB29M714740:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA VC;LT25C;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9191_6.0.1/MMB29M5564564:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA VL;CDMA SOL21;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9192_6.0.1/MMB29M9383871:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z;C6602;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9193_6.0.1/MMB29M3047868:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z C6616;C6616;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9194_6.0.1/MMB29M6944381:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z L36H;L36H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9195_6.0.1/MMB29M3847706:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z LTE;C6603;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9196_6.0.1/MMB29M9243340:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z SO-02E;SO-02E;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9197_6.0.1/MMB29M3725877:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z T-MOBILE;C6606;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9198_6.0.1/MMB29M121795:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z ULTRA;C6833;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9199_6.0.1/MMB29M2937963:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z ULTRA C6802;C6802;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9200_6.0.1/MMB29M3587773:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z ULTRA C6806;C6806;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9201_6.0.1/MMB29M6197475:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z ULTRA C6843;C6843;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9202_6.0.1/MMB29M6265532:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z ULTRA SOL24;SOL24;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9203_6.0.1/MMB29M7296627:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z ULTRA XL39H;XL39H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9204_6.0.1/MMB29M2855540:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1;C6902;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9205_6.0.1/MMB29M5049127:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 C6903;C6903;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9206_6.0.1/MMB29M780779:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 C6906;C6906;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9207_6.0.1/MMB29M2643202:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 C6943;C6943;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9208_6.0.1/MMB29M156386:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 COMPACT;D5503;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9209_6.0.1/MMB29M7728763:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 COMPACT M51W;M51W;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9210_6.0.1/MMB29M5791037:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 L39T;L39T;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9211_6.0.1/MMB29M2294101:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 L39U;L39U;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9212_6.0.1/MMB29M4910415:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 SO-01F;SO-01F;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9213_6.0.1/MMB29M6897522:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1 SOL23;SOL23;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9214_6.0.1/MMB29M3876478:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1F;SO-02F;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9215_6.0.1/MMB29M4598396:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z1S;C6916;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9216_6.0.1/MMB29M440255:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2;D6502;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9217_6.0.1/MMB29M6823410:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 D6503;D6503;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9218_6.0.1/MMB29M6966119:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 D6543;D6543;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9219_6.0.1/MMB29M5969972:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 L50T;L50T;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9220_6.0.1/MMB29M5643540:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 L50U;L50U;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9221_6.0.1/MMB29M211937:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 SO-03F;SO-03F;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9222_6.0.1/MMB29M3150989:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET;SGP541;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9223_6.0.1/MMB29M8122081:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET SGP521;SGP521;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9224_6.0.1/MMB29M466706:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET SGP551;SGP551;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9225_6.0.1/MMB29M1224050:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET SGP561;SGP561;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9226_6.0.1/MMB29M1292340:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET SO-05F;SO-05F;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9227_6.0.1/MMB29M1703500:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET SOT21;SOT21;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9228_6.0.1/MMB29M9472814:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET WI-FI 16 GB;SGP511;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9229_6.0.1/MMB29M9759590:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2 TABLET WI-FI 32 GB;SGP512;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9230_6.0.1/MMB29M9017223:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z2A;D6563;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9231_6.0.1/MMB29M3671993:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3;D6603;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9232_6.0.1/MMB29M5098013:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 401SO;401SO;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9233_6.0.1/MMB29M4426095:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 COMPACT;D5803;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9234_6.0.1/MMB29M322858:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 COMPACT D5833;D5833;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9235_6.0.1/MMB29M815933:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 COMPACT SO-02G;SO-02G;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9236_6.0.1/MMB29M9090777:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 D6616;D6616;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9237_6.0.1/MMB29M2417629:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 D6643;D6643;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9238_6.0.1/MMB29M4995258:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 D6653;D6653;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9239_6.0.1/MMB29M419535:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 DUAL;D6633;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9240_6.0.1/MMB29M5509237:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 L55T;L55T;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9241_6.0.1/MMB29M1099541:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 L55U;L55U;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9242_6.0.1/MMB29M2292750:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 SO-01G;SO-01G;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9243_6.0.1/MMB29M6187719:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 SOL26;SOL26;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9244_6.0.1/MMB29M1841709:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 TABLET COMPACT;SGP621;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9245_6.0.1/MMB29M8970664:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 TABLET COMPACT 16GB;SGP611;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9246_6.0.1/MMB29M6762982:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 TABLET COMPACT 32GB;SGP612;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9247_6.0.1/MMB29M6300837:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3 TABLET COMPACT SGP641;SGP641;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9248_6.0.1/MMB29M6195639:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3+;E6553;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9249_6.0.1/MMB29M7337663:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3+ DUAL;E6533;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9250_6.0.1/MMB29M4819254:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z3V;D6708;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9251_6.0.1/MMB29M3188557:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4;402SO;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9252_6.0.1/MMB29M5632249:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 COMPACT;XPERIA Z4 COMPACT;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9253_6.0.1/MMB29M7975956:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 SO-03G;SO-03G;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9254_6.0.1/MMB29M4740199:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 SOV31;SOV31;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9255_6.0.1/MMB29M5694537:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 TABLET;SGP771;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9256_6.0.1/MMB29M8888332:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 TABLET SO-05G;SO-05G;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9257_6.0.1/MMB29M404607:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 TABLET SOT31;SOT31;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9258_6.0.1/MMB29M9642827:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 TABLET WIFI;SGP712;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9259_6.0.1/MMB29M4667580:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4 ULTRA;XPERIA Z4 ULTRA;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9260_6.0.1/MMB29M4390310:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z4V;E6508;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9261_6.0.1/MMB29M2481319:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5;E6603;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9262_6.0.1/MMB29M3132759:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 501SO;501SO;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9263_6.0.1/MMB29M2598656:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 COMPACT;E5803;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9264_6.0.1/MMB29M4821528:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 COMPACT E5823;E5823;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9265_6.0.1/MMB29M7188322:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 COMPACT SO-02H;SO-02H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9266_6.0.1/MMB29M9649438:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 DUAL;E6633;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9267_6.0.1/MMB29M5632613:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 DUAL E6683;E6683;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9268_6.0.1/MMB29M8768478:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 E6653;E6653;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9269_6.0.1/MMB29M6635259:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 PREMIUM;E6853;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9270_6.0.1/MMB29M7242512:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 PREMIUM DUAL;E6833;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9271_6.0.1/MMB29M2262584:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 PREMIUM DUAL E6883;E6883;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9272_6.0.1/MMB29M2773137:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 PREMIUM SO-03H;SO-03H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9273_6.0.1/MMB29M9806090:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 SO-01H;SO-01H;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9274_6.0.1/MMB29M1268606:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA Z5 SOV32;SOV32;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9275_6.0.1/MMB29M7563623:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ZL;C6502;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9276_6.0.1/MMB29M4585370:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ZL C6503;C6503;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9277_6.0.1/MMB29M4366196:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ZL C6506;C6506;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9278_6.0.1/MMB29M1535698:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ZL2;SOL25;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9279_6.0.1/MMB29M8681975:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ZR;C5502;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9280_6.0.1/MMB29M7549891:user/release-keys
+8525f5d8201f78b5;s1;unknown;SONY;XPERIA ZR LTE;C5503;qcom;SONY;SM-G925T;google;release-keys;user;sony/google/msm9281_6.0.1/MMB29M5791383:user/release-keys
diff --git a/PokemonGo.RocketBot.Window/Resources/encrypt.dll b/PokemonGo.RocketBot.Window/Resources/encrypt.dll
new file mode 100644
index 0000000..1565c46
Binary files /dev/null and b/PokemonGo.RocketBot.Window/Resources/encrypt.dll differ
diff --git a/PokemonGo.RocketBot.Window/SETUP.md b/PokemonGo.RocketBot.Window/SETUP.md
new file mode 100644
index 0000000..97b32b9
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/SETUP.md
@@ -0,0 +1,11 @@
+Setup for Necrobot:
+
+1. Run the NecroBot application and setup your credentials (google/ptc)
+2. Go to the config directory and open config.json in Notepad, Sublime, Brackets, etc.
+3. Change the "DefaultLatitude" and "DefaultLongitude" to your starting location.
+	Change other parameters in the json file as you wish.
+		**Note: changing "MaxTravelDistanceInMeters" to a large number (>=5000) may cause problems**
+4. Run the NecroBot app again and start botting PoGo!
+
+See the Discord chat below for questions. Be nice.
+https://discord.gg/VXKxNFr
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/EvolvePokemonHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/EvolvePokemonHandler.cs
new file mode 100644
index 0000000..9117862
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/EvolvePokemonHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.ActionCommands
+{
+    public class EvolvePokemonHandler : IWebSocketRequestHandler
+    {
+        public EvolvePokemonHandler()
+        {
+            Command = "EvolvePokemon";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await EvolveSpecificPokemonTask.Execute(session, (ulong) message.PokemonId);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/TransferPokemonHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/TransferPokemonHandler.cs
new file mode 100644
index 0000000..9a5d172
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/ActionCommands/TransferPokemonHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.ActionCommands
+{
+    public class TransferPokemonHandler : IWebSocketRequestHandler
+    {
+        public TransferPokemonHandler()
+        {
+            Command = "TransferPokemon";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await TransferSpecificPokemonTask.Execute(session, (ulong) message.PokemonId);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/EncodingHelper.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/EncodingHelper.cs
new file mode 100644
index 0000000..c9046e6
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/EncodingHelper.cs
@@ -0,0 +1,39 @@
+using System;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler
+{
+    internal class EncodingHelper
+    {
+        public static string Serialize(dynamic evt)
+        {
+            var jsonSerializerSettings = new JsonSerializerSettings {TypeNameHandling = TypeNameHandling.All};
+
+            // Add custom seriaizer to convert uong to string (ulong shoud not appear to json according to json specs)
+            jsonSerializerSettings.Converters.Add(new IdToStringConverter());
+
+            return JsonConvert.SerializeObject(evt, Formatting.None, jsonSerializerSettings);
+        }
+
+        public class IdToStringConverter : JsonConverter
+        {
+            public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
+                JsonSerializer serializer)
+            {
+                var jt = JToken.ReadFrom(reader);
+                return jt.Value<long>();
+            }
+
+            public override bool CanConvert(Type objectType)
+            {
+                return typeof(long).Equals(objectType) || typeof(ulong).Equals(objectType);
+            }
+
+            public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+            {
+                serializer.Serialize(writer, value.ToString());
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/EggListResponce.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/EggListResponce.cs
new file mode 100644
index 0000000..da17f40
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/EggListResponce.cs
@@ -0,0 +1,16 @@
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events
+{
+    public class EggListResponce : IWebSocketResponce
+    {
+        public EggListResponce(dynamic data, string requestID)
+        {
+            Command = "EggListWeb";
+            Data = data;
+            RequestID = requestID;
+        }
+
+        public string RequestID { get; }
+        public string Command { get; }
+        public dynamic Data { get; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/ItemListResponce.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/ItemListResponce.cs
new file mode 100644
index 0000000..a0a3995
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/ItemListResponce.cs
@@ -0,0 +1,16 @@
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events
+{
+    internal class ItemListResponce : IWebSocketResponce
+    {
+        public ItemListResponce(dynamic data, string requestID)
+        {
+            Command = "ItemListWeb";
+            Data = data;
+            RequestID = requestID;
+        }
+
+        public string RequestID { get; }
+        public string Command { get; }
+        public dynamic Data { get; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/PokemonListResponce.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/PokemonListResponce.cs
new file mode 100644
index 0000000..57c4e4f
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/PokemonListResponce.cs
@@ -0,0 +1,18 @@
+using PokemonGo.RocketBot.Logic.Event;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events
+{
+    public class PokemonListResponce : IWebSocketResponce, IEvent
+    {
+        public PokemonListResponce(dynamic data, string requestID)
+        {
+            Command = "PokemonListWeb";
+            Data = data;
+            RequestID = requestID;
+        }
+
+        public string RequestID { get; }
+        public string Command { get; }
+        public dynamic Data { get; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/TrainerProfileResponce.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/TrainerProfileResponce.cs
new file mode 100644
index 0000000..7491b16
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/TrainerProfileResponce.cs
@@ -0,0 +1,16 @@
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events
+{
+    internal class TrainerProfileResponce : IWebSocketResponce
+    {
+        public TrainerProfileResponce(dynamic data, string requestID)
+        {
+            Command = "TrainerProfile";
+            Data = data;
+            RequestID = requestID;
+        }
+
+        public string RequestID { get; }
+        public string Command { get; }
+        public dynamic Data { get; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/WebResponce.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/WebResponce.cs
new file mode 100644
index 0000000..6a26020
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Events/WebResponce.cs
@@ -0,0 +1,9 @@
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events
+{
+    public class WebResponce : IWebSocketResponce
+    {
+        public string RequestID { get; set; }
+        public string Command { get; set; }
+        public dynamic Data { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetEggListHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetEggListHandler.cs
new file mode 100644
index 0000000..1c7cd3f
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetEggListHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands
+{
+    internal class GetEggListHandler : IWebSocketRequestHandler
+    {
+        public GetEggListHandler()
+        {
+            Command = "GetEggList";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await GetEggListTask.Execute(session, webSocketSession, (string) message.RequestID);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetItemsListHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetItemsListHandler.cs
new file mode 100644
index 0000000..bd6977c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetItemsListHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands
+{
+    internal class GetItemsListHandler : IWebSocketRequestHandler
+    {
+        public GetItemsListHandler()
+        {
+            Command = "GetItemsList";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await GetItemListTask.Execute(session, webSocketSession, (string) message.RequestID);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonListHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonListHandler.cs
new file mode 100644
index 0000000..16398fd
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonListHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands
+{
+    public class GetPokemonListHandler : IWebSocketRequestHandler
+    {
+        public GetPokemonListHandler()
+        {
+            Command = "GetPokemonList";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await GetPokemonListTask.Execute(session, webSocketSession, (string) message.RequestID);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonSettingsHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonSettingsHandler.cs
new file mode 100644
index 0000000..46368e5
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetPokemonSettingsHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands
+{
+    public class GetPokemonSettingsHandler : IWebSocketRequestHandler
+    {
+        public GetPokemonSettingsHandler()
+        {
+            Command = "GetPokemonSettings";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await GetPokemonSettingsTask.Execute(session, webSocketSession, (string) message.RequestID);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetTrainerProfileHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetTrainerProfileHandler.cs
new file mode 100644
index 0000000..af7152c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/GetTrainerProfileHandler.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands
+{
+    internal class GetTrainerProfileHandler : IWebSocketRequestHandler
+    {
+        public GetTrainerProfileHandler()
+        {
+            Command = "GetTrainerProfile";
+        }
+
+        public string Command { get; }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            await GetTrainerProfileTask.Execute(session, webSocketSession, (string) message.RequestID);
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/EggListWeb.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/EggListWeb.cs
new file mode 100644
index 0000000..1a037f7
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/EggListWeb.cs
@@ -0,0 +1,8 @@
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Helpers
+{
+    internal class EggListWeb
+    {
+        public object Incubators { get; set; }
+        public object UnusedEggs { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/PokemonListWeb.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/PokemonListWeb.cs
new file mode 100644
index 0000000..a0a27f7
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/PokemonListWeb.cs
@@ -0,0 +1,20 @@
+using PokemonGo.RocketBot.Logic.PoGoUtils;
+using POGOProtos.Data;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Helpers
+{
+    public class PokemonListWeb
+    {
+        public PokemonData Base;
+
+        public PokemonListWeb(PokemonData data)
+        {
+            Base = data;
+        }
+
+        public double IvPerfection
+        {
+            get { return PokemonInfo.CalculatePokemonPerfection(Base); }
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/TrainerProfileWeb.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/TrainerProfileWeb.cs
new file mode 100644
index 0000000..42e72d9
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Helpers/TrainerProfileWeb.cs
@@ -0,0 +1,17 @@
+using POGOProtos.Data;
+using POGOProtos.Data.Player;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Helpers
+{
+    internal class TrainerProfileWeb
+    {
+        public PlayerData Profile;
+        public PlayerStats Stats;
+
+        public TrainerProfileWeb(PlayerData profile, PlayerStats stats)
+        {
+            Profile = profile;
+            Stats = stats;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetEggListTask.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetEggListTask.cs
new file mode 100644
index 0000000..e06be03
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetEggListTask.cs
@@ -0,0 +1,34 @@
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Helpers;
+using POGOProtos.Inventory.Item;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks
+{
+    internal class GetEggListTask
+    {
+        public static async Task Execute(ISession session, WebSocketSession webSocketSession, string requestID)
+        {
+            var incubators = (await session.Inventory.GetEggIncubators())
+                .Where(x => x.UsesRemaining > 0 || x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
+                .OrderByDescending(x => x.ItemId == ItemId.ItemIncubatorBasicUnlimited)
+                .ToList();
+
+            var unusedEggs = (await session.Inventory.GetEggs())
+                .Where(x => string.IsNullOrEmpty(x.EggIncubatorId))
+                .OrderBy(x => x.EggKmWalkedTarget - x.EggKmWalkedStart)
+                .ToList();
+
+
+            var list = new EggListWeb
+            {
+                Incubators = incubators,
+                UnusedEggs = unusedEggs
+            };
+            webSocketSession.Send(EncodingHelper.Serialize(new EggListResponce(list, requestID)));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetItemListTask.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetItemListTask.cs
new file mode 100644
index 0000000..d053cdc
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetItemListTask.cs
@@ -0,0 +1,16 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks
+{
+    internal class GetItemListTask
+    {
+        public static async Task Execute(ISession session, WebSocketSession webSocketSession, string requestID)
+        {
+            var allItems = await session.Inventory.GetItems();
+            webSocketSession.Send(EncodingHelper.Serialize(new ItemListResponce(allItems, requestID)));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonListTask.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonListTask.cs
new file mode 100644
index 0000000..02fc7bc
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonListTask.cs
@@ -0,0 +1,21 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Helpers;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks
+{
+    internal class GetPokemonListTask
+    {
+        public static async Task Execute(ISession session, WebSocketSession webSocketSession, string requestID)
+        {
+            var allPokemonInBag = await session.Inventory.GetHighestsCp(1000);
+            var list = new List<PokemonListWeb>();
+            allPokemonInBag.ToList().ForEach(o => list.Add(new PokemonListWeb(o)));
+            webSocketSession.Send(EncodingHelper.Serialize(new PokemonListResponce(list, requestID)));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonSettingsTask.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonSettingsTask.cs
new file mode 100644
index 0000000..5c84b20
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetPokemonSettingsTask.cs
@@ -0,0 +1,21 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks
+{
+    internal class GetPokemonSettingsTask
+    {
+        public static async Task Execute(ISession session, WebSocketSession webSocketSession, string requestID)
+        {
+            var settings = await session.Inventory.GetPokemonSettings();
+            webSocketSession.Send(EncodingHelper.Serialize(new WebResponce
+            {
+                Command = "PokemonSettings",
+                Data = settings,
+                RequestID = requestID
+            }));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetTrainerProfileTask.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetTrainerProfileTask.cs
new file mode 100644
index 0000000..2b47012
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/GetCommands/Tasks/GetTrainerProfileTask.cs
@@ -0,0 +1,21 @@
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Events;
+using PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Helpers;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler.GetCommands.Tasks
+{
+    internal class GetTrainerProfileTask
+    {
+        public static async Task Execute(ISession session, WebSocketSession webSocketSession, string requestID)
+        {
+            var playerStats = (await session.Inventory.GetPlayerStats()).FirstOrDefault();
+            if (playerStats == null)
+                return;
+            var tmpData = new TrainerProfileWeb(session.Profile.PlayerData, playerStats);
+            webSocketSession.Send(EncodingHelper.Serialize(new TrainerProfileResponce(tmpData, requestID)));
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketRequestHandler.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketRequestHandler.cs
new file mode 100644
index 0000000..941c961
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketRequestHandler.cs
@@ -0,0 +1,12 @@
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler
+{
+    internal interface IWebSocketRequestHandler
+    {
+        string Command { get; }
+        Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message);
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketResponce.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketResponce.cs
new file mode 100644
index 0000000..0a8b301
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/IWebSocketResponce.cs
@@ -0,0 +1,9 @@
+namespace PokemonGo.RocketBot.Window.WebSocketHandler
+{
+    internal interface IWebSocketResponce
+    {
+        string RequestID { get; }
+        string Command { get; }
+        dynamic Data { get; }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketHandler/WebSocketEventManager.cs b/PokemonGo.RocketBot.Window/WebSocketHandler/WebSocketEventManager.cs
new file mode 100644
index 0000000..9ddbce9
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketHandler/WebSocketEventManager.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using PokemonGo.RocketBot.Logic.State;
+using SuperSocket.WebSocket;
+
+namespace PokemonGo.RocketBot.Window.WebSocketHandler
+{
+    internal class WebSocketEventManager
+    {
+        private readonly Dictionary<string, IWebSocketRequestHandler> _registerdHandlers =
+            new Dictionary<string, IWebSocketRequestHandler>();
+
+        public void RegisterHandler(string actionName, IWebSocketRequestHandler action)
+        {
+            try
+            {
+                _registerdHandlers.Add(actionName, action);
+            }
+            catch
+            {
+                // ignore
+            }
+        }
+
+        public async Task Handle(ISession session, WebSocketSession webSocketSession, dynamic message)
+        {
+            if (_registerdHandlers.ContainsKey((string) message.Command))
+            {
+                await _registerdHandlers[(string) message.Command].Handle(session, webSocketSession, message);
+            }
+        }
+
+        // Registers all IWebSocketRequestHandler's automatically.
+
+        public static WebSocketEventManager CreateInstance()
+        {
+            var manager = new WebSocketEventManager();
+
+            var type = typeof(IWebSocketRequestHandler);
+            var types = AppDomain.CurrentDomain.GetAssemblies()
+                .SelectMany(s => s.GetTypes())
+                .Where(p => type.IsAssignableFrom(p) && p.IsClass);
+
+            foreach (var plugin in types)
+            {
+                var instance = (IWebSocketRequestHandler) Activator.CreateInstance(plugin);
+                manager.RegisterHandler(instance.Command, instance);
+            }
+
+            return manager;
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/WebSocketInterface.cs b/PokemonGo.RocketBot.Window/WebSocketInterface.cs
new file mode 100644
index 0000000..f86ea2d
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/WebSocketInterface.cs
@@ -0,0 +1,196 @@
+#region using directives
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using PokemonGo.RocketBot.Logic.Common;
+using PokemonGo.RocketBot.Logic.Event;
+using PokemonGo.RocketBot.Logic.Logging;
+using PokemonGo.RocketBot.Logic.State;
+using PokemonGo.RocketBot.Logic.Tasks;
+using PokemonGo.RocketBot.Window.WebSocketHandler;
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Config;
+using SuperSocket.WebSocket;
+
+#endregion
+
+namespace PokemonGo.RocketBot.Window
+{
+    public class WebSocketInterface
+    {
+        private readonly WebSocketServer _server;
+        private readonly Session _session;
+        private readonly WebSocketEventManager _websocketHandler;
+        private PokeStopListEvent _lastPokeStopList;
+        private ProfileEvent _lastProfile;
+
+        public WebSocketInterface(int port, Session session)
+        {
+            _session = session;
+            var translations = session.Translation;
+            _server = new WebSocketServer();
+            _websocketHandler = WebSocketEventManager.CreateInstance();
+            var config = new ServerConfig
+            {
+                Name = "NecroWebSocket",
+                Mode = SocketMode.Tcp,
+                Certificate = new CertificateConfig
+                {
+                    FilePath = @"cert.pfx",
+                    Password = "necro"
+                }
+            };
+            config.Listeners = new List<ListenerConfig>
+            {
+                new ListenerConfig
+                {
+                    Ip = "Any",
+                    Port = port,
+                    Security = "tls"
+                },
+                new ListenerConfig
+                {
+                    Ip = "Any",
+                    Port = port + 1,
+                    Security = "none"
+                }
+            };
+
+            var setupComplete = _server.Setup(config);
+
+            if (setupComplete == false)
+            {
+                Logger.Write(translations.GetTranslation(TranslationString.WebSocketFailStart, port), LogLevel.Error);
+                return;
+            }
+
+            _server.NewMessageReceived += HandleMessage;
+            _server.NewSessionConnected += HandleSession;
+
+            _server.Start();
+        }
+
+        private void Broadcast(string message)
+        {
+            foreach (var session in _server.GetAllSessions())
+            {
+                try
+                {
+                    session.Send(message);
+                }
+                catch
+                {
+                    // ignored
+                }
+            }
+        }
+
+        private void HandleEvent(PokeStopListEvent evt)
+        {
+            _lastPokeStopList = evt;
+        }
+
+        private void HandleEvent(ProfileEvent evt)
+        {
+            _lastProfile = evt;
+        }
+
+        private async void HandleMessage(WebSocketSession session, string message)
+        {
+            switch (message)
+            {
+                case "PokemonList":
+                    await PokemonListTask.Execute(_session);
+                    break;
+                case "EggsList":
+                    await EggsListTask.Execute(_session);
+                    break;
+                case "InventoryList":
+                    await InventoryListTask.Execute(_session);
+                    break;
+            }
+
+            // Setup to only send data back to the session that requested it.
+            try
+            {
+                dynamic decodedMessage = JObject.Parse(message);
+                var handle = _websocketHandler?.Handle(_session, session, decodedMessage);
+                if (handle != null)
+                    await handle;
+            }
+            catch
+            {
+                // ignored
+            }
+        }
+
+        private void HandleSession(WebSocketSession session)
+        {
+            if (_lastProfile != null)
+                session.Send(Serialize(_lastProfile));
+
+            if (_lastPokeStopList != null)
+                session.Send(Serialize(_lastPokeStopList));
+
+            try
+            {
+                session.Send(Serialize(new UpdatePositionEvent
+                {
+                    Latitude = _session.Client.CurrentLatitude,
+                    Longitude = _session.Client.CurrentLongitude
+                }));
+            }
+            catch
+            {
+            }
+        }
+
+        public void Listen(IEvent evt, Session session)
+        {
+            dynamic eve = evt;
+
+            try
+            {
+                HandleEvent(eve);
+            }
+            catch
+            {
+                // ignored
+            }
+
+            Broadcast(Serialize(eve));
+        }
+
+        private string Serialize(dynamic evt)
+        {
+            var jsonSerializerSettings = new JsonSerializerSettings {TypeNameHandling = TypeNameHandling.All};
+
+            // Add custom seriaizer to convert uong to string (ulong shoud not appear to json according to json specs)
+            jsonSerializerSettings.Converters.Add(new IdToStringConverter());
+
+            return JsonConvert.SerializeObject(evt, Formatting.None, jsonSerializerSettings);
+        }
+    }
+
+    public class IdToStringConverter : JsonConverter
+    {
+        public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
+            JsonSerializer serializer)
+        {
+            var jt = JToken.ReadFrom(reader);
+            return jt.Value<long>();
+        }
+
+        public override bool CanConvert(Type objectType)
+        {
+            return typeof(long).Equals(objectType) || typeof(ulong).Equals(objectType);
+        }
+
+        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+        {
+            serializer.Serialize(writer, value.ToString());
+        }
+    }
+}
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/cert.pfx b/PokemonGo.RocketBot.Window/cert.pfx
new file mode 100644
index 0000000..9e1fbd2
Binary files /dev/null and b/PokemonGo.RocketBot.Window/cert.pfx differ
diff --git a/PokemonGo.RocketBot.Window/packages.config b/PokemonGo.RocketBot.Window/packages.config
new file mode 100644
index 0000000..be2074c
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/packages.config
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<packages>
+  <package id="Analytics" version="2.0.2" targetFramework="net452" />
+  <package id="BouncyCastle" version="1.8.1" targetFramework="net452" />
+  <package id="C5" version="2.4.5947.17249" targetFramework="net452" />
+  <package id="Costura.Fody" version="1.3.3.0" targetFramework="net45" developmentDependency="true" />
+  <package id="Fody" version="1.29.4" targetFramework="net45" developmentDependency="true" />
+  <package id="GeoCoordinate" version="1.1.0" targetFramework="net452" />
+  <package id="GMap.NET.WindowsForms" version="1.7.1" targetFramework="net452" />
+  <package id="Google.Apis" version="1.15.0" targetFramework="net452" />
+  <package id="Google.Apis.Auth" version="1.15.0" targetFramework="net452" />
+  <package id="Google.Apis.Core" version="1.15.0" targetFramework="net452" />
+  <package id="Google.Protobuf" version="3.0.0" targetFramework="net452" />
+  <package id="log4net" version="2.0.5" targetFramework="net45" />
+  <package id="Microsoft.NETCore.Platforms" version="1.0.1" targetFramework="net452" />
+  <package id="NETStandard.Library" version="1.6.0" targetFramework="net452" />
+  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
+  <package id="ObjectListView.Official" version="2.9.1" targetFramework="net452" />
+  <package id="S2Geometry" version="1.0.3" targetFramework="net452" />
+  <package id="SuperSocket" version="1.6.6.1" targetFramework="net45" />
+  <package id="SuperSocket.Engine" version="1.6.6.1" targetFramework="net45" />
+  <package id="SuperSocket.WebSocket" version="1.6.6.1" targetFramework="net45" />
+  <package id="System.Collections" version="4.0.11" targetFramework="net452" />
+  <package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net452" />
+  <package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net452" />
+  <package id="System.Diagnostics.Tools" version="4.0.1" targetFramework="net452" />
+  <package id="System.Diagnostics.Tracing" version="4.1.0" targetFramework="net452" />
+  <package id="System.Globalization" version="4.0.11" targetFramework="net452" />
+  <package id="System.IO" version="4.1.0" targetFramework="net452" />
+  <package id="System.IO.Compression" version="4.1.0" targetFramework="net452" />
+  <package id="System.Linq" version="4.1.0" targetFramework="net452" />
+  <package id="System.Linq.Expressions" version="4.1.0" targetFramework="net452" />
+  <package id="System.Net.Http" version="4.1.0" targetFramework="net452" />
+  <package id="System.Net.Primitives" version="4.0.11" targetFramework="net452" />
+  <package id="System.ObjectModel" version="4.0.12" targetFramework="net452" />
+  <package id="System.Reflection" version="4.1.0" targetFramework="net452" />
+  <package id="System.Reflection.Extensions" version="4.0.1" targetFramework="net452" />
+  <package id="System.Reflection.Primitives" version="4.0.1" targetFramework="net452" />
+  <package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="net452" />
+  <package id="System.Runtime" version="4.1.0" targetFramework="net452" />
+  <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net452" />
+  <package id="System.Runtime.InteropServices" version="4.1.0" targetFramework="net452" />
+  <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net452" />
+  <package id="System.Runtime.Numerics" version="4.0.1" targetFramework="net452" />
+  <package id="System.Text.Encoding" version="4.0.11" targetFramework="net452" />
+  <package id="System.Text.Encoding.Extensions" version="4.0.11" targetFramework="net452" />
+  <package id="System.Text.RegularExpressions" version="4.1.0" targetFramework="net452" />
+  <package id="System.Threading" version="4.0.11" targetFramework="net452" />
+  <package id="System.Threading.Tasks" version="4.0.11" targetFramework="net452" />
+  <package id="System.Threading.Timer" version="4.0.1" targetFramework="net452" />
+  <package id="System.Xml.ReaderWriter" version="4.0.11" targetFramework="net452" />
+  <package id="System.Xml.XDocument" version="4.0.11" targetFramework="net452" />
+  <package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net452" />
+</packages>
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/supersocket.cmd b/PokemonGo.RocketBot.Window/supersocket.cmd
new file mode 100644
index 0000000..4532661
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/supersocket.cmd
@@ -0,0 +1,2 @@
+@echo off
+SuperSocket.SocketService.exe -c %1 %2
\ No newline at end of file
diff --git a/PokemonGo.RocketBot.Window/supersocket.sh b/PokemonGo.RocketBot.Window/supersocket.sh
new file mode 100644
index 0000000..f3cd0d9
--- /dev/null
+++ b/PokemonGo.RocketBot.Window/supersocket.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+mono SuperSocket.SocketService.exe -c $1 $2
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/ClassDiagram1.cd b/PokemonGo/RocketAPI/ClassDiagram1.cd
deleted file mode 100644
index 669c3d7..0000000
--- a/PokemonGo/RocketAPI/ClassDiagram1.cd
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ClassDiagram MajorVersion="1" MinorVersion="1">
-  <Class Name="AllEnum.AllEnumReflection">
-    <Position X="0.5" Y="0.75" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Class>
-  <Enum Name="AllEnum.RpcDirection" Collapsed="true">
-    <Position X="4" Y="5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAABAAAAAAAAAAAAAAAAAgAAAAAAAAAAAABA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.TeamColor" Collapsed="true">
-    <Position X="5.75" Y="5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAACAAAAAAAAAgAAAAAAAAAAAAAAIAAAAAAAACAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.RequestMethod" Collapsed="true">
-    <Position X="2.25" Y="5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>IIEIDEUIQAgqBDwIoCGGoIJApQyEDCBAk2AQBAaCIhA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.PokemonMove" Collapsed="true">
-    <Position X="5.75" Y="4.25" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>///2a2taND3nEkI0wUfJo5wDB/SAnlktDmPQTadRedI=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.ItemId" Collapsed="true">
-    <Position X="4" Y="3.5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AABEMCCAIiAAAAABAAAgAADmAEQQIQAAEAAAECRAEhA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.InventoryUpgradeType" Collapsed="true">
-    <Position X="7.5" Y="2.75" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAEIAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.EggIncubatorType" Collapsed="true">
-    <Position X="7.5" Y="2" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAAAAAIAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.PokemonFamilyId" Collapsed="true">
-    <Position X="2.25" Y="4.25" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>4ABEQHEDC1gQ1AB4LFTSAUAAUAAwQwoVEAowJDJkQCg=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.MapObjectsStatus" Collapsed="true">
-    <Position X="7.5" Y="3.5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAgAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.FortType" Collapsed="true">
-    <Position X="4" Y="2.75" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.PokemonId" Collapsed="true">
-    <Position X="4" Y="4.25" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>BhccSFupyuqvFunnYpjg+yh/jNHQBhy0N3uocpNlETg=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.FortSponsor" Collapsed="true">
-    <Position X="2.25" Y="2.75" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAACAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.FortRenderingType" Collapsed="true">
-    <Position X="0.5" Y="2.75" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.ItemType" Collapsed="true">
-    <Position X="5.75" Y="3.5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAACAAAIARAAACAABAAQCSAAAAAAAAAAAAAAAkEAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.ItemCategory" Collapsed="true">
-    <Position X="0.5" Y="3.5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAACAAAAAQAAACAABAAAASAAQAAAAAAAAAAAAkEACAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.ItemEffect" Collapsed="true">
-    <Position X="2.25" Y="3.5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAABAAAAAAgACQAAAAwAAAAIAACAAAAIAUEQIA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.ActivityType">
-    <Position X="0.5" Y="2" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>ABBAAAEAAICBBBAAAAAAYQQAACAMgASAAIAAAAABQAo=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.BadgeType" Collapsed="true">
-    <Position X="2.25" Y="2" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAYAAAAAgBgiEAAYDUIAAEAICAAsEABAUAUkgAAAeAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.HoloIapItemCategory" Collapsed="true">
-    <Position X="5.75" Y="2.75" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AEAAAAAAAAAAgAAAAAAAAAEAAAAAACAAAAAAAAAAQAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.CameraInterpolation" Collapsed="true">
-    <Position X="4" Y="2" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>IEAAAAAAAAAAIAAAAACAAAAAAAAABAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.CameraTarget" Collapsed="true">
-    <Position X="5.75" Y="2" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>gAAAAABIAAAAAAAAhAICAAAABAAAAACIAAAGAAAAFAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.PokemonType" Collapsed="true">
-    <Position X="0.5" Y="5" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAIAAAAAAAACAAAIBUAAAAAACAAsAABAEAAEAAEAcAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.PokemonMovementType" Collapsed="true">
-    <Position X="7.5" Y="4.25" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>ABAAAIAgAAAAAAAAAAAAAAAAAAAAECgAAAAAQAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Enum Name="AllEnum.PokemonClass" Collapsed="true">
-    <Position X="0.5" Y="4.25" Width="1.5" />
-    <TypeIdentifier>
-      <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAgAIIAAAAAAAAAAAAAAA=</HashCode>
-      <FileName>GeneratedCode\AllEnum.cs</FileName>
-    </TypeIdentifier>
-  </Enum>
-  <Font Name="Segoe UI" Size="9" />
-</ClassDiagram>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Client.cs b/PokemonGo/RocketAPI/Client.cs
deleted file mode 100644
index b045725..0000000
--- a/PokemonGo/RocketAPI/Client.cs
+++ /dev/null
@@ -1,576 +0,0 @@
-#region
-
-using System;
-using System.Linq;
-using System.Net;
-using System.Net.Http;
-using System.Threading.Tasks;
-using Google.Protobuf;
-using PokemonGo.RocketAPI.Enums;
-using PokemonGo.RocketAPI.Extensions;
-using PokemonGo.RocketAPI.GeneratedCode;
-using PokemonGo.RocketAPI.Helpers;
-using PokemonGo.RocketAPI.Login;
-using AllEnum;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Reflection;
-using System.Text.RegularExpressions;
-using System.Threading;
-using PokemonGo.RocketAPI.Exceptions;
-using System.Text;
-using System.IO;
-using Newtonsoft.Json;
-
-#endregion
-
-namespace PokemonGo.RocketAPI
-{
-    public class Client
-    {
-        private readonly HttpClient _httpClient;
-        private ISettings _settings;
-        private string _accessToken;
-        private string _apiUrl;
-
-        private double _currentLat;
-        private double _currentLng;
-        private Request.Types.UnknownAuth _unknownAuth;
-        public static string AccessToken { get; set; } = string.Empty;
-
-        private readonly ILoginType login;
-
-        public delegate void ConsoleWriteDelegate(ConsoleColor color, string message);
-        public static event ConsoleWriteDelegate OnConsoleWrite;
-
-        public Client(ISettings settings)
-        {
-            _settings = settings;
-            SetCoordinates(_settings.DefaultLatitude, _settings.DefaultLongitude);
-
-            //Setup HttpClient and create default headers
-            var handler = new HttpClientHandler
-            {
-                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
-                AllowAutoRedirect = false
-            };
-            _httpClient = new HttpClient(new RetryHandler(handler));
-            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Niantic App");
-            //"Dalvik/2.1.0 (Linux; U; Android 5.1.1; SM-G900F Build/LMY48G)");
-            _httpClient.DefaultRequestHeaders.ExpectContinue = false;
-            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Connection", "keep-alive");
-            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "*/*");
-            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type",
-                "application/x-www-form-urlencoded");
-
-            login = CreateLoginType(settings);
-        }
-
-        static ILoginType CreateLoginType(ISettings settings)
-        {
-            switch (settings.AuthType)
-            {
-                case AuthType.Google:
-                    return new GoogleLogin(settings.Email, settings.Password);
-                case AuthType.Ptc:
-                    return new PtcLogin(settings.PtcUsername, settings.PtcPassword);
-            }
-            throw new ArgumentOutOfRangeException(nameof(settings.AuthType), "unknown auth type");
-        }
-
-        public async Task<CatchPokemonResponse> CatchPokemon(ulong encounterId, string spawnPointGuid, double pokemonLat,
-            double pokemonLng, MiscEnums.Item pokeball, int? pokemonCP)
-        {
-            var customRequest = new Request.Types.CatchPokemonRequest
-            {
-                EncounterId = encounterId,
-                Pokeball = (int)GetBestBall(pokemonCP).Result,
-                SpawnPointGuid = spawnPointGuid,
-                HitPokemon = 1,
-                NormalizedReticleSize = Utils.FloatAsUlong(1.950),
-                SpinModifier = Utils.FloatAsUlong(1),
-                NormalizedHitPosition = Utils.FloatAsUlong(1)
-            };
-
-            var catchPokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.CATCH_POKEMON,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, CatchPokemonResponse>($"https://{_apiUrl}/rpc",
-                        catchPokemonRequest);
-        }
-
-        public async Task Login()
-        {
-            string errorMessage;
-            do
-            {
-                errorMessage = null;
-
-                try
-                {
-                    _accessToken = await login.GetAccessToken().ConfigureAwait(false);
-                }
-                catch (LoginFailedException) { errorMessage = "Login failed - wrong username or password? - Restarting"; }
-                catch (PtcOfflineException) { errorMessage = "PTC login server is down - Restarting"; }
-                catch (JsonReaderException) { errorMessage = "Json Reader Exception - Server down? - Restarting"; }
-                catch (Exception ex) { errorMessage = ex.ToString() + "Exception - Please report - Restarting"; }
-
-                if (errorMessage != null)
-                    ColoredConsoleWrite(ConsoleColor.White, errorMessage);
-
-            } while (errorMessage != null);
-
-        }
-
-        public async Task<EncounterResponse> EncounterPokemon(ulong encounterId, string spawnPointGuid)
-        {
-            var customRequest = new Request.Types.EncounterRequest
-            {
-                EncounterId = encounterId,
-                SpawnpointId = spawnPointGuid,
-                PlayerLatDegrees = Utils.FloatAsUlong(_currentLat),
-                PlayerLngDegrees = Utils.FloatAsUlong(_currentLng)
-            };
-
-            var encounterResponse = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.ENCOUNTER,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, EncounterResponse>($"https://{_apiUrl}/rpc", encounterResponse);
-        }
-
-        public async Task<EvolvePokemonOut> EvolvePokemon(ulong pokemonId)
-        {
-            var customRequest = new EvolvePokemon
-            {
-                PokemonId = pokemonId
-            };
-
-            var releasePokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.EVOLVE_POKEMON,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, EvolvePokemonOut>($"https://{_apiUrl}/rpc",
-                        releasePokemonRequest);
-        }
-
-
-        public async Task<EvolvePokemonOut> PowerUp(ulong pokemonId)
-        {
-            var customRequest = new EvolvePokemon
-            {
-                PokemonId = pokemonId
-            };
-
-            var releasePokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.UPGRADE_POKEMON,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, EvolvePokemonOut>($"https://{_apiUrl}/rpc",
-                        releasePokemonRequest);
-        }
-
-        private async Task<MiscEnums.Item> GetBestBall(int? pokemonCP)
-        {
-            var inventory = await GetInventory();
-
-            var ballCollection = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Item)
-                .Where(p => p != null)
-                .GroupBy(i => (MiscEnums.Item)i.Item_)
-                .Select(kvp => new { ItemId = kvp.Key, Amount = kvp.Sum(x => x.Count) })
-                .Where(y => y.ItemId == MiscEnums.Item.ITEM_POKE_BALL
-                            || y.ItemId == MiscEnums.Item.ITEM_GREAT_BALL
-                            || y.ItemId == MiscEnums.Item.ITEM_ULTRA_BALL
-                            || y.ItemId == MiscEnums.Item.ITEM_MASTER_BALL);
-
-            var pokeBallsCount = ballCollection.Where(p => p.ItemId == MiscEnums.Item.ITEM_POKE_BALL).
-                DefaultIfEmpty(new { ItemId = MiscEnums.Item.ITEM_POKE_BALL, Amount = 0 }).FirstOrDefault().Amount;
-            var greatBallsCount = ballCollection.Where(p => p.ItemId == MiscEnums.Item.ITEM_GREAT_BALL).
-                DefaultIfEmpty(new { ItemId = MiscEnums.Item.ITEM_GREAT_BALL, Amount = 0 }).FirstOrDefault().Amount;
-            var ultraBallsCount = ballCollection.Where(p => p.ItemId == MiscEnums.Item.ITEM_ULTRA_BALL).
-                DefaultIfEmpty(new { ItemId = MiscEnums.Item.ITEM_ULTRA_BALL, Amount = 0 }).FirstOrDefault().Amount;
-            var masterBallsCount = ballCollection.Where(p => p.ItemId == MiscEnums.Item.ITEM_MASTER_BALL).
-                DefaultIfEmpty(new { ItemId = MiscEnums.Item.ITEM_MASTER_BALL, Amount = 0 }).FirstOrDefault().Amount;
-
-            // Use better balls for high CP pokemon
-            if (masterBallsCount > 0 && pokemonCP >= 1000)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Master Ball is being used");
-                return MiscEnums.Item.ITEM_MASTER_BALL;
-            }
-
-            if (ultraBallsCount > 0 && pokemonCP >= 600)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Ultra Ball is being used");
-                return MiscEnums.Item.ITEM_ULTRA_BALL;
-            }
-
-            if (greatBallsCount > 0 && pokemonCP >= 350)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Great Ball is being used");
-                return MiscEnums.Item.ITEM_GREAT_BALL;
-            }
-
-            // If low CP pokemon, but no more pokeballs; only use better balls if pokemon are of semi-worthy quality
-            if (pokeBallsCount > 0)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Poke Ball is being used");
-                return MiscEnums.Item.ITEM_POKE_BALL;
-            }
-            else if ((greatBallsCount < 40 && pokemonCP >= 200) || greatBallsCount >= 40)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Great Ball is being used");
-                return MiscEnums.Item.ITEM_GREAT_BALL;
-            }
-            else if (ultraBallsCount > 0 && pokemonCP >= 500)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Ultra Ball is being used");
-                return MiscEnums.Item.ITEM_ULTRA_BALL;
-            }
-            else if (masterBallsCount > 0 && pokemonCP >= 700)
-            {
-                ColoredConsoleWrite(ConsoleColor.Green, $"Master Ball is being used");
-                return MiscEnums.Item.ITEM_MASTER_BALL;
-            }
-
-            return MiscEnums.Item.ITEM_POKE_BALL;
-        }
-
-        public static void ColoredConsoleWrite(ConsoleColor color, string text)
-        {
-            ConsoleColor originalColor = System.Console.ForegroundColor;
-            System.Console.ForegroundColor = color;
-            System.Console.WriteLine(text);
-            System.Console.ForegroundColor = originalColor;
-            if (OnConsoleWrite != null)
-            {
-                OnConsoleWrite(color, text);
-            }
-        }
-
-        public async Task<FortDetailsResponse> GetFort(string fortId, double fortLat, double fortLng)
-        {
-            var customRequest = new Request.Types.FortDetailsRequest
-            {
-                Id = ByteString.CopyFromUtf8(fortId),
-                Latitude = Utils.FloatAsUlong(fortLat),
-                Longitude = Utils.FloatAsUlong(fortLng)
-            };
-
-            var fortDetailRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.FORT_DETAILS,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, FortDetailsResponse>($"https://{_apiUrl}/rpc",
-                        fortDetailRequest);
-        }
-
-        public async Task<GetInventoryResponse> GetInventory()
-        {
-            var inventoryRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                RequestType.GET_INVENTORY);
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, GetInventoryResponse>($"https://{_apiUrl}/rpc",
-                        inventoryRequest);
-        }
-
-        public async Task<GetMapObjectsResponse> GetMapObjects()
-        {
-            var customRequest = new Request.Types.MapObjectsRequest
-            {
-                CellIds =
-                    ByteString.CopyFrom(
-                        ProtoHelper.EncodeUlongList(S2Helper.GetNearbyCellIds(_currentLng,
-                            _currentLat))),
-                Latitude = Utils.FloatAsUlong(_currentLat),
-                Longitude = Utils.FloatAsUlong(_currentLng),
-                Unknown14 = ByteString.CopyFromUtf8("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
-            };
-
-            var mapRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.GET_MAP_OBJECTS,
-                    Message = customRequest.ToByteString()
-                },
-                new Request.Types.Requests { Type = (int)RequestType.GET_HATCHED_OBJECTS },
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.GET_INVENTORY,
-                    Message = new Request.Types.Time { Time_ = DateTime.UtcNow.ToUnixTime() }.ToByteString()
-                },
-                new Request.Types.Requests { Type = (int)RequestType.CHECK_AWARDED_BADGES },
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.DOWNLOAD_SETTINGS,
-                    Message =
-                        new Request.Types.SettingsGuid
-                        {
-                            Guid = ByteString.CopyFromUtf8("4a2e9bc330dae60e7b74fc85b98868ab4700802e")
-                        }.ToByteString()
-                });
-
-            return
-                await _httpClient.PostProtoPayload<Request, GetMapObjectsResponse>($"https://{_apiUrl}/rpc", mapRequest);
-        }
-
-        public async Task<GetPlayerResponse> GetProfile()
-        {
-            var profileRequest = RequestBuilder.GetInitialRequest(_accessToken, _settings.AuthType, _currentLat, _currentLng, 10,
-                new Request.Types.Requests { Type = (int)RequestType.GET_PLAYER });
-            return
-                await _httpClient.PostProtoPayload<Request, GetPlayerResponse>($"https://{_apiUrl}/rpc", profileRequest);
-        }
-
-        public async Task<DownloadSettingsResponse> GetSettings()
-        {
-            var settingsRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
-                RequestType.DOWNLOAD_SETTINGS);
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, DownloadSettingsResponse>($"https://{_apiUrl}/rpc",
-                        settingsRequest);
-        }
-
-        /*num Holoholo.Rpc.Types.FortSearchOutProto.Result {
-         NO_RESULT_SET = 0;
-         SUCCESS = 1;
-         OUT_OF_RANGE = 2;
-         IN_COOLDOWN_PERIOD = 3;
-         INVENTORY_FULL = 4;
-        }*/
-
-        public async Task<FortSearchResponse> SearchFort(string fortId, double fortLat, double fortLng)
-        {
-            var customRequest = new Request.Types.FortSearchRequest
-            {
-                Id = ByteString.CopyFromUtf8(fortId),
-                FortLatDegrees = Utils.FloatAsUlong(fortLat),
-                FortLngDegrees = Utils.FloatAsUlong(fortLng),
-                PlayerLatDegrees = Utils.FloatAsUlong(_currentLat),
-                PlayerLngDegrees = Utils.FloatAsUlong(_currentLng)
-            };
-
-            var fortDetailRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.FORT_SEARCH,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, FortSearchResponse>($"https://{_apiUrl}/rpc",
-                        fortDetailRequest);
-        }
-
-        private void SetCoordinates(double lat, double lng)
-        {
-            _currentLat = lat;
-            _currentLng = lng;
-            //            _settings.DefaultLatitude = lat;
-            //            _settings.DefaultLongitude = lng;
-        }
-
-        public async Task SetServer()
-        {
-            var serverRequest = RequestBuilder.GetInitialRequest(_accessToken, _settings.AuthType, _currentLat, _currentLng, 10,
-                RequestType.GET_PLAYER, RequestType.GET_HATCHED_OBJECTS, RequestType.GET_INVENTORY,
-                RequestType.CHECK_AWARDED_BADGES, RequestType.DOWNLOAD_SETTINGS);
-            var serverResponse = await _httpClient.PostProto(Resources.RpcUrl, serverRequest);
-            _unknownAuth = new Request.Types.UnknownAuth
-            {
-                Unknown71 = serverResponse.Auth.Unknown71,
-                Timestamp = serverResponse.Auth.Timestamp,
-                Unknown73 = serverResponse.Auth.Unknown73
-            };
-
-            _apiUrl = serverResponse.ApiUrl;
-        }
-
-        public async Task<TransferPokemonOut> TransferPokemon(ulong pokemonId)
-        {
-            var customRequest = new TransferPokemon
-            {
-                PokemonId = pokemonId
-            };
-
-            var releasePokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.RELEASE_POKEMON,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, TransferPokemonOut>($"https://{_apiUrl}/rpc",
-                        releasePokemonRequest);
-        }
-
-        public double CurrentLatitude
-        {
-            get
-            {
-                return this._currentLat;
-            }
-        }
-
-        public double CurrentLongitude
-        {
-            get
-            {
-                return this._currentLng;
-            }
-        }
-
-        public async Task<PlayerUpdateResponse> UpdatePlayerLocation(double lat, double lng)
-        {
-            SetCoordinates(lat, lng);
-            var latlng = _currentLat + ":" + _currentLng;
-            File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "coords.txt", latlng);
-
-            var customRequest = new Request.Types.PlayerUpdateProto
-            {
-                Lat = Utils.FloatAsUlong(_currentLat),
-                Lng = Utils.FloatAsUlong(_currentLng)
-            };
-
-            var updateRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.PLAYER_UPDATE,
-                    Message = customRequest.ToByteString()
-                });
-            var updateResponse =
-                await
-                    _httpClient.PostProtoPayload<Request, PlayerUpdateResponse>($"https://{_apiUrl}/rpc", updateRequest);
-            return updateResponse;
-        }
-
-
-
-
-        public async Task<IEnumerable<Item>> GetItemsToRecycle(ISettings settings, Client client)
-        {
-            var myItems = await GetItems(client);
-
-            return myItems
-                .Where(x => settings.ItemRecycleFilter.Any(f => f.Key == ((ItemId)x.Item_) && x.Count > f.Value))
-                .Select(x => new Item { Item_ = x.Item_, Count = x.Count - settings.ItemRecycleFilter.Single(f => f.Key == (AllEnum.ItemId)x.Item_).Value, Unseen = x.Unseen });
-        }
-
-        public async Task RecycleItems(Client client)
-        {
-            var items = await GetItemsToRecycle(_settings, client);
-
-            foreach (var item in items)
-            {
-                var transfer = await RecycleItem((AllEnum.ItemId)item.Item_, item.Count);
-                ColoredConsoleWrite(ConsoleColor.DarkCyan, $"Recycled {item.Count}x {((AllEnum.ItemId)item.Item_).ToString().Substring(4)}");
-                await Task.Delay(500);
-            }
-            await Task.Delay(_settings.RecycleItemsInterval * 1000);
-            RecycleItems(client);
-        }
-
-        public async Task<Response.Types.Unknown6> RecycleItem(AllEnum.ItemId itemId, int amount)
-        {
-            var customRequest = new InventoryItemData.RecycleInventoryItem
-            {
-                ItemId = (AllEnum.ItemId)Enum.Parse(typeof(AllEnum.ItemId), itemId.ToString()),
-                Count = amount
-            };
-
-            var releasePokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests()
-                {
-                    Type = (int)RequestType.RECYCLE_INVENTORY_ITEM,
-                    Message = customRequest.ToByteString()
-                });
-            return await _httpClient.PostProtoPayload<Request, Response.Types.Unknown6>($"https://{_apiUrl}/rpc", releasePokemonRequest);
-        }
-
-        public async Task<IEnumerable<Item>> GetItems(Client client)
-        {
-            var inventory = await client.GetInventory();
-            return inventory.InventoryDelta.InventoryItems
-                .Select(i => i.InventoryItemData?.Item)
-                .Where(p => p != null);
-        }
-
-        public async Task<UseItemCaptureRequest> UseCaptureItem(ulong encounterId, AllEnum.ItemId itemId, string spawnPointGuid)
-        {
-            var customRequest = new UseItemCaptureRequest
-            {
-                EncounterId = encounterId,
-                ItemId = itemId,
-                SpawnPointGuid = spawnPointGuid
-            };
-
-            var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests()
-                {
-                    Type = (int)RequestType.USE_ITEM_CAPTURE,
-                    Message = customRequest.ToByteString()
-                });
-            return await _httpClient.PostProtoPayload<Request, UseItemCaptureRequest>($"https://{_apiUrl}/rpc", useItemRequest);
-        }
-
-        public async Task UseRazzBerry(Client client, ulong encounterId, string spawnPointGuid)
-        {
-            IEnumerable<Item> myItems = await GetItems(client);
-            IEnumerable<Item> RazzBerries = myItems.Where(i => (ItemId)i.Item_ == ItemId.ItemRazzBerry);
-            Item RazzBerry = RazzBerries.FirstOrDefault();
-            if (RazzBerry != null)
-            {
-                UseItemCaptureRequest useRazzBerry = await client.UseCaptureItem(encounterId, AllEnum.ItemId.ItemRazzBerry, spawnPointGuid);
-                ColoredConsoleWrite(ConsoleColor.Green, $"Using a Razz Berry, we have {RazzBerry.Count} left");
-                await Task.Delay(2000);
-            }
-            else
-            {
-                ColoredConsoleWrite(ConsoleColor.Red, $"You don't have any Razz Berry to use.");
-            }
-        }
-
-        public async Task<UseItemRequest> UseItemXpBoost(ItemId itemId)
-        {
-            var customRequest = new UseItemRequest
-            {
-                ItemId = itemId,
-            };
-
-            var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
-                new Request.Types.Requests
-                {
-                    Type = (int)RequestType.USE_ITEM_XP_BOOST,
-                    Message = customRequest.ToByteString()
-                });
-            return
-                await
-                    _httpClient.PostProtoPayload<Request, UseItemRequest>($"https://{_apiUrl}/rpc",
-                        useItemRequest);
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Enums/AuthType.cs b/PokemonGo/RocketAPI/Enums/AuthType.cs
deleted file mode 100644
index 310163c..0000000
--- a/PokemonGo/RocketAPI/Enums/AuthType.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace PokemonGo.RocketAPI.Enums
-{
-    public enum AuthType
-    {
-        Google,
-        Ptc
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Enums/MiscEnums.cs b/PokemonGo/RocketAPI/Enums/MiscEnums.cs
deleted file mode 100644
index 69f1805..0000000
--- a/PokemonGo/RocketAPI/Enums/MiscEnums.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-namespace PokemonGo.RocketAPI.GeneratedCode
-{
-    public class MiscEnums
-    {
-        public enum FortType
-        {
-            GYM = 0,
-            CHECKPOINT = 1
-        }
-
-        public enum Item
-        {
-            ITEM_UNKNOWN = 0,
-            ITEM_POKE_BALL = 1,
-            ITEM_GREAT_BALL = 2,
-            ITEM_ULTRA_BALL = 3,
-            ITEM_MASTER_BALL = 4,
-            ITEM_POTION = 101,
-            ITEM_SUPER_POTION = 102,
-            ITEM_HYPER_POTION = 103,
-            ITEM_MAX_POTION = 104,
-            ITEM_REVIVE = 201,
-            ITEM_MAX_REVIVE = 202,
-            ITEM_LUCKY_EGG = 301,
-            ITEM_INCENSE_ORDINARY = 401,
-            ITEM_INCENSE_SPICY = 402,
-            ITEM_INCENSE_COOL = 403,
-            ITEM_INCENSE_FLORAL = 404,
-            ITEM_TROY_DISK = 501,
-            ITEM_X_ATTACK = 602,
-            ITEM_X_DEFENSE = 603,
-            ITEM_X_MIRACLE = 604,
-            ITEM_RAZZ_BERRY = 701,
-            ITEM_BLUK_BERRY = 702,
-            ITEM_NANAB_BERRY = 703,
-            ITEM_WEPAR_BERRY = 704,
-            ITEM_PINAP_BERRY = 705,
-            ITEM_SPECIAL_CAMERA = 801,
-            ITEM_INCUBATOR_BASIC_UNLIMITED = 901,
-            ITEM_INCUBATOR_BASIC = 902,
-            ITEM_POKEMON_STORAGE_UPGRADE = 1001,
-            ITEM_ITEM_STORAGE_UPGRADE = 1002
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Enums/RequestType.cs b/PokemonGo/RocketAPI/Enums/RequestType.cs
deleted file mode 100644
index 5d654a2..0000000
--- a/PokemonGo/RocketAPI/Enums/RequestType.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-namespace PokemonGo.RocketAPI.Enums
-{
-    public enum RequestType
-    {
-        METHOD_UNSET = 0,
-        PLAYER_UPDATE = 1,
-        GET_PLAYER = 2,
-        GET_INVENTORY = 4,
-        DOWNLOAD_SETTINGS = 5,
-        DOWNLOAD_ITEM_TEMPLATES = 6,
-        DOWNLOAD_REMOTE_CONFIG_VERSION = 7,
-        FORT_SEARCH = 101,
-        ENCOUNTER = 102,
-        CATCH_POKEMON = 103,
-        FORT_DETAILS = 104,
-        ITEM_USE = 105,
-        GET_MAP_OBJECTS = 106,
-        FORT_DEPLOY_POKEMON = 110,
-        FORT_RECALL_POKEMON = 111,
-        RELEASE_POKEMON = 112,
-        USE_ITEM_POTION = 113,
-        USE_ITEM_CAPTURE = 114,
-        USE_ITEM_FLEE = 115,
-        USE_ITEM_REVIVE = 116,
-        TRADE_SEARCH = 117,
-        TRADE_OFFER = 118,
-        TRADE_RESPONSE = 119,
-        TRADE_RESULT = 120,
-        GET_PLAYER_PROFILE = 121,
-        GET_ITEM_PACK = 122,
-        BUY_ITEM_PACK = 123,
-        BUY_GEM_PACK = 124,
-        EVOLVE_POKEMON = 125,
-        GET_HATCHED_OBJECTS = 126,
-        ENCOUNTER_TUTORIAL_COMPLETE = 127,
-        LEVEL_UP_REWARDS = 128,
-        CHECK_AWARDED_BADGES = 129,
-        USE_ITEM_GYM = 133,
-        GET_GYM_DETAILS = 134,
-        START_GYM_BATTLE = 135,
-        ATTACK_GYM = 136,
-        RECYCLE_INVENTORY_ITEM = 137,
-        COLLECT_DAILY_BONUS = 138,
-        USE_ITEM_XP_BOOST = 139,
-        USE_ITEM_EGG_INCUBATOR = 140,
-        USE_INCENSE = 141,
-        GET_INCENSE_POKEMON = 142,
-        INCENSE_ENCOUNTER = 143,
-        ADD_FORT_MODIFIER = 144,
-        DISK_ENCOUNTER = 145,
-        COLLECT_DAILY_DEFENDER_BONUS = 146,
-        UPGRADE_POKEMON = 147,
-        SET_FAVORITE_POKEMON = 148,
-        NICKNAME_POKEMON = 149,
-        EQUIP_BADGE = 150,
-        SET_CONTACT_SETTINGS = 151,
-        GET_ASSET_DIGEST = 300,
-        GET_DOWNLOAD_URLS = 301,
-        GET_SUGGESTED_CODENAMES = 401,
-        CHECK_CODENAME_AVAILABLE = 402,
-        CLAIM_CODENAME = 403,
-        SET_AVATAR = 404,
-        SET_PLAYER_TEAM = 405,
-        MARK_TUTORIAL_COMPLETE = 406,
-        LOAD_SPAWN_POINTS = 500,
-        ECHO = 666,
-        DEBUG_UPDATE_INVENTORY = 700,
-        DEBUG_DELETE_PLAYER = 701,
-        SFIDA_REGISTRATION = 800,
-        SFIDA_ACTION_LOG = 801,
-        SFIDA_CERTIFICATION = 802,
-        SFIDA_UPDATE = 803,
-        SFIDA_ACTION = 804,
-        SFIDA_DOWSER = 805,
-        SFIDA_CAPTURE = 806
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Exceptions/LoginFailedException.cs b/PokemonGo/RocketAPI/Exceptions/LoginFailedException.cs
deleted file mode 100644
index 37bd893..0000000
--- a/PokemonGo/RocketAPI/Exceptions/LoginFailedException.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System;
-
-namespace PokemonGo.RocketAPI.Exceptions
-{
-    public class LoginFailedException : Exception
-    {
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Exceptions/PTCOfflineException.cs b/PokemonGo/RocketAPI/Exceptions/PTCOfflineException.cs
deleted file mode 100644
index e3100bb..0000000
--- a/PokemonGo/RocketAPI/Exceptions/PTCOfflineException.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-#region
-
-using System;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Exceptions
-{
-    public class PtcOfflineException : Exception
-    {
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Extensions/DateTimeExtensions.cs b/PokemonGo/RocketAPI/Extensions/DateTimeExtensions.cs
deleted file mode 100644
index 5c5b111..0000000
--- a/PokemonGo/RocketAPI/Extensions/DateTimeExtensions.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-#region
-
-using System;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Extensions
-{
-    public static class DateTimeExtensions
-    {
-        public static long ToUnixTime(this DateTime date)
-        {
-            var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
-            return Convert.ToInt64((date - epoch).TotalMilliseconds);
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs b/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
deleted file mode 100644
index e543a7a..0000000
--- a/PokemonGo/RocketAPI/Extensions/HttpClientExtensions.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-#region
-
-using System.Net.Http;
-using System.Threading.Tasks;
-using Google.Protobuf;
-using PokemonGo.RocketAPI.GeneratedCode;
-using System;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Extensions
-{
-    public static class HttpClientExtensions
-    {
-        public static async Task<Response> PostProto<TRequest>(this HttpClient client, string url, TRequest request)
-            where TRequest : IMessage<TRequest>
-        {
-            //Encode payload and put in envelop, then send
-            var data = request.ToByteString();
-            var result = await client.PostAsync(url, new ByteArrayContent(data.ToByteArray()));
-
-            //Decode message
-            var responseData = await result.Content.ReadAsByteArrayAsync();
-            var codedStream = new CodedInputStream(responseData);
-            var decodedResponse = new Response();
-            decodedResponse.MergeFrom(codedStream);
-
-            return decodedResponse;
-        }
-
-        private static bool waitingForResponse = false;
-        public static async Task<TResponsePayload> PostProtoPayload<TRequest, TResponsePayload>(this HttpClient client,
-            string url, TRequest request) where TRequest : IMessage<TRequest>
-            where TResponsePayload : IMessage<TResponsePayload>, new()
-        {
-            ByteString payload = null;
-
-            while (waitingForResponse)
-                await Task.Delay(30);
-            waitingForResponse = true;
-
-            Response response = null;
-            int count = 0;
-            do
-            {
-                count++;
-                ColoredConsoleWrite(ConsoleColor.Red, "ArgumentOutOfRangeException - Restarting");
-                ColoredConsoleWrite(ConsoleColor.Red, ($"[DEBUG] [{DateTime.Now.ToString("HH:mm:ss")}] requesting {typeof(TResponsePayload).Name}"));
-                response = await PostProto(client, url, request);
-                waitingForResponse = false;
-
-
-
-                //Decode payload
-                //todo: multi-payload support
-
-                await Task.Delay(30);// request every 30ms, up this value for not spam their server
-            } while (response.Payload.Count < 1 && count < 30);
-            payload = response.Payload[0];
-
-            var parsedPayload = new TResponsePayload();
-            parsedPayload.MergeFrom(payload);
-
-            return parsedPayload;
-        }
-        public static void ColoredConsoleWrite(ConsoleColor color, string text)
-        {
-            ConsoleColor originalColor = System.Console.ForegroundColor;
-            System.Console.ForegroundColor = color;
-            System.Console.WriteLine(text);
-            System.Console.ForegroundColor = originalColor;
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Extensions/LatLongExtensions.cs b/PokemonGo/RocketAPI/Extensions/LatLongExtensions.cs
deleted file mode 100644
index 94c98cd..0000000
--- a/PokemonGo/RocketAPI/Extensions/LatLongExtensions.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PokemonGo.RocketAPI.Extensions
-{
-    public static class LatLongExtensions
-    {
-        public static double distanceFrom(this ILatLong c1, ILatLong c2)
-        {
-            double R = 6371e3;
-            Func<double, float> toRad = x => (float)(x * (Math.PI / 180));
-            float lat1 = toRad(c1.Latitude);
-            float lat2 = toRad(c2.Latitude);
-            float dLat = toRad(c2.Latitude - c1.Latitude);
-            float dLng = toRad(c2.Longitude - c1.Longitude);
-            double h = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Sin(dLng / 2) * Math.Sin(dLng / 2);
-            double c = 2 * Math.Atan2(Math.Sqrt(h), Math.Sqrt(1 - h));
-            return R * c;
-        }
-    }
-}
-
diff --git a/PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs b/PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs
deleted file mode 100644
index a313b7e..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/AllEnum.cs
+++ /dev/null
@@ -1,1159 +0,0 @@
-#pragma warning disable 1591, 0612, 3021
-
-#region Designer generated code
-
-#region
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-
-#endregion
-
-namespace AllEnum
-{
-    /// <summary>Holder for reflection information generated from AllEnum.proto</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class AllEnumReflection
-    {
-        #region Descriptor
-
-        /// <summary>File descriptor for AllEnum.proto</summary>
-        public static pbr::FileDescriptor Descriptor
-        {
-            get { return descriptor; }
-        }
-
-        private static pbr::FileDescriptor descriptor;
-
-        static AllEnumReflection()
-        {
-            var descriptorData = global::System.Convert.FromBase64String(
-                string.Concat(
-                    "Cg1BbGxFbnVtLnByb3RvEgdBbGxFbnVtKjYKDFJwY0RpcmVjdGlvbhILCgdV",
-                    "TktOT1dOEAASDAoIUkVTUE9OU0UQARILCgdSRVFVRVNUEAIqNwoJVGVhbUNv",
-                    "bG9yEgsKB05FVVRSQUwQABIICgRCTFVFEAESBwoDUkVEEAISCgoGWUVMTE9X",
-                    "EAMqwwwKDVJlcXVlc3RNZXRob2QSEAoMTUVUSE9EX1VOU0VUEAASEQoNUExB",
-                    "WUVSX1VQREFURRABEg4KCkdFVF9QTEFZRVIQAhIRCg1HRVRfSU5WRU5UT1JZ",
-                    "EAQSFQoRRE9XTkxPQURfU0VUVElOR1MQBRIbChdET1dOTE9BRF9JVEVNX1RF",
-                    "TVBMQVRFUxAGEiIKHkRPV05MT0FEX1JFTU9URV9DT05GSUdfVkVSU0lPThAH",
-                    "Eg8KC0ZPUlRfU0VBUkNIEGUSDQoJRU5DT1VOVEVSEGYSEQoNQ0FUQ0hfUE9L",
-                    "RU1PThBnEhAKDEZPUlRfREVUQUlMUxBoEgwKCElURU1fVVNFEGkSEwoPR0VU",
-                    "X01BUF9PQkpFQ1RTEGoSFwoTRk9SVF9ERVBMT1lfUE9LRU1PThBuEhcKE0ZP",
-                    "UlRfUkVDQUxMX1BPS0VNT04QbxITCg9SRUxFQVNFX1BPS0VNT04QcBITCg9V",
-                    "U0VfSVRFTV9QT1RJT04QcRIUChBVU0VfSVRFTV9DQVBUVVJFEHISEQoNVVNF",
-                    "X0lURU1fRkxFRRBzEhMKD1VTRV9JVEVNX1JFVklWRRB0EhAKDFRSQURFX1NF",
-                    "QVJDSBB1Eg8KC1RSQURFX09GRkVSEHYSEgoOVFJBREVfUkVTUE9OU0UQdxIQ",
-                    "CgxUUkFERV9SRVNVTFQQeBIWChJHRVRfUExBWUVSX1BST0ZJTEUQeRIRCg1H",
-                    "RVRfSVRFTV9QQUNLEHoSEQoNQlVZX0lURU1fUEFDSxB7EhAKDEJVWV9HRU1f",
-                    "UEFDSxB8EhIKDkVWT0xWRV9QT0tFTU9OEH0SFAoQR0VUX0hBVENIRURfRUdH",
-                    "UxB+Eh8KG0VOQ09VTlRFUl9UVVRPUklBTF9DT01QTEVURRB/EhUKEExFVkVM",
-                    "X1VQX1JFV0FSRFMQgAESGQoUQ0hFQ0tfQVdBUkRFRF9CQURHRVMQgQESEQoM",
-                    "VVNFX0lURU1fR1lNEIUBEhQKD0dFVF9HWU1fREVUQUlMUxCGARIVChBTVEFS",
-                    "VF9HWU1fQkFUVExFEIcBEg8KCkFUVEFDS19HWU0QiAESGwoWUkVDWUNMRV9J",
-                    "TlZFTlRPUllfSVRFTRCJARIYChNDT0xMRUNUX0RBSUxZX0JPTlVTEIoBEhYK",
-                    "EVVTRV9JVEVNX1hQX0JPT1NUEIsBEhsKFlVTRV9JVEVNX0VHR19JTkNVQkFU",
-                    "T1IQjAESEAoLVVNFX0lOQ0VOU0UQjQESGAoTR0VUX0lOQ0VOU0VfUE9LRU1P",
-                    "ThCOARIWChFJTkNFTlNFX0VOQ09VTlRFUhCPARIWChFBRERfRk9SVF9NT0RJ",
-                    "RklFUhCQARITCg5ESVNLX0VOQ09VTlRFUhCRARIhChxDT0xMRUNUX0RBSUxZ",
-                    "X0RFRkVOREVSX0JPTlVTEJIBEhQKD1VQR1JBREVfUE9LRU1PThCTARIZChRT",
-                    "RVRfRkFWT1JJVEVfUE9LRU1PThCUARIVChBOSUNLTkFNRV9QT0tFTU9OEJUB",
-                    "EhAKC0VRVUlQX0JBREdFEJYBEhkKFFNFVF9DT05UQUNUX1NFVFRJTkdTEJcB",
-                    "EhUKEEdFVF9BU1NFVF9ESUdFU1QQrAISFgoRR0VUX0RPV05MT0FEX1VSTFMQ",
-                    "rQISHAoXR0VUX1NVR0dFU1RFRF9DT0RFTkFNRVMQkQMSHQoYQ0hFQ0tfQ09E",
-                    "RU5BTUVfQVZBSUxBQkxFEJIDEhMKDkNMQUlNX0NPREVOQU1FEJMDEg8KClNF",
-                    "VF9BVkFUQVIQlAMSFAoPU0VUX1BMQVlFUl9URUFNEJUDEhsKFk1BUktfVFVU",
-                    "T1JJQUxfQ09NUExFVEUQlgMSFgoRTE9BRF9TUEFXTl9QT0lOVFMQ9AMSCQoE",
-                    "RUNITxCaBRIbChZERUJVR19VUERBVEVfSU5WRU5UT1JZELwFEhgKE0RFQlVH",
-                    "X0RFTEVURV9QTEFZRVIQvQUSFwoSU0ZJREFfUkVHSVNUUkFUSU9OEKAGEhUK",
-                    "EFNGSURBX0FDVElPTl9MT0cQoQYSGAoTU0ZJREFfQ0VSVElGSUNBVElPThCi",
-                    "BhIRCgxTRklEQV9VUERBVEUQowYSEQoMU0ZJREFfQUNUSU9OEKQGEhEKDFNG",
-                    "SURBX0RPV1NFUhClBhISCg1TRklEQV9DQVBUVVJFEKYGKs4XCgtQb2tlbW9u",
-                    "TW92ZRIOCgpNT1ZFX1VOU0VUEAASEQoNVEhVTkRFUl9TSE9DSxABEhAKDFFV",
-                    "SUNLX0FUVEFDSxACEgsKB1NDUkFUQ0gQAxIJCgVFTUJFUhAEEg0KCVZJTkVf",
-                    "V0hJUBAFEgoKBlRBQ0tMRRAGEg4KClJBWk9SX0xFQUYQBxINCglUQUtFX0RP",
-                    "V04QCBINCglXQVRFUl9HVU4QCRIICgRCSVRFEAoSCQoFUE9VTkQQCxIPCgtE",
-                    "T1VCTEVfU0xBUBAMEggKBFdSQVAQDRIOCgpIWVBFUl9CRUFNEA4SCAoETElD",
-                    "SxAPEg4KCkRBUktfUFVMU0UQEBIICgRTTU9HEBESCgoGU0xVREdFEBISDgoK",
-                    "TUVUQUxfQ0xBVxATEg0KCVZJQ0VfR1JJUBAUEg8KC0ZMQU1FX1dIRUVMEBUS",
-                    "DAoITUVHQUhPUk4QFhIPCgtXSU5HX0FUVEFDSxAXEhAKDEZMQU1FVEhST1dF",
-                    "UhAYEhAKDFNVQ0tFUl9QVU5DSBAZEgcKA0RJRxAaEgwKCExPV19LSUNLEBsS",
-                    "DgoKQ1JPU1NfQ0hPUBAcEg4KClBTWUNIT19DVVQQHRILCgdQU1lCRUFNEB4S",
-                    "DgoKRUFSVEhRVUFLRRAfEg4KClNUT05FX0VER0UQIBINCglJQ0VfUFVOQ0gQ",
-                    "IRIPCgtIRUFSVF9TVEFNUBAiEg0KCURJU0NIQVJHRRAjEhAKDEZMQVNIX0NB",
-                    "Tk5PThAkEggKBFBFQ0sQJRIOCgpEUklMTF9QRUNLECYSDAoISUNFX0JFQU0Q",
-                    "JxIMCghCTElaWkFSRBAoEg0KCUFJUl9TTEFTSBApEg0KCUhFQVRfV0FWRRAq",
-                    "Eg0KCVRXSU5FRURMRRArEg4KClBPSVNPTl9KQUIQLBIOCgpBRVJJQUxfQUNF",
-                    "EC0SDQoJRFJJTExfUlVOEC4SEgoOUEVUQUxfQkxJWlpBUkQQLxIOCgpNRUdB",
-                    "X0RSQUlOEDASDAoIQlVHX0JVWloQMRIPCgtQT0lTT05fRkFORxAyEg8KC05J",
-                    "R0hUX1NMQVNIEDMSCQoFU0xBU0gQNBIPCgtCVUJCTEVfQkVBTRA1Eg4KClNV",
-                    "Qk1JU1NJT04QNhIPCgtLQVJBVEVfQ0hPUBA3Eg0KCUxPV19TV0VFUBA4EgwK",
-                    "CEFRVUFfSkVUEDkSDQoJQVFVQV9UQUlMEDoSDQoJU0VFRF9CT01CEDsSDAoI",
-                    "UFNZU0hPQ0sQPBIOCgpST0NLX1RIUk9XED0SEQoNQU5DSUVOVF9QT1dFUhA+",
-                    "Eg0KCVJPQ0tfVE9NQhA/Eg4KClJPQ0tfU0xJREUQQBINCglQT1dFUl9HRU0Q",
-                    "QRIQCgxTSEFET1dfU05FQUsQQhIQCgxTSEFET1dfUFVOQ0gQQxIPCgtTSEFE",
-                    "T1dfQ0xBVxBEEhAKDE9NSU5PVVNfV0lORBBFEg8KC1NIQURPV19CQUxMEEYS",
-                    "EAoMQlVMTEVUX1BVTkNIEEcSDwoLTUFHTkVUX0JPTUIQSBIOCgpTVEVFTF9X",
-                    "SU5HEEkSDQoJSVJPTl9IRUFEEEoSFAoQUEFSQUJPTElDX0NIQVJHRRBLEgkK",
-                    "BVNQQVJLEEwSEQoNVEhVTkRFUl9QVU5DSBBNEgsKB1RIVU5ERVIQThIPCgtU",
-                    "SFVOREVSQk9MVBBPEgsKB1RXSVNURVIQUBIRCg1EUkFHT05fQlJFQVRIEFES",
-                    "EAoMRFJBR09OX1BVTFNFEFISDwoLRFJBR09OX0NMQVcQUxITCg9ESVNBUk1J",
-                    "TkdfVk9JQ0UQVBIRCg1EUkFJTklOR19LSVNTEFUSEgoOREFaWkxJTkdfR0xF",
-                    "QU0QVhINCglNT09OQkxBU1QQVxIOCgpQTEFZX1JPVUdIEFgSEAoMQ1JPU1Nf",
-                    "UE9JU09OEFkSDwoLU0xVREdFX0JPTUIQWhIPCgtTTFVER0VfV0FWRRBbEg0K",
-                    "CUdVTktfU0hPVBBcEgwKCE1VRF9TSE9UEF0SDQoJQk9ORV9DTFVCEF4SDAoI",
-                    "QlVMTERPWkUQXxIMCghNVURfQk9NQhBgEg8KC0ZVUllfQ1VUVEVSEGESDAoI",
-                    "QlVHX0JJVEUQYhIPCgtTSUdOQUxfQkVBTRBjEg0KCVhfU0NJU1NPUhBkEhAK",
-                    "DEZMQU1FX0NIQVJHRRBlEg8KC0ZMQU1FX0JVUlNUEGYSDgoKRklSRV9CTEFT",
-                    "VBBnEgkKBUJSSU5FEGgSDwoLV0FURVJfUFVMU0UQaRIJCgVTQ0FMRBBqEg4K",
-                    "CkhZRFJPX1BVTVAQaxILCgdQU1lDSElDEGwSDQoJUFNZU1RSSUtFEG0SDQoJ",
-                    "SUNFX1NIQVJEEG4SDAoISUNZX1dJTkQQbxIQCgxGUk9TVF9CUkVBVEgQcBIK",
-                    "CgZBQlNPUkIQcRIOCgpHSUdBX0RSQUlOEHISDgoKRklSRV9QVU5DSBBzEg4K",
-                    "ClNPTEFSX0JFQU0QdBIOCgpMRUFGX0JMQURFEHUSDgoKUE9XRVJfV0hJUBB2",
-                    "EgoKBlNQTEFTSBB3EggKBEFDSUQQeBIOCgpBSVJfQ1VUVEVSEHkSDQoJSFVS",
-                    "UklDQU5FEHoSDwoLQlJJQ0tfQlJFQUsQexIHCgNDVVQQfBIJCgVTV0lGVBB9",
-                    "Eg8KC0hPUk5fQVRUQUNLEH4SCQoFU1RPTVAQfxINCghIRUFEQlVUVBCAARIP",
-                    "CgpIWVBFUl9GQU5HEIEBEgkKBFNMQU0QggESDgoJQk9EWV9TTEFNEIMBEgkK",
-                    "BFJFU1QQhAESDQoIU1RSVUdHTEUQhQESFAoPU0NBTERfQkxBU1RPSVNFEIYB",
-                    "EhkKFEhZRFJPX1BVTVBfQkxBU1RPSVNFEIcBEg8KCldSQVBfR1JFRU4QiAES",
-                    "DgoJV1JBUF9QSU5LEIkBEhUKEEZVUllfQ1VUVEVSX0ZBU1QQyAESEgoNQlVH",
-                    "X0JJVEVfRkFTVBDJARIOCglCSVRFX0ZBU1QQygESFgoRU1VDS0VSX1BVTkNI",
-                    "X0ZBU1QQywESFwoSRFJBR09OX0JSRUFUSF9GQVNUEMwBEhcKElRIVU5ERVJf",
-                    "U0hPQ0tfRkFTVBDNARIPCgpTUEFSS19GQVNUEM4BEhIKDUxPV19LSUNLX0ZB",
-                    "U1QQzwESFQoQS0FSQVRFX0NIT1BfRkFTVBDQARIPCgpFTUJFUl9GQVNUENEB",
-                    "EhUKEFdJTkdfQVRUQUNLX0ZBU1QQ0gESDgoJUEVDS19GQVNUENMBEg4KCUxJ",
-                    "Q0tfRkFTVBDUARIVChBTSEFET1dfQ0xBV19GQVNUENUBEhMKDlZJTkVfV0hJ",
-                    "UF9GQVNUENYBEhQKD1JBWk9SX0xFQUZfRkFTVBDXARISCg1NVURfU0hPVF9G",
-                    "QVNUENgBEhMKDklDRV9TSEFSRF9GQVNUENkBEhYKEUZST1NUX0JSRUFUSF9G",
-                    "QVNUENoBEhYKEVFVSUNLX0FUVEFDS19GQVNUENsBEhEKDFNDUkFUQ0hfRkFT",
-                    "VBDcARIQCgtUQUNLTEVfRkFTVBDdARIPCgpQT1VORF9GQVNUEN4BEg0KCENV",
-                    "VF9GQVNUEN8BEhQKD1BPSVNPTl9KQUJfRkFTVBDgARIOCglBQ0lEX0ZBU1QQ",
-                    "4QESFAoPUFNZQ0hPX0NVVF9GQVNUEOIBEhQKD1JPQ0tfVEhST1dfRkFTVBDj",
-                    "ARIUCg9NRVRBTF9DTEFXX0ZBU1QQ5AESFgoRQlVMTEVUX1BVTkNIX0ZBU1QQ",
-                    "5QESEwoOV0FURVJfR1VOX0ZBU1QQ5gESEAoLU1BMQVNIX0ZBU1QQ5wESHQoY",
-                    "V0FURVJfR1VOX0ZBU1RfQkxBU1RPSVNFEOgBEhIKDU1VRF9TTEFQX0ZBU1QQ",
-                    "6QESFgoRWkVOX0hFQURCVVRUX0ZBU1QQ6gESEwoOQ09ORlVTSU9OX0ZBU1QQ",
-                    "6wESFgoRUE9JU09OX1NUSU5HX0ZBU1QQ7AESEAoLQlVCQkxFX0ZBU1QQ7QES",
-                    "FgoRRkVJTlRfQVRUQUNLX0ZBU1QQ7gESFAoPU1RFRUxfV0lOR19GQVNUEO8B",
-                    "EhMKDkZJUkVfRkFOR19GQVNUEPABEhQKD1JPQ0tfU01BU0hfRkFTVBDxASrH",
-                    "BQoGSXRlbUlkEhAKDElURU1fVU5LTk9XThAAEhIKDklURU1fUE9LRV9CQUxM",
-                    "EAESEwoPSVRFTV9HUkVBVF9CQUxMEAISEwoPSVRFTV9VTFRSQV9CQUxMEAMS",
-                    "FAoQSVRFTV9NQVNURVJfQkFMTBAEEg8KC0lURU1fUE9USU9OEGUSFQoRSVRF",
-                    "TV9TVVBFUl9QT1RJT04QZhIVChFJVEVNX0hZUEVSX1BPVElPThBnEhMKD0lU",
-                    "RU1fTUFYX1BPVElPThBoEhAKC0lURU1fUkVWSVZFEMkBEhQKD0lURU1fTUFY",
-                    "X1JFVklWRRDKARITCg5JVEVNX0xVQ0tZX0VHRxCtAhIaChVJVEVNX0lOQ0VO",
-                    "U0VfT1JESU5BUlkQkQMSFwoSSVRFTV9JTkNFTlNFX1NQSUNZEJIDEhYKEUlU",
-                    "RU1fSU5DRU5TRV9DT09MEJMDEhgKE0lURU1fSU5DRU5TRV9GTE9SQUwQlAMS",
-                    "EwoOSVRFTV9UUk9ZX0RJU0sQ9QMSEgoNSVRFTV9YX0FUVEFDSxDaBBITCg5J",
-                    "VEVNX1hfREVGRU5TRRDbBBITCg5JVEVNX1hfTUlSQUNMRRDcBBIUCg9JVEVN",
-                    "X1JBWlpfQkVSUlkQvQUSFAoPSVRFTV9CTFVLX0JFUlJZEL4FEhUKEElURU1f",
-                    "TkFOQUJfQkVSUlkQvwUSFQoQSVRFTV9XRVBBUl9CRVJSWRDABRIVChBJVEVN",
-                    "X1BJTkFQX0JFUlJZEMEFEhgKE0lURU1fU1BFQ0lBTF9DQU1FUkEQoQYSIwoe",
-                    "SVRFTV9JTkNVQkFUT1JfQkFTSUNfVU5MSU1JVEVEEIUHEhkKFElURU1fSU5D",
-                    "VUJBVE9SX0JBU0lDEIYHEiEKHElURU1fUE9LRU1PTl9TVE9SQUdFX1VQR1JB",
-                    "REUQ6QcSHgoZSVRFTV9JVEVNX1NUT1JBR0VfVVBHUkFERRDqBypiChRJbnZl",
-                    "bnRvcnlVcGdyYWRlVHlwZRIRCg1VUEdSQURFX1VOU0VUEAASGQoVSU5DUkVB",
-                    "U0VfSVRFTV9TVE9SQUdFEAESHAoYSU5DUkVBU0VfUE9LRU1PTl9TVE9SQUdF",
-                    "EAIqPwoQRWdnSW5jdWJhdG9yVHlwZRITCg9JTkNVQkFUT1JfVU5TRVQQABIW",
-                    "ChJJTkNVQkFUT1JfRElTVEFOQ0UQASrdDAoPUG9rZW1vbkZhbWlseUlkEhAK",
-                    "DEZBTUlMWV9VTlNFVBAAEhQKEEZBTUlMWV9CVUxCQVNBVVIQARIVChFGQU1J",
-                    "TFlfQ0hBUk1BTkRFUhAEEhMKD0ZBTUlMWV9TUVVJUlRMRRAHEhMKD0ZBTUlM",
-                    "WV9DQVRFUlBJRRAKEhEKDUZBTUlMWV9XRUVETEUQDRIRCg1GQU1JTFlfUElE",
-                    "R0VZEBASEgoORkFNSUxZX1JBVFRBVEEQExISCg5GQU1JTFlfU1BFQVJPVxAV",
-                    "EhAKDEZBTUlMWV9FS0FOUxAXEhIKDkZBTUlMWV9QSUtBQ0hVEBkSFAoQRkFN",
-                    "SUxZX1NBTkRTSFJFVxAbEhIKDkZBTUlMWV9OSURPUkFOEB0SEwoPRkFNSUxZ",
-                    "X05JRE9SQU4yECASEwoPRkFNSUxZX0NMRUZBSVJZECMSEQoNRkFNSUxZX1ZV",
-                    "TFBJWBAlEhUKEUZBTUlMWV9KSUdHTFlQVUZGECcSEAoMRkFNSUxZX1pVQkFU",
-                    "ECkSEQoNRkFNSUxZX09ERElTSBArEhAKDEZBTUlMWV9QQVJBUxAuEhIKDkZB",
-                    "TUlMWV9WRU5PTkFUEDASEgoORkFNSUxZX0RJR0xFVFQQMhIRCg1GQU1JTFlf",
-                    "TUVPV1RIEDQSEgoORkFNSUxZX1BTWURVQ0sQNhIRCg1GQU1JTFlfTUFOS0VZ",
-                    "EDgSFAoQRkFNSUxZX0dST1dMSVRIRRA6EhIKDkZBTUlMWV9QT0xJV0FHEDwS",
-                    "DwoLRkFNSUxZX0FCUkEQPxIRCg1GQU1JTFlfTUFDSE9QEEISFQoRRkFNSUxZ",
-                    "X0JFTExTUFJPVVQQRRIUChBGQU1JTFlfVEVOVEFDT09MEEgSEgoORkFNSUxZ",
-                    "X0dFT0RVREUQShIRCg1GQU1JTFlfUE9OWVRBEE0SEwoPRkFNSUxZX1NMT1dQ",
-                    "T0tFEE8SFAoQRkFNSUxZX01BR05FTUlURRBREhQKEEZBTUlMWV9GQVJGRVRD",
-                    "SEQQUxIQCgxGQU1JTFlfRE9EVU8QVBIPCgtGQU1JTFlfU0VFTBBWEhEKDUZB",
-                    "TUlMWV9HUklNRVIQWBITCg9GQU1JTFlfU0hFTExERVIQWhIRCg1GQU1JTFlf",
-                    "R0FTVExZEFwSDwoLRkFNSUxZX09OSVgQXxISCg5GQU1JTFlfRFJPV1pFRRBg",
-                    "EhEKDUZBTUlMWV9LUkFCQlkQYhISCg5GQU1JTFlfVk9MVE9SQhBkEhQKEEZB",
-                    "TUlMWV9FWEVHR0NVVEUQZhIRCg1GQU1JTFlfQ1VCT05FEGgSFAoQRkFNSUxZ",
-                    "X0hJVE1PTkxFRRBqEhUKEUZBTUlMWV9ISVRNT05DSEFOEGsSFAoQRkFNSUxZ",
-                    "X0xJQ0tJVFVORxBsEhIKDkZBTUlMWV9LT0ZGSU5HEG0SEgoORkFNSUxZX1JI",
-                    "WUhPUk4QbxISCg5GQU1JTFlfQ0hBTlNFWRBxEhIKDkZBTUlMWV9UQU5HRUxB",
-                    "EHISFQoRRkFNSUxZX0tBTkdBU0tIQU4QcxIRCg1GQU1JTFlfSE9SU0VBEHQS",
-                    "EgoORkFNSUxZX0dPTERFRU4QdhIRCg1GQU1JTFlfU1RBUllVEHgSEgoORkFN",
-                    "SUxZX01SX01JTUUQehISCg5GQU1JTFlfU0NZVEhFUhB7Eg8KC0ZBTUlMWV9K",
-                    "WU5YEHwSFQoRRkFNSUxZX0VMRUNUQUJVWloQfRIRCg1GQU1JTFlfTUFHTUFS",
-                    "EH4SEQoNRkFNSUxZX1BJTlNJUhB/EhIKDUZBTUlMWV9UQVVST1MQgAESFAoP",
-                    "RkFNSUxZX01BR0lLQVJQEIEBEhIKDUZBTUlMWV9MQVBSQVMQgwESEQoMRkFN",
-                    "SUxZX0RJVFRPEIQBEhEKDEZBTUlMWV9FRVZFRRCFARITCg5GQU1JTFlfUE9S",
-                    "WUdPThCJARITCg5GQU1JTFlfT01BTllURRCKARISCg1GQU1JTFlfS0FCVVRP",
-                    "EIwBEhYKEUZBTUlMWV9BRVJPREFDVFlMEI4BEhMKDkZBTUlMWV9TTk9STEFY",
-                    "EI8BEhQKD0ZBTUlMWV9BUlRJQ1VOTxCQARISCg1GQU1JTFlfWkFQRE9TEJEB",
-                    "EhMKDkZBTUlMWV9NT0xUUkVTEJIBEhMKDkZBTUlMWV9EUkFUSU5JEJMBEhIK",
-                    "DUZBTUlMWV9NRVdUV08QlgESDwoKRkFNSUxZX01FVxCXASpFChBNYXBPYmpl",
-                    "Y3RzU3RhdHVzEhAKDFVOU0VUX1NUQVRVUxAAEgsKB1NVQ0NFU1MQARISCg5M",
-                    "T0NBVElPTl9VTlNFVBACKiMKCEZvcnRUeXBlEgcKA0dZTRAAEg4KCkNIRUNL",
-                    "UE9JTlQQASqTEAoJUG9rZW1vbklkEg0KCU1JU1NJTkdOTxAAEg0KCUJVTEJB",
-                    "U0FVUhABEgsKB0lWWVNBVVIQAhIMCghWRU5VU0FVUhADEg4KCkNIQVJNRU5E",
-                    "RVIQBBIOCgpDSEFSTUVMRU9OEAUSDQoJQ0hBUklaQVJEEAYSDAoIU1FVSVJU",
-                    "TEUQBxINCglXQVJUT1JUTEUQCBINCglCTEFTVE9JU0UQCRIMCghDQVRFUlBJ",
-                    "RRAKEgsKB01FVEFQT0QQCxIOCgpCVVRURVJGUkVFEAwSCgoGV0VFRExFEA0S",
-                    "CgoGS0FLVU5BEA4SDAoIQkVFRFJJTEwQDxIKCgZQSURHRVkQEBINCglQSURH",
-                    "RU9UVE8QERILCgdQSURHRU9UEBISCwoHUkFUVEFUQRATEgwKCFJBVElDQVRF",
-                    "EBQSCwoHU1BFQVJPVxAVEgoKBkZFQVJPVxAWEgkKBUVLQU5TEBcSCQoFQVJC",
-                    "T0sQGBILCgdQSUtBQ0hVEBkSCgoGUkFJQ0hVEBoSDQoJU0FORFNIUkVXEBsS",
-                    "DAoIU0FORExBU0gQHBISCg5OSURPUkFOX0ZFTUFMRRAdEgwKCE5JRE9SSU5B",
-                    "EB4SDQoJTklET1FVRUVOEB8SEAoMTklET1JBTl9NQUxFECASDAoITklET1JJ",
-                    "Tk8QIRIMCghOSURPS0lORxAiEgsKB0NMRUZBUlkQIxIMCghDTEVGQUJMRRAk",
-                    "EgoKBlZVTFBJWBAlEg0KCU5JTkVUQUxFUxAmEg4KCkpJR0dMWVBVRkYQJxIO",
-                    "CgpXSUdHTFlUVUZGECgSCQoFWlVCQVQQKRIKCgZHT0xCQVQQKhIKCgZPRERJ",
-                    "U0gQKxIJCgVHTE9PTRAsEg0KCVZJTEVQTFVNRRAtEgkKBVBBUkFTEC4SDAoI",
-                    "UEFSQVNFQ1QQLxILCgdWRU5PTkFUEDASDAoIVkVOT01PVEgQMRILCgdESUdM",
-                    "RVRUEDISCwoHRFVHVFJJTxAzEgoKBk1FT1dUSBA0EgsKB1BFUlNJQU4QNRIL",
-                    "CgdQU1lEVUNLEDYSCwoHR09MRFVDSxA3EgoKBk1BTktFWRA4EgwKCFBSSU1F",
-                    "QVBFEDkSDQoJR1JPV0xJVEhFEDoSDAoIQVJDQU5JTkUQOxILCgdQT0xJV0FH",
-                    "EDwSDQoJUE9MSVdISVJMED0SDQoJUE9MSVdSQVRIED4SCAoEQUJSQRA/EgsK",
-                    "B0tBREFCUkEQQBINCglBTEFLSEFaQU0QQRIKCgZNQUNIT1AQQhILCgdNQUNI",
-                    "T0tFEEMSCwoHTUFDSEFNUBBEEg4KCkJFTExTUFJPVVQQRRIOCgpXRUVQSU5C",
-                    "RUxMEEYSDwoLVklDVFJFRUJFTEwQRxINCglURU5UQUNPT0wQSBIOCgpURU5U",
-                    "QUNSVUVMEEkSCwoHR0VPRFVHRRBKEgwKCEdSQVZFTEVSEEsSCQoFR09MRU0Q",
-                    "TBIKCgZQT05ZVEEQTRIMCghSQVBJREFTSBBOEgwKCFNMT1dQT0tFEE8SCwoH",
-                    "U0xPV0JSTxBQEg0KCU1BR05FTUlURRBREgwKCE1BR05FVE9OEFISDQoJRkFS",
-                    "RkVUQ0hEEFMSCQoFRE9EVU8QVBIKCgZET0RSSU8QVRIICgRTRUVMEFYSCwoH",
-                    "REVXR09ORxBXEgoKBkdSSU1FUhBYEgcKA01VSxBZEgwKCFNIRUxMREVSEFoS",
-                    "DAoIQ0xPWVNURVIQWxIKCgZHQVNUTFkQXBILCgdIQVVOVEVSEF0SCgoGR0VO",
-                    "R0FSEF4SCAoET05JWBBfEgsKB0RST1daRUUQYBIJCgVIWVBOTxBhEgoKBktS",
-                    "QUJCWRBiEgsKB0tJTkdMRVIQYxILCgdWT0xUT1JCEGQSDQoJRUxFQ1RST0RF",
-                    "EGUSDQoJRVhFR0dDVVRFEGYSDQoJRVhFR0dVVE9SEGcSCgoGQ1VCT05FEGgS",
-                    "CwoHTUFST1dBSxBpEg0KCUhJVE1PTkxFRRBqEg4KCkhJVE1PTkNIQU4QaxIN",
-                    "CglMSUNLSVRVTkcQbBILCgdLT0ZGSU5HEG0SCwoHV0VFWklORxBuEgsKB1JI",
-                    "WUhPUk4QbxIKCgZSSFlET04QcBILCgdDSEFOU0VZEHESCwoHVEFOR0VMQRBy",
-                    "Eg4KCktBTkdBU0tIQU4QcxIKCgZIT1JTRUEQdBIKCgZTRUFEUkEQdRILCgdH",
-                    "T0xERUVOEHYSCwoHU0VBS0lORxB3EgoKBlNUQVJZVRB4EgsKB1NUQVJNSUUQ",
-                    "eRILCgdNUl9NSU1FEHoSCwoHU0NZVEhFUhB7EggKBEpZTlgQfBIOCgpFTEVD",
-                    "VEFCVVpaEH0SCgoGTUFHTUFSEH4SCgoGUElOU0lSEH8SCwoGVEFVUk9TEIAB",
-                    "Eg0KCE1BR0lLQVJQEIEBEg0KCEdZQVJBRE9TEIIBEgsKBkxBUFJBUxCDARIK",
-                    "CgVESVRUTxCEARIKCgVFRVZFRRCFARINCghWQVBPUkVPThCGARIMCgdKT0xU",
-                    "RU9OEIcBEgwKB0ZMQVJFT04QiAESDAoHUE9SWUdPThCJARIMCgdPTUFOWVRF",
-                    "EIoBEgwKB09NQVNUQVIQiwESCwoGS0FCVVRPEIwBEg0KCEtBQlVUT1BTEI0B",
-                    "Eg8KCkFFUk9EQUNUWUwQjgESDAoHU05PUkxBWBCPARINCghBUlRJQ1VOTxCQ",
-                    "ARILCgZaQVBET1MQkQESDAoHTU9MVFJFUxCSARIMCgdEUkFUSU5JEJMBEg4K",
-                    "CURSQUdPTkFJUhCUARIOCglEUkFHT05JVEUQlQESCwoGTUVXVFdPEJYBEggK",
-                    "A01FVxCXASpCCgtGb3J0U3BvbnNvchIRCg1VTlNFVF9TUE9OU09SEAASDQoJ",
-                    "TUNET05BTERTEAESEQoNUE9LRU1PTl9TVE9SRRACKjMKEUZvcnRSZW5kZXJp",
-                    "bmdUeXBlEgsKB0RFRkFVTFQQABIRCg1JTlRFUk5BTF9URVNUEAEqsgIKCEl0",
-                    "ZW1UeXBlEhIKDklURU1fVFlQRV9OT05FEAASFgoSSVRFTV9UWVBFX1BPS0VC",
-                    "QUxMEAESFAoQSVRFTV9UWVBFX1BPVElPThACEhQKEElURU1fVFlQRV9SRVZJ",
-                    "VkUQAxIRCg1JVEVNX1RZUEVfTUFQEAQSFAoQSVRFTV9UWVBFX0JBVFRMRRAF",
-                    "EhIKDklURU1fVFlQRV9GT09EEAYSFAoQSVRFTV9UWVBFX0NBTUVSQRAHEhIK",
-                    "DklURU1fVFlQRV9ESVNLEAgSFwoTSVRFTV9UWVBFX0lOQ1VCQVRPUhAJEhUK",
-                    "EUlURU1fVFlQRV9JTkNFTlNFEAoSFgoSSVRFTV9UWVBFX1hQX0JPT1NUEAsS",
-                    "HwobSVRFTV9UWVBFX0lOVkVOVE9SWV9VUEdSQURFEAwq1gIKDEl0ZW1DYXRl",
-                    "Z29yeRIWChJJVEVNX0NBVEVHT1JZX05PTkUQABIaChZJVEVNX0NBVEVHT1JZ",
-                    "X1BPS0VCQUxMEAESFgoSSVRFTV9DQVRFR09SWV9GT09EEAISGgoWSVRFTV9D",
-                    "QVRFR09SWV9NRURJQ0lORRADEhcKE0lURU1fQ0FURUdPUllfQk9PU1QQBBIa",
-                    "ChZJVEVNX0NBVEVHT1JZX1VUSUxJVEVTEAUSGAoUSVRFTV9DQVRFR09SWV9D",
-                    "QU1FUkEQBhIWChJJVEVNX0NBVEVHT1JZX0RJU0sQBxIbChdJVEVNX0NBVEVH",
-                    "T1JZX0lOQ1VCQVRPUhAIEhkKFUlURU1fQ0FURUdPUllfSU5DRU5TRRAJEhoK",
-                    "FklURU1fQ0FURUdPUllfWFBfQk9PU1QQChIjCh9JVEVNX0NBVEVHT1JZX0lO",
-                    "VkVOVE9SWV9VUEdSQURFEAsqmAQKCkl0ZW1FZmZlY3QSFAoQSVRFTV9FRkZF",
-                    "Q1RfTk9ORRAAEhwKF0lURU1fRUZGRUNUX0NBUF9OT19GTEVFEOgHEiAKG0lU",
-                    "RU1fRUZGRUNUX0NBUF9OT19NT1ZFTUVOVBDqBxIeChlJVEVNX0VGRkVDVF9D",
-                    "QVBfTk9fVEhSRUFUEOsHEh8KGklURU1fRUZGRUNUX0NBUF9UQVJHRVRfTUFY",
-                    "EOwHEiAKG0lURU1fRUZGRUNUX0NBUF9UQVJHRVRfU0xPVxDtBxIhChxJVEVN",
-                    "X0VGRkVDVF9DQVBfQ0hBTkNFX05JR0hUEO4HEiMKHklURU1fRUZGRUNUX0NB",
-                    "UF9DSEFOQ0VfVFJBSU5FUhDvBxInCiJJVEVNX0VGRkVDVF9DQVBfQ0hBTkNF",
-                    "X0ZJUlNUX1RIUk9XEPAHEiIKHUlURU1fRUZGRUNUX0NBUF9DSEFOQ0VfTEVH",
-                    "RU5EEPEHEiEKHElURU1fRUZGRUNUX0NBUF9DSEFOQ0VfSEVBVlkQ8gcSIgod",
-                    "SVRFTV9FRkZFQ1RfQ0FQX0NIQU5DRV9SRVBFQVQQ8wcSJwoiSVRFTV9FRkZF",
-                    "Q1RfQ0FQX0NIQU5DRV9NVUxUSV9USFJPVxD0BxIiCh1JVEVNX0VGRkVDVF9D",
-                    "QVBfQ0hBTkNFX0FMV0FZUxD1BxIoCiNJVEVNX0VGRkVDVF9DQVBfQ0hBTkNF",
-                    "X1NJTkdMRV9USFJPVxD2ByrsBQoMQWN0aXZpdHlUeXBlEhQKEEFDVElWSVRZ",
-                    "X1VOS05PV04QABIaChZBQ1RJVklUWV9DQVRDSF9QT0tFTU9OEAESIQodQUNU",
-                    "SVZJVFlfQ0FUQ0hfTEVHRU5EX1BPS0VNT04QAhIZChVBQ1RJVklUWV9GTEVF",
-                    "X1BPS0VNT04QAxIYChRBQ1RJVklUWV9ERUZFQVRfRk9SVBAEEhsKF0FDVElW",
-                    "SVRZX0VWT0xWRV9QT0tFTU9OEAUSFgoSQUNUSVZJVFlfSEFUQ0hfRUdHEAYS",
-                    "FAoQQUNUSVZJVFlfV0FMS19LTRAHEh4KGkFDVElWSVRZX1BPS0VERVhfRU5U",
-                    "UllfTkVXEAgSHgoaQUNUSVZJVFlfQ0FUQ0hfRklSU1RfVEhST1cQCRIdChlB",
-                    "Q1RJVklUWV9DQVRDSF9OSUNFX1RIUk9XEAoSHgoaQUNUSVZJVFlfQ0FUQ0hf",
-                    "R1JFQVRfVEhST1cQCxIiCh5BQ1RJVklUWV9DQVRDSF9FWENFTExFTlRfVEhS",
-                    "T1cQDBIcChhBQ1RJVklUWV9DQVRDSF9DVVJWRUJBTEwQDRIlCiFBQ1RJVklU",
-                    "WV9DQVRDSF9GSVJTVF9DQVRDSF9PRl9EQVkQDhIcChhBQ1RJVklUWV9DQVRD",
-                    "SF9NSUxFU1RPTkUQDxIaChZBQ1RJVklUWV9UUkFJTl9QT0tFTU9OEBASGAoU",
-                    "QUNUSVZJVFlfU0VBUkNIX0ZPUlQQERIcChhBQ1RJVklUWV9SRUxFQVNFX1BP",
-                    "S0VNT04QEhIiCh5BQ1RJVklUWV9IQVRDSF9FR0dfU01BTExfQk9OVVMQExIj",
-                    "Ch9BQ1RJVklUWV9IQVRDSF9FR0dfTUVESVVNX0JPTlVTEBQSIgoeQUNUSVZJ",
-                    "VFlfSEFUQ0hfRUdHX0xBUkdFX0JPTlVTEBUSIAocQUNUSVZJVFlfREVGRUFU",
-                    "X0dZTV9ERUZFTkRFUhAWEh4KGkFDVElWSVRZX0RFRkVBVF9HWU1fTEVBREVS",
-                    "EBcqoQcKCUJhZGdlVHlwZRIPCgtCQURHRV9VTlNFVBAAEhMKD0JBREdFX1RS",
-                    "QVZFTF9LTRABEhkKFUJBREdFX1BPS0VERVhfRU5UUklFUxACEhcKE0JBREdF",
-                    "X0NBUFRVUkVfVE9UQUwQAxIXChNCQURHRV9ERUZFQVRFRF9GT1JUEAQSFwoT",
-                    "QkFER0VfRVZPTFZFRF9UT1RBTBAFEhcKE0JBREdFX0hBVENIRURfVE9UQUwQ",
-                    "BhIbChdCQURHRV9FTkNPVU5URVJFRF9UT1RBTBAHEhsKF0JBREdFX1BPS0VT",
-                    "VE9QU19WSVNJVEVEEAgSGgoWQkFER0VfVU5JUVVFX1BPS0VTVE9QUxAJEhkK",
-                    "FUJBREdFX1BPS0VCQUxMX1RIUk9XThAKEhYKEkJBREdFX0JJR19NQUdJS0FS",
-                    "UBALEhgKFEJBREdFX0RFUExPWUVEX1RPVEFMEAwSGwoXQkFER0VfQkFUVExF",
-                    "X0FUVEFDS19XT04QDRIdChlCQURHRV9CQVRUTEVfVFJBSU5JTkdfV09OEA4S",
-                    "GwoXQkFER0VfQkFUVExFX0RFRkVORF9XT04QDxIZChVCQURHRV9QUkVTVElH",
-                    "RV9SQUlTRUQQEBIaChZCQURHRV9QUkVTVElHRV9EUk9QUEVEEBESFQoRQkFE",
-                    "R0VfVFlQRV9OT1JNQUwQEhIXChNCQURHRV9UWVBFX0ZJR0hUSU5HEBMSFQoR",
-                    "QkFER0VfVFlQRV9GTFlJTkcQFBIVChFCQURHRV9UWVBFX1BPSVNPThAVEhUK",
-                    "EUJBREdFX1RZUEVfR1JPVU5EEBYSEwoPQkFER0VfVFlQRV9ST0NLEBcSEgoO",
-                    "QkFER0VfVFlQRV9CVUcQGBIUChBCQURHRV9UWVBFX0dIT1NUEBkSFAoQQkFE",
-                    "R0VfVFlQRV9TVEVFTBAaEhMKD0JBREdFX1RZUEVfRklSRRAbEhQKEEJBREdF",
-                    "X1RZUEVfV0FURVIQHBIUChBCQURHRV9UWVBFX0dSQVNTEB0SFwoTQkFER0Vf",
-                    "VFlQRV9FTEVDVFJJQxAeEhYKEkJBREdFX1RZUEVfUFNZQ0hJQxAfEhIKDkJB",
-                    "REdFX1RZUEVfSUNFECASFQoRQkFER0VfVFlQRV9EUkFHT04QIRITCg9CQURH",
-                    "RV9UWVBFX0RBUksQIhIUChBCQURHRV9UWVBFX0ZBSVJZECMSFwoTQkFER0Vf",
-                    "U01BTExfUkFUVEFUQRAkEhEKDUJBREdFX1BJS0FDSFUQJSqUAQoTSG9sb0lh",
-                    "cEl0ZW1DYXRlZ29yeRIVChFJQVBfQ0FURUdPUllfTk9ORRAAEhcKE0lBUF9D",
-                    "QVRFR09SWV9CVU5ETEUQARIWChJJQVBfQ0FURUdPUllfSVRFTVMQAhIZChVJ",
-                    "QVBfQ0FURUdPUllfVVBHUkFERVMQAxIaChZJQVBfQ0FURUdPUllfUE9LRUNP",
-                    "SU5TEAQqlgEKE0NhbWVyYUludGVycG9sYXRpb24SEgoOQ0FNX0lOVEVSUF9D",
-                    "VVQQABIVChFDQU1fSU5URVJQX0xJTkVBUhABEhUKEUNBTV9JTlRFUlBfU01P",
-                    "T1RIEAISJQohQ0FNX0lOVEVSUF9TTU9PVEhfUk9UX0xJTkVBUl9NT1ZFEAMS",
-                    "FgoSQ0FNX0lOVEVSUF9ERVBFTkRTEAQq/AMKDENhbWVyYVRhcmdldBIXChND",
-                    "QU1fVEFSR0VUX0FUVEFDS0VSEAASHAoYQ0FNX1RBUkdFVF9BVFRBQ0tFUl9F",
-                    "REdFEAESHgoaQ0FNX1RBUkdFVF9BVFRBQ0tFUl9HUk9VTkQQAhIXChNDQU1f",
-                    "VEFSR0VUX0RFRkVOREVSEAMSHAoYQ0FNX1RBUkdFVF9ERUZFTkRFUl9FREdF",
-                    "EAQSHgoaQ0FNX1RBUkdFVF9ERUZFTkRFUl9HUk9VTkQQBRIgChxDQU1fVEFS",
-                    "R0VUX0FUVEFDS0VSX0RFRkVOREVSEAYSJQohQ0FNX1RBUkdFVF9BVFRBQ0tF",
-                    "Ul9ERUZFTkRFUl9FREdFEAcSIAocQ0FNX1RBUkdFVF9ERUZFTkRFUl9BVFRB",
-                    "Q0tFUhAIEiUKIUNBTV9UQVJHRVRfREVGRU5ERVJfQVRUQUNLRVJfRURHRRAJ",
-                    "EicKI0NBTV9UQVJHRVRfQVRUQUNLRVJfREVGRU5ERVJfTUlSUk9SEAsSKQol",
-                    "Q0FNX1RBUkdFVF9TSE9VTERFUl9BVFRBQ0tFUl9ERUZFTkRFUhAMEjAKLENB",
-                    "TV9UQVJHRVRfU0hPVUxERVJfQVRUQUNLRVJfREVGRU5ERVJfTUlSUk9SEA0S",
-                    "JgoiQ0FNX1RBUkdFVF9BVFRBQ0tFUl9ERUZFTkRFUl9XT1JMRBAOKtoDCgtQ",
-                    "b2tlbW9uVHlwZRIVChFQT0tFTU9OX1RZUEVfTk9ORRAAEhcKE1BPS0VNT05f",
-                    "VFlQRV9OT1JNQUwQARIZChVQT0tFTU9OX1RZUEVfRklHSFRJTkcQAhIXChNQ",
-                    "T0tFTU9OX1RZUEVfRkxZSU5HEAMSFwoTUE9LRU1PTl9UWVBFX1BPSVNPThAE",
-                    "EhcKE1BPS0VNT05fVFlQRV9HUk9VTkQQBRIVChFQT0tFTU9OX1RZUEVfUk9D",
-                    "SxAGEhQKEFBPS0VNT05fVFlQRV9CVUcQBxIWChJQT0tFTU9OX1RZUEVfR0hP",
-                    "U1QQCBIWChJQT0tFTU9OX1RZUEVfU1RFRUwQCRIVChFQT0tFTU9OX1RZUEVf",
-                    "RklSRRAKEhYKElBPS0VNT05fVFlQRV9XQVRFUhALEhYKElBPS0VNT05fVFlQ",
-                    "RV9HUkFTUxAMEhkKFVBPS0VNT05fVFlQRV9FTEVDVFJJQxANEhgKFFBPS0VN",
-                    "T05fVFlQRV9QU1lDSElDEA4SFAoQUE9LRU1PTl9UWVBFX0lDRRAPEhcKE1BP",
-                    "S0VNT05fVFlQRV9EUkFHT04QEBIVChFQT0tFTU9OX1RZUEVfREFSSxAREhYK",
-                    "ElBPS0VNT05fVFlQRV9GQUlSWRASKq0BChNQb2tlbW9uTW92ZW1lbnRUeXBl",
-                    "EhMKD01PVkVNRU5UX1NUQVRJQxAAEhEKDU1PVkVNRU5UX0pVTVAQARIVChFN",
-                    "T1ZFTUVOVF9WRVJUSUNBTBACEhQKEE1PVkVNRU5UX1BTWUNISUMQAxIVChFN",
-                    "T1ZFTUVOVF9FTEVDVFJJQxAEEhMKD01PVkVNRU5UX0ZMWUlORxAFEhUKEU1P",
-                    "VkVNRU5UX0hPVkVSSU5HEAYqNQoMUG9rZW1vbkNsYXNzEgoKBk5PUk1BTBAA",
-                    "Eg0KCUxFR0VOREFSWRABEgoKBk1ZVEhJQxACYgZwcm90bzM="));
-            descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-                new pbr::FileDescriptor[] {},
-                new pbr::GeneratedClrTypeInfo(
-                    new[]
-                    {
-                        typeof(global::AllEnum.RpcDirection), typeof(global::AllEnum.TeamColor),
-                        typeof(global::AllEnum.RequestMethod), typeof(global::AllEnum.PokemonMove),
-                        typeof(global::AllEnum.ItemId), typeof(global::AllEnum.InventoryUpgradeType),
-                        typeof(global::AllEnum.EggIncubatorType), typeof(global::AllEnum.PokemonFamilyId),
-                        typeof(global::AllEnum.MapObjectsStatus), typeof(global::AllEnum.FortType),
-                        typeof(global::AllEnum.PokemonId), typeof(global::AllEnum.FortSponsor),
-                        typeof(global::AllEnum.FortRenderingType), typeof(global::AllEnum.ItemType),
-                        typeof(global::AllEnum.ItemCategory), typeof(global::AllEnum.ItemEffect),
-                        typeof(global::AllEnum.ActivityType), typeof(global::AllEnum.BadgeType),
-                        typeof(global::AllEnum.HoloIapItemCategory), typeof(global::AllEnum.CameraInterpolation),
-                        typeof(global::AllEnum.CameraTarget), typeof(global::AllEnum.PokemonType),
-                        typeof(global::AllEnum.PokemonMovementType), typeof(global::AllEnum.PokemonClass),
-                    }, null));
-        }
-
-        #endregion
-    }
-
-    #region Enums
-
-    public enum RpcDirection
-    {
-        [pbr::OriginalName("UNKNOWN")] Unknown = 0,
-        [pbr::OriginalName("RESPONSE")] Response = 1,
-        [pbr::OriginalName("REQUEST")] Request = 2,
-    }
-
-    public enum TeamColor
-    {
-        [pbr::OriginalName("NEUTRAL")] Neutral = 0,
-        [pbr::OriginalName("BLUE")] Blue = 1,
-        [pbr::OriginalName("RED")] Red = 2,
-        [pbr::OriginalName("YELLOW")] Yellow = 3,
-    }
-
-    public enum RequestMethod
-    {
-        [pbr::OriginalName("METHOD_UNSET")] MethodUnset = 0,
-        [pbr::OriginalName("PLAYER_UPDATE")] PlayerUpdate = 1,
-        [pbr::OriginalName("GET_PLAYER")] GetPlayer = 2,
-        [pbr::OriginalName("GET_INVENTORY")] GetInventory = 4,
-        [pbr::OriginalName("DOWNLOAD_SETTINGS")] DownloadSettings = 5,
-        [pbr::OriginalName("DOWNLOAD_ITEM_TEMPLATES")] DownloadItemTemplates = 6,
-        [pbr::OriginalName("DOWNLOAD_REMOTE_CONFIG_VERSION")] DownloadRemoteConfigVersion = 7,
-        [pbr::OriginalName("FORT_SEARCH")] FortSearch = 101,
-        [pbr::OriginalName("ENCOUNTER")] Encounter = 102,
-        [pbr::OriginalName("CATCH_POKEMON")] CatchPokemon = 103,
-        [pbr::OriginalName("FORT_DETAILS")] FortDetails = 104,
-        [pbr::OriginalName("ITEM_USE")] ItemUse = 105,
-        [pbr::OriginalName("GET_MAP_OBJECTS")] GetMapObjects = 106,
-        [pbr::OriginalName("FORT_DEPLOY_POKEMON")] FortDeployPokemon = 110,
-        [pbr::OriginalName("FORT_RECALL_POKEMON")] FortRecallPokemon = 111,
-        [pbr::OriginalName("RELEASE_POKEMON")] ReleasePokemon = 112,
-        [pbr::OriginalName("USE_ITEM_POTION")] UseItemPotion = 113,
-        [pbr::OriginalName("USE_ITEM_CAPTURE")] UseItemCapture = 114,
-        [pbr::OriginalName("USE_ITEM_FLEE")] UseItemFlee = 115,
-        [pbr::OriginalName("USE_ITEM_REVIVE")] UseItemRevive = 116,
-        [pbr::OriginalName("TRADE_SEARCH")] TradeSearch = 117,
-        [pbr::OriginalName("TRADE_OFFER")] TradeOffer = 118,
-        [pbr::OriginalName("TRADE_RESPONSE")] TradeResponse = 119,
-        [pbr::OriginalName("TRADE_RESULT")] TradeResult = 120,
-        [pbr::OriginalName("GET_PLAYER_PROFILE")] GetPlayerProfile = 121,
-        [pbr::OriginalName("GET_ITEM_PACK")] GetItemPack = 122,
-        [pbr::OriginalName("BUY_ITEM_PACK")] BuyItemPack = 123,
-        [pbr::OriginalName("BUY_GEM_PACK")] BuyGemPack = 124,
-        [pbr::OriginalName("EVOLVE_POKEMON")] EvolvePokemon = 125,
-        [pbr::OriginalName("GET_HATCHED_EGGS")] GetHatchedEggs = 126,
-        [pbr::OriginalName("ENCOUNTER_TUTORIAL_COMPLETE")] EncounterTutorialComplete = 127,
-        [pbr::OriginalName("LEVEL_UP_REWARDS")] LevelUpRewards = 128,
-        [pbr::OriginalName("CHECK_AWARDED_BADGES")] CheckAwardedBadges = 129,
-        [pbr::OriginalName("USE_ITEM_GYM")] UseItemGym = 133,
-        [pbr::OriginalName("GET_GYM_DETAILS")] GetGymDetails = 134,
-        [pbr::OriginalName("START_GYM_BATTLE")] StartGymBattle = 135,
-        [pbr::OriginalName("ATTACK_GYM")] AttackGym = 136,
-        [pbr::OriginalName("RECYCLE_INVENTORY_ITEM")] RecycleInventoryItem = 137,
-        [pbr::OriginalName("COLLECT_DAILY_BONUS")] CollectDailyBonus = 138,
-        [pbr::OriginalName("USE_ITEM_XP_BOOST")] UseItemXpBoost = 139,
-        [pbr::OriginalName("USE_ITEM_EGG_INCUBATOR")] UseItemEggIncubator = 140,
-        [pbr::OriginalName("USE_INCENSE")] UseIncense = 141,
-        [pbr::OriginalName("GET_INCENSE_POKEMON")] GetIncensePokemon = 142,
-        [pbr::OriginalName("INCENSE_ENCOUNTER")] IncenseEncounter = 143,
-        [pbr::OriginalName("ADD_FORT_MODIFIER")] AddFortModifier = 144,
-        [pbr::OriginalName("DISK_ENCOUNTER")] DiskEncounter = 145,
-        [pbr::OriginalName("COLLECT_DAILY_DEFENDER_BONUS")] CollectDailyDefenderBonus = 146,
-        [pbr::OriginalName("UPGRADE_POKEMON")] UpgradePokemon = 147,
-        [pbr::OriginalName("SET_FAVORITE_POKEMON")] SetFavoritePokemon = 148,
-        [pbr::OriginalName("NICKNAME_POKEMON")] NicknamePokemon = 149,
-        [pbr::OriginalName("EQUIP_BADGE")] EquipBadge = 150,
-        [pbr::OriginalName("SET_CONTACT_SETTINGS")] SetContactSettings = 151,
-        [pbr::OriginalName("GET_ASSET_DIGEST")] GetAssetDigest = 300,
-        [pbr::OriginalName("GET_DOWNLOAD_URLS")] GetDownloadUrls = 301,
-        [pbr::OriginalName("GET_SUGGESTED_CODENAMES")] GetSuggestedCodenames = 401,
-        [pbr::OriginalName("CHECK_CODENAME_AVAILABLE")] CheckCodenameAvailable = 402,
-        [pbr::OriginalName("CLAIM_CODENAME")] ClaimCodename = 403,
-        [pbr::OriginalName("SET_AVATAR")] SetAvatar = 404,
-        [pbr::OriginalName("SET_PLAYER_TEAM")] SetPlayerTeam = 405,
-        [pbr::OriginalName("MARK_TUTORIAL_COMPLETE")] MarkTutorialComplete = 406,
-        [pbr::OriginalName("LOAD_SPAWN_POINTS")] LoadSpawnPoints = 500,
-        [pbr::OriginalName("ECHO")] Echo = 666,
-        [pbr::OriginalName("DEBUG_UPDATE_INVENTORY")] DebugUpdateInventory = 700,
-        [pbr::OriginalName("DEBUG_DELETE_PLAYER")] DebugDeletePlayer = 701,
-        [pbr::OriginalName("SFIDA_REGISTRATION")] SfidaRegistration = 800,
-        [pbr::OriginalName("SFIDA_ACTION_LOG")] SfidaActionLog = 801,
-        [pbr::OriginalName("SFIDA_CERTIFICATION")] SfidaCertification = 802,
-        [pbr::OriginalName("SFIDA_UPDATE")] SfidaUpdate = 803,
-        [pbr::OriginalName("SFIDA_ACTION")] SfidaAction = 804,
-        [pbr::OriginalName("SFIDA_DOWSER")] SfidaDowser = 805,
-        [pbr::OriginalName("SFIDA_CAPTURE")] SfidaCapture = 806,
-    }
-
-    public enum PokemonMove
-    {
-        [pbr::OriginalName("MOVE_UNSET")] MoveUnset = 0,
-        [pbr::OriginalName("THUNDER_SHOCK")] ThunderShock = 1,
-        [pbr::OriginalName("QUICK_ATTACK")] QuickAttack = 2,
-        [pbr::OriginalName("SCRATCH")] Scratch = 3,
-        [pbr::OriginalName("EMBER")] Ember = 4,
-        [pbr::OriginalName("VINE_WHIP")] VineWhip = 5,
-        [pbr::OriginalName("TACKLE")] Tackle = 6,
-        [pbr::OriginalName("RAZOR_LEAF")] RazorLeaf = 7,
-        [pbr::OriginalName("TAKE_DOWN")] TakeDown = 8,
-        [pbr::OriginalName("WATER_GUN")] WaterGun = 9,
-        [pbr::OriginalName("BITE")] Bite = 10,
-        [pbr::OriginalName("POUND")] Pound = 11,
-        [pbr::OriginalName("DOUBLE_SLAP")] DoubleSlap = 12,
-        [pbr::OriginalName("WRAP")] Wrap = 13,
-        [pbr::OriginalName("HYPER_BEAM")] HyperBeam = 14,
-        [pbr::OriginalName("LICK")] Lick = 15,
-        [pbr::OriginalName("DARK_PULSE")] DarkPulse = 16,
-        [pbr::OriginalName("SMOG")] Smog = 17,
-        [pbr::OriginalName("SLUDGE")] Sludge = 18,
-        [pbr::OriginalName("METAL_CLAW")] MetalClaw = 19,
-        [pbr::OriginalName("VICE_GRIP")] ViceGrip = 20,
-        [pbr::OriginalName("FLAME_WHEEL")] FlameWheel = 21,
-        [pbr::OriginalName("MEGAHORN")] Megahorn = 22,
-        [pbr::OriginalName("WING_ATTACK")] WingAttack = 23,
-        [pbr::OriginalName("FLAMETHROWER")] Flamethrower = 24,
-        [pbr::OriginalName("SUCKER_PUNCH")] SuckerPunch = 25,
-        [pbr::OriginalName("DIG")] Dig = 26,
-        [pbr::OriginalName("LOW_KICK")] LowKick = 27,
-        [pbr::OriginalName("CROSS_CHOP")] CrossChop = 28,
-        [pbr::OriginalName("PSYCHO_CUT")] PsychoCut = 29,
-        [pbr::OriginalName("PSYBEAM")] Psybeam = 30,
-        [pbr::OriginalName("EARTHQUAKE")] Earthquake = 31,
-        [pbr::OriginalName("STONE_EDGE")] StoneEdge = 32,
-        [pbr::OriginalName("ICE_PUNCH")] IcePunch = 33,
-        [pbr::OriginalName("HEART_STAMP")] HeartStamp = 34,
-        [pbr::OriginalName("DISCHARGE")] Discharge = 35,
-        [pbr::OriginalName("FLASH_CANNON")] FlashCannon = 36,
-        [pbr::OriginalName("PECK")] Peck = 37,
-        [pbr::OriginalName("DRILL_PECK")] DrillPeck = 38,
-        [pbr::OriginalName("ICE_BEAM")] IceBeam = 39,
-        [pbr::OriginalName("BLIZZARD")] Blizzard = 40,
-        [pbr::OriginalName("AIR_SLASH")] AirSlash = 41,
-        [pbr::OriginalName("HEAT_WAVE")] HeatWave = 42,
-        [pbr::OriginalName("TWINEEDLE")] Twineedle = 43,
-        [pbr::OriginalName("POISON_JAB")] PoisonJab = 44,
-        [pbr::OriginalName("AERIAL_ACE")] AerialAce = 45,
-        [pbr::OriginalName("DRILL_RUN")] DrillRun = 46,
-        [pbr::OriginalName("PETAL_BLIZZARD")] PetalBlizzard = 47,
-        [pbr::OriginalName("MEGA_DRAIN")] MegaDrain = 48,
-        [pbr::OriginalName("BUG_BUZZ")] BugBuzz = 49,
-        [pbr::OriginalName("POISON_FANG")] PoisonFang = 50,
-        [pbr::OriginalName("NIGHT_SLASH")] NightSlash = 51,
-        [pbr::OriginalName("SLASH")] Slash = 52,
-        [pbr::OriginalName("BUBBLE_BEAM")] BubbleBeam = 53,
-        [pbr::OriginalName("SUBMISSION")] Submission = 54,
-        [pbr::OriginalName("KARATE_CHOP")] KarateChop = 55,
-        [pbr::OriginalName("LOW_SWEEP")] LowSweep = 56,
-        [pbr::OriginalName("AQUA_JET")] AquaJet = 57,
-        [pbr::OriginalName("AQUA_TAIL")] AquaTail = 58,
-        [pbr::OriginalName("SEED_BOMB")] SeedBomb = 59,
-        [pbr::OriginalName("PSYSHOCK")] Psyshock = 60,
-        [pbr::OriginalName("ROCK_THROW")] RockThrow = 61,
-        [pbr::OriginalName("ANCIENT_POWER")] AncientPower = 62,
-        [pbr::OriginalName("ROCK_TOMB")] RockTomb = 63,
-        [pbr::OriginalName("ROCK_SLIDE")] RockSlide = 64,
-        [pbr::OriginalName("POWER_GEM")] PowerGem = 65,
-        [pbr::OriginalName("SHADOW_SNEAK")] ShadowSneak = 66,
-        [pbr::OriginalName("SHADOW_PUNCH")] ShadowPunch = 67,
-        [pbr::OriginalName("SHADOW_CLAW")] ShadowClaw = 68,
-        [pbr::OriginalName("OMINOUS_WIND")] OminousWind = 69,
-        [pbr::OriginalName("SHADOW_BALL")] ShadowBall = 70,
-        [pbr::OriginalName("BULLET_PUNCH")] BulletPunch = 71,
-        [pbr::OriginalName("MAGNET_BOMB")] MagnetBomb = 72,
-        [pbr::OriginalName("STEEL_WING")] SteelWing = 73,
-        [pbr::OriginalName("IRON_HEAD")] IronHead = 74,
-        [pbr::OriginalName("PARABOLIC_CHARGE")] ParabolicCharge = 75,
-        [pbr::OriginalName("SPARK")] Spark = 76,
-        [pbr::OriginalName("THUNDER_PUNCH")] ThunderPunch = 77,
-        [pbr::OriginalName("THUNDER")] Thunder = 78,
-        [pbr::OriginalName("THUNDERBOLT")] Thunderbolt = 79,
-        [pbr::OriginalName("TWISTER")] Twister = 80,
-        [pbr::OriginalName("DRAGON_BREATH")] DragonBreath = 81,
-        [pbr::OriginalName("DRAGON_PULSE")] DragonPulse = 82,
-        [pbr::OriginalName("DRAGON_CLAW")] DragonClaw = 83,
-        [pbr::OriginalName("DISARMING_VOICE")] DisarmingVoice = 84,
-        [pbr::OriginalName("DRAINING_KISS")] DrainingKiss = 85,
-        [pbr::OriginalName("DAZZLING_GLEAM")] DazzlingGleam = 86,
-        [pbr::OriginalName("MOONBLAST")] Moonblast = 87,
-        [pbr::OriginalName("PLAY_ROUGH")] PlayRough = 88,
-        [pbr::OriginalName("CROSS_POISON")] CrossPoison = 89,
-        [pbr::OriginalName("SLUDGE_BOMB")] SludgeBomb = 90,
-        [pbr::OriginalName("SLUDGE_WAVE")] SludgeWave = 91,
-        [pbr::OriginalName("GUNK_SHOT")] GunkShot = 92,
-        [pbr::OriginalName("MUD_SHOT")] MudShot = 93,
-        [pbr::OriginalName("BONE_CLUB")] BoneClub = 94,
-        [pbr::OriginalName("BULLDOZE")] Bulldoze = 95,
-        [pbr::OriginalName("MUD_BOMB")] MudBomb = 96,
-        [pbr::OriginalName("FURY_CUTTER")] FuryCutter = 97,
-        [pbr::OriginalName("BUG_BITE")] BugBite = 98,
-        [pbr::OriginalName("SIGNAL_BEAM")] SignalBeam = 99,
-        [pbr::OriginalName("X_SCISSOR")] XScissor = 100,
-        [pbr::OriginalName("FLAME_CHARGE")] FlameCharge = 101,
-        [pbr::OriginalName("FLAME_BURST")] FlameBurst = 102,
-        [pbr::OriginalName("FIRE_BLAST")] FireBlast = 103,
-        [pbr::OriginalName("BRINE")] Brine = 104,
-        [pbr::OriginalName("WATER_PULSE")] WaterPulse = 105,
-        [pbr::OriginalName("SCALD")] Scald = 106,
-        [pbr::OriginalName("HYDRO_PUMP")] HydroPump = 107,
-        [pbr::OriginalName("PSYCHIC")] Psychic = 108,
-        [pbr::OriginalName("PSYSTRIKE")] Psystrike = 109,
-        [pbr::OriginalName("ICE_SHARD")] IceShard = 110,
-        [pbr::OriginalName("ICY_WIND")] IcyWind = 111,
-        [pbr::OriginalName("FROST_BREATH")] FrostBreath = 112,
-        [pbr::OriginalName("ABSORB")] Absorb = 113,
-        [pbr::OriginalName("GIGA_DRAIN")] GigaDrain = 114,
-        [pbr::OriginalName("FIRE_PUNCH")] FirePunch = 115,
-        [pbr::OriginalName("SOLAR_BEAM")] SolarBeam = 116,
-        [pbr::OriginalName("LEAF_BLADE")] LeafBlade = 117,
-        [pbr::OriginalName("POWER_WHIP")] PowerWhip = 118,
-        [pbr::OriginalName("SPLASH")] Splash = 119,
-        [pbr::OriginalName("ACID")] Acid = 120,
-        [pbr::OriginalName("AIR_CUTTER")] AirCutter = 121,
-        [pbr::OriginalName("HURRICANE")] Hurricane = 122,
-        [pbr::OriginalName("BRICK_BREAK")] BrickBreak = 123,
-        [pbr::OriginalName("CUT")] Cut = 124,
-        [pbr::OriginalName("SWIFT")] Swift = 125,
-        [pbr::OriginalName("HORN_ATTACK")] HornAttack = 126,
-        [pbr::OriginalName("STOMP")] Stomp = 127,
-        [pbr::OriginalName("HEADBUTT")] Headbutt = 128,
-        [pbr::OriginalName("HYPER_FANG")] HyperFang = 129,
-        [pbr::OriginalName("SLAM")] Slam = 130,
-        [pbr::OriginalName("BODY_SLAM")] BodySlam = 131,
-        [pbr::OriginalName("REST")] Rest = 132,
-        [pbr::OriginalName("STRUGGLE")] Struggle = 133,
-        [pbr::OriginalName("SCALD_BLASTOISE")] ScaldBlastoise = 134,
-        [pbr::OriginalName("HYDRO_PUMP_BLASTOISE")] HydroPumpBlastoise = 135,
-        [pbr::OriginalName("WRAP_GREEN")] WrapGreen = 136,
-        [pbr::OriginalName("WRAP_PINK")] WrapPink = 137,
-        [pbr::OriginalName("FURY_CUTTER_FAST")] FuryCutterFast = 200,
-        [pbr::OriginalName("BUG_BITE_FAST")] BugBiteFast = 201,
-        [pbr::OriginalName("BITE_FAST")] BiteFast = 202,
-        [pbr::OriginalName("SUCKER_PUNCH_FAST")] SuckerPunchFast = 203,
-        [pbr::OriginalName("DRAGON_BREATH_FAST")] DragonBreathFast = 204,
-        [pbr::OriginalName("THUNDER_SHOCK_FAST")] ThunderShockFast = 205,
-        [pbr::OriginalName("SPARK_FAST")] SparkFast = 206,
-        [pbr::OriginalName("LOW_KICK_FAST")] LowKickFast = 207,
-        [pbr::OriginalName("KARATE_CHOP_FAST")] KarateChopFast = 208,
-        [pbr::OriginalName("EMBER_FAST")] EmberFast = 209,
-        [pbr::OriginalName("WING_ATTACK_FAST")] WingAttackFast = 210,
-        [pbr::OriginalName("PECK_FAST")] PeckFast = 211,
-        [pbr::OriginalName("LICK_FAST")] LickFast = 212,
-        [pbr::OriginalName("SHADOW_CLAW_FAST")] ShadowClawFast = 213,
-        [pbr::OriginalName("VINE_WHIP_FAST")] VineWhipFast = 214,
-        [pbr::OriginalName("RAZOR_LEAF_FAST")] RazorLeafFast = 215,
-        [pbr::OriginalName("MUD_SHOT_FAST")] MudShotFast = 216,
-        [pbr::OriginalName("ICE_SHARD_FAST")] IceShardFast = 217,
-        [pbr::OriginalName("FROST_BREATH_FAST")] FrostBreathFast = 218,
-        [pbr::OriginalName("QUICK_ATTACK_FAST")] QuickAttackFast = 219,
-        [pbr::OriginalName("SCRATCH_FAST")] ScratchFast = 220,
-        [pbr::OriginalName("TACKLE_FAST")] TackleFast = 221,
-        [pbr::OriginalName("POUND_FAST")] PoundFast = 222,
-        [pbr::OriginalName("CUT_FAST")] CutFast = 223,
-        [pbr::OriginalName("POISON_JAB_FAST")] PoisonJabFast = 224,
-        [pbr::OriginalName("ACID_FAST")] AcidFast = 225,
-        [pbr::OriginalName("PSYCHO_CUT_FAST")] PsychoCutFast = 226,
-        [pbr::OriginalName("ROCK_THROW_FAST")] RockThrowFast = 227,
-        [pbr::OriginalName("METAL_CLAW_FAST")] MetalClawFast = 228,
-        [pbr::OriginalName("BULLET_PUNCH_FAST")] BulletPunchFast = 229,
-        [pbr::OriginalName("WATER_GUN_FAST")] WaterGunFast = 230,
-        [pbr::OriginalName("SPLASH_FAST")] SplashFast = 231,
-        [pbr::OriginalName("WATER_GUN_FAST_BLASTOISE")] WaterGunFastBlastoise = 232,
-        [pbr::OriginalName("MUD_SLAP_FAST")] MudSlapFast = 233,
-        [pbr::OriginalName("ZEN_HEADBUTT_FAST")] ZenHeadbuttFast = 234,
-        [pbr::OriginalName("CONFUSION_FAST")] ConfusionFast = 235,
-        [pbr::OriginalName("POISON_STING_FAST")] PoisonStingFast = 236,
-        [pbr::OriginalName("BUBBLE_FAST")] BubbleFast = 237,
-        [pbr::OriginalName("FEINT_ATTACK_FAST")] FeintAttackFast = 238,
-        [pbr::OriginalName("STEEL_WING_FAST")] SteelWingFast = 239,
-        [pbr::OriginalName("FIRE_FANG_FAST")] FireFangFast = 240,
-        [pbr::OriginalName("ROCK_SMASH_FAST")] RockSmashFast = 241,
-    }
-
-    public enum ItemId
-    {
-        [pbr::OriginalName("ITEM_UNKNOWN")] ItemUnknown = 0,
-        [pbr::OriginalName("ITEM_POKE_BALL")] ItemPokeBall = 1,
-        [pbr::OriginalName("ITEM_GREAT_BALL")] ItemGreatBall = 2,
-        [pbr::OriginalName("ITEM_ULTRA_BALL")] ItemUltraBall = 3,
-        [pbr::OriginalName("ITEM_MASTER_BALL")] ItemMasterBall = 4,
-        [pbr::OriginalName("ITEM_POTION")] ItemPotion = 101,
-        [pbr::OriginalName("ITEM_SUPER_POTION")] ItemSuperPotion = 102,
-        [pbr::OriginalName("ITEM_HYPER_POTION")] ItemHyperPotion = 103,
-        [pbr::OriginalName("ITEM_MAX_POTION")] ItemMaxPotion = 104,
-        [pbr::OriginalName("ITEM_REVIVE")] ItemRevive = 201,
-        [pbr::OriginalName("ITEM_MAX_REVIVE")] ItemMaxRevive = 202,
-        [pbr::OriginalName("ITEM_LUCKY_EGG")] ItemLuckyEgg = 301,
-        [pbr::OriginalName("ITEM_INCENSE_ORDINARY")] ItemIncenseOrdinary = 401,
-        [pbr::OriginalName("ITEM_INCENSE_SPICY")] ItemIncenseSpicy = 402,
-        [pbr::OriginalName("ITEM_INCENSE_COOL")] ItemIncenseCool = 403,
-        [pbr::OriginalName("ITEM_INCENSE_FLORAL")] ItemIncenseFloral = 404,
-        [pbr::OriginalName("ITEM_TROY_DISK")] ItemTroyDisk = 501,
-        [pbr::OriginalName("ITEM_X_ATTACK")] ItemXAttack = 602,
-        [pbr::OriginalName("ITEM_X_DEFENSE")] ItemXDefense = 603,
-        [pbr::OriginalName("ITEM_X_MIRACLE")] ItemXMiracle = 604,
-        [pbr::OriginalName("ITEM_RAZZ_BERRY")] ItemRazzBerry = 701,
-        [pbr::OriginalName("ITEM_BLUK_BERRY")] ItemBlukBerry = 702,
-        [pbr::OriginalName("ITEM_NANAB_BERRY")] ItemNanabBerry = 703,
-        [pbr::OriginalName("ITEM_WEPAR_BERRY")] ItemWeparBerry = 704,
-        [pbr::OriginalName("ITEM_PINAP_BERRY")] ItemPinapBerry = 705,
-        [pbr::OriginalName("ITEM_SPECIAL_CAMERA")] ItemSpecialCamera = 801,
-        [pbr::OriginalName("ITEM_INCUBATOR_BASIC_UNLIMITED")] ItemIncubatorBasicUnlimited = 901,
-        [pbr::OriginalName("ITEM_INCUBATOR_BASIC")] ItemIncubatorBasic = 902,
-        [pbr::OriginalName("ITEM_POKEMON_STORAGE_UPGRADE")] ItemPokemonStorageUpgrade = 1001,
-        [pbr::OriginalName("ITEM_ITEM_STORAGE_UPGRADE")] ItemItemStorageUpgrade = 1002,
-    }
-
-    public enum InventoryUpgradeType
-    {
-        [pbr::OriginalName("UPGRADE_UNSET")] UpgradeUnset = 0,
-        [pbr::OriginalName("INCREASE_ITEM_STORAGE")] IncreaseItemStorage = 1,
-        [pbr::OriginalName("INCREASE_POKEMON_STORAGE")] IncreasePokemonStorage = 2,
-    }
-
-    public enum EggIncubatorType
-    {
-        [pbr::OriginalName("INCUBATOR_UNSET")] IncubatorUnset = 0,
-        [pbr::OriginalName("INCUBATOR_DISTANCE")] IncubatorDistance = 1,
-    }
-
-    public enum PokemonFamilyId
-    {
-        [pbr::OriginalName("FAMILY_UNSET")] FamilyUnset = 0,
-        [pbr::OriginalName("FAMILY_BULBASAUR")] FamilyBulbasaur = 1,
-        [pbr::OriginalName("FAMILY_CHARMANDER")] FamilyCharmander = 4,
-        [pbr::OriginalName("FAMILY_SQUIRTLE")] FamilySquirtle = 7,
-        [pbr::OriginalName("FAMILY_CATERPIE")] FamilyCaterpie = 10,
-        [pbr::OriginalName("FAMILY_WEEDLE")] FamilyWeedle = 13,
-        [pbr::OriginalName("FAMILY_PIDGEY")] FamilyPidgey = 16,
-        [pbr::OriginalName("FAMILY_RATTATA")] FamilyRattata = 19,
-        [pbr::OriginalName("FAMILY_SPEAROW")] FamilySpearow = 21,
-        [pbr::OriginalName("FAMILY_EKANS")] FamilyEkans = 23,
-        [pbr::OriginalName("FAMILY_PIKACHU")] FamilyPikachu = 25,
-        [pbr::OriginalName("FAMILY_SANDSHREW")] FamilySandshrew = 27,
-        [pbr::OriginalName("FAMILY_NIDORAN")] FamilyNidoran = 29,
-        [pbr::OriginalName("FAMILY_NIDORAN2")] FamilyNidoran2 = 32,
-        [pbr::OriginalName("FAMILY_CLEFAIRY")] FamilyClefairy = 35,
-        [pbr::OriginalName("FAMILY_VULPIX")] FamilyVulpix = 37,
-        [pbr::OriginalName("FAMILY_JIGGLYPUFF")] FamilyJigglypuff = 39,
-        [pbr::OriginalName("FAMILY_ZUBAT")] FamilyZubat = 41,
-        [pbr::OriginalName("FAMILY_ODDISH")] FamilyOddish = 43,
-        [pbr::OriginalName("FAMILY_PARAS")] FamilyParas = 46,
-        [pbr::OriginalName("FAMILY_VENONAT")] FamilyVenonat = 48,
-        [pbr::OriginalName("FAMILY_DIGLETT")] FamilyDiglett = 50,
-        [pbr::OriginalName("FAMILY_MEOWTH")] FamilyMeowth = 52,
-        [pbr::OriginalName("FAMILY_PSYDUCK")] FamilyPsyduck = 54,
-        [pbr::OriginalName("FAMILY_MANKEY")] FamilyMankey = 56,
-        [pbr::OriginalName("FAMILY_GROWLITHE")] FamilyGrowlithe = 58,
-        [pbr::OriginalName("FAMILY_POLIWAG")] FamilyPoliwag = 60,
-        [pbr::OriginalName("FAMILY_ABRA")] FamilyAbra = 63,
-        [pbr::OriginalName("FAMILY_MACHOP")] FamilyMachop = 66,
-        [pbr::OriginalName("FAMILY_BELLSPROUT")] FamilyBellsprout = 69,
-        [pbr::OriginalName("FAMILY_TENTACOOL")] FamilyTentacool = 72,
-        [pbr::OriginalName("FAMILY_GEODUDE")] FamilyGeodude = 74,
-        [pbr::OriginalName("FAMILY_PONYTA")] FamilyPonyta = 77,
-        [pbr::OriginalName("FAMILY_SLOWPOKE")] FamilySlowpoke = 79,
-        [pbr::OriginalName("FAMILY_MAGNEMITE")] FamilyMagnemite = 81,
-        [pbr::OriginalName("FAMILY_FARFETCHD")] FamilyFarfetchd = 83,
-        [pbr::OriginalName("FAMILY_DODUO")] FamilyDoduo = 84,
-        [pbr::OriginalName("FAMILY_SEEL")] FamilySeel = 86,
-        [pbr::OriginalName("FAMILY_GRIMER")] FamilyGrimer = 88,
-        [pbr::OriginalName("FAMILY_SHELLDER")] FamilyShellder = 90,
-        [pbr::OriginalName("FAMILY_GASTLY")] FamilyGastly = 92,
-        [pbr::OriginalName("FAMILY_ONIX")] FamilyOnix = 95,
-        [pbr::OriginalName("FAMILY_DROWZEE")] FamilyDrowzee = 96,
-        [pbr::OriginalName("FAMILY_KRABBY")] FamilyKrabby = 98,
-        [pbr::OriginalName("FAMILY_VOLTORB")] FamilyVoltorb = 100,
-        [pbr::OriginalName("FAMILY_EXEGGCUTE")] FamilyExeggcute = 102,
-        [pbr::OriginalName("FAMILY_CUBONE")] FamilyCubone = 104,
-        [pbr::OriginalName("FAMILY_HITMONLEE")] FamilyHitmonlee = 106,
-        [pbr::OriginalName("FAMILY_HITMONCHAN")] FamilyHitmonchan = 107,
-        [pbr::OriginalName("FAMILY_LICKITUNG")] FamilyLickitung = 108,
-        [pbr::OriginalName("FAMILY_KOFFING")] FamilyKoffing = 109,
-        [pbr::OriginalName("FAMILY_RHYHORN")] FamilyRhyhorn = 111,
-        [pbr::OriginalName("FAMILY_CHANSEY")] FamilyChansey = 113,
-        [pbr::OriginalName("FAMILY_TANGELA")] FamilyTangela = 114,
-        [pbr::OriginalName("FAMILY_KANGASKHAN")] FamilyKangaskhan = 115,
-        [pbr::OriginalName("FAMILY_HORSEA")] FamilyHorsea = 116,
-        [pbr::OriginalName("FAMILY_GOLDEEN")] FamilyGoldeen = 118,
-        [pbr::OriginalName("FAMILY_STARYU")] FamilyStaryu = 120,
-        [pbr::OriginalName("FAMILY_MR_MIME")] FamilyMrMime = 122,
-        [pbr::OriginalName("FAMILY_SCYTHER")] FamilyScyther = 123,
-        [pbr::OriginalName("FAMILY_JYNX")] FamilyJynx = 124,
-        [pbr::OriginalName("FAMILY_ELECTABUZZ")] FamilyElectabuzz = 125,
-        [pbr::OriginalName("FAMILY_MAGMAR")] FamilyMagmar = 126,
-        [pbr::OriginalName("FAMILY_PINSIR")] FamilyPinsir = 127,
-        [pbr::OriginalName("FAMILY_TAUROS")] FamilyTauros = 128,
-        [pbr::OriginalName("FAMILY_MAGIKARP")] FamilyMagikarp = 129,
-        [pbr::OriginalName("FAMILY_LAPRAS")] FamilyLapras = 131,
-        [pbr::OriginalName("FAMILY_DITTO")] FamilyDitto = 132,
-        [pbr::OriginalName("FAMILY_EEVEE")] FamilyEevee = 133,
-        [pbr::OriginalName("FAMILY_PORYGON")] FamilyPorygon = 137,
-        [pbr::OriginalName("FAMILY_OMANYTE")] FamilyOmanyte = 138,
-        [pbr::OriginalName("FAMILY_KABUTO")] FamilyKabuto = 140,
-        [pbr::OriginalName("FAMILY_AERODACTYL")] FamilyAerodactyl = 142,
-        [pbr::OriginalName("FAMILY_SNORLAX")] FamilySnorlax = 143,
-        [pbr::OriginalName("FAMILY_ARTICUNO")] FamilyArticuno = 144,
-        [pbr::OriginalName("FAMILY_ZAPDOS")] FamilyZapdos = 145,
-        [pbr::OriginalName("FAMILY_MOLTRES")] FamilyMoltres = 146,
-        [pbr::OriginalName("FAMILY_DRATINI")] FamilyDratini = 147,
-        [pbr::OriginalName("FAMILY_MEWTWO")] FamilyMewtwo = 150,
-        [pbr::OriginalName("FAMILY_MEW")] FamilyMew = 151,
-    }
-
-    public enum MapObjectsStatus
-    {
-        [pbr::OriginalName("UNSET_STATUS")] UnsetStatus = 0,
-        [pbr::OriginalName("SUCCESS")] Success = 1,
-        [pbr::OriginalName("LOCATION_UNSET")] LocationUnset = 2,
-    }
-
-    public enum FortType
-    {
-        [pbr::OriginalName("GYM")] Gym = 0,
-        [pbr::OriginalName("CHECKPOINT")] Checkpoint = 1,
-    }
-
-    public enum PokemonId
-    {
-        [pbr::OriginalName("MISSINGNO")] Missingno = 0,
-        [pbr::OriginalName("BULBASAUR")] Bulbasaur = 1,
-        [pbr::OriginalName("IVYSAUR")] Ivysaur = 2,
-        [pbr::OriginalName("VENUSAUR")] Venusaur = 3,
-        [pbr::OriginalName("CHARMANDER")] Charmander = 4,
-        [pbr::OriginalName("CHARMELEON")] Charmeleon = 5,
-        [pbr::OriginalName("CHARIZARD")] Charizard = 6,
-        [pbr::OriginalName("SQUIRTLE")] Squirtle = 7,
-        [pbr::OriginalName("WARTORTLE")] Wartortle = 8,
-        [pbr::OriginalName("BLASTOISE")] Blastoise = 9,
-        [pbr::OriginalName("CATERPIE")] Caterpie = 10,
-        [pbr::OriginalName("METAPOD")] Metapod = 11,
-        [pbr::OriginalName("BUTTERFREE")] Butterfree = 12,
-        [pbr::OriginalName("WEEDLE")] Weedle = 13,
-        [pbr::OriginalName("KAKUNA")] Kakuna = 14,
-        [pbr::OriginalName("BEEDRILL")] Beedrill = 15,
-        [pbr::OriginalName("PIDGEY")] Pidgey = 16,
-        [pbr::OriginalName("PIDGEOTTO")] Pidgeotto = 17,
-        [pbr::OriginalName("PIDGEOT")] Pidgeot = 18,
-        [pbr::OriginalName("RATTATA")] Rattata = 19,
-        [pbr::OriginalName("RATICATE")] Raticate = 20,
-        [pbr::OriginalName("SPEAROW")] Spearow = 21,
-        [pbr::OriginalName("FEAROW")] Fearow = 22,
-        [pbr::OriginalName("EKANS")] Ekans = 23,
-        [pbr::OriginalName("ARBOK")] Arbok = 24,
-        [pbr::OriginalName("PIKACHU")] Pikachu = 25,
-        [pbr::OriginalName("RAICHU")] Raichu = 26,
-        [pbr::OriginalName("SANDSHREW")] Sandshrew = 27,
-        [pbr::OriginalName("SANDLASH")] Sandlash = 28,
-        [pbr::OriginalName("NIDORAN_FEMALE")] NidoranFemale = 29,
-        [pbr::OriginalName("NIDORINA")] Nidorina = 30,
-        [pbr::OriginalName("NIDOQUEEN")] Nidoqueen = 31,
-        [pbr::OriginalName("NIDORAN_MALE")] NidoranMale = 32,
-        [pbr::OriginalName("NIDORINO")] Nidorino = 33,
-        [pbr::OriginalName("NIDOKING")] Nidoking = 34,
-        [pbr::OriginalName("CLEFAIRY")] Clefairy = 35,
-        [pbr::OriginalName("CLEFABLE")] Clefable = 36,
-        [pbr::OriginalName("VULPIX")] Vulpix = 37,
-        [pbr::OriginalName("NINETALES")] Ninetales = 38,
-        [pbr::OriginalName("JIGGLYPUFF")] Jigglypuff = 39,
-        [pbr::OriginalName("WIGGLYTUFF")] Wigglytuff = 40,
-        [pbr::OriginalName("ZUBAT")] Zubat = 41,
-        [pbr::OriginalName("GOLBAT")] Golbat = 42,
-        [pbr::OriginalName("ODDISH")] Oddish = 43,
-        [pbr::OriginalName("GLOOM")] Gloom = 44,
-        [pbr::OriginalName("VILEPLUME")] Vileplume = 45,
-        [pbr::OriginalName("PARAS")] Paras = 46,
-        [pbr::OriginalName("PARASECT")] Parasect = 47,
-        [pbr::OriginalName("VENONAT")] Venonat = 48,
-        [pbr::OriginalName("VENOMOTH")] Venomoth = 49,
-        [pbr::OriginalName("DIGLETT")] Diglett = 50,
-        [pbr::OriginalName("DUGTRIO")] Dugtrio = 51,
-        [pbr::OriginalName("MEOWTH")] Meowth = 52,
-        [pbr::OriginalName("PERSIAN")] Persian = 53,
-        [pbr::OriginalName("PSYDUCK")] Psyduck = 54,
-        [pbr::OriginalName("GOLDUCK")] Golduck = 55,
-        [pbr::OriginalName("MANKEY")] Mankey = 56,
-        [pbr::OriginalName("PRIMEAPE")] Primeape = 57,
-        [pbr::OriginalName("GROWLITHE")] Growlithe = 58,
-        [pbr::OriginalName("ARCANINE")] Arcanine = 59,
-        [pbr::OriginalName("POLIWAG")] Poliwag = 60,
-        [pbr::OriginalName("POLIWHIRL")] Poliwhirl = 61,
-        [pbr::OriginalName("POLIWRATH")] Poliwrath = 62,
-        [pbr::OriginalName("ABRA")] Abra = 63,
-        [pbr::OriginalName("KADABRA")] Kadabra = 64,
-        [pbr::OriginalName("ALAKHAZAM")] Alakhazam = 65,
-        [pbr::OriginalName("MACHOP")] Machop = 66,
-        [pbr::OriginalName("MACHOKE")] Machoke = 67,
-        [pbr::OriginalName("MACHAMP")] Machamp = 68,
-        [pbr::OriginalName("BELLSPROUT")] Bellsprout = 69,
-        [pbr::OriginalName("WEEPINBELL")] Weepinbell = 70,
-        [pbr::OriginalName("VICTREEBELL")] Victreebell = 71,
-        [pbr::OriginalName("TENTACOOL")] Tentacool = 72,
-        [pbr::OriginalName("TENTACRUEL")] Tentacruel = 73,
-        [pbr::OriginalName("GEODUDE")] Geodude = 74,
-        [pbr::OriginalName("GRAVELER")] Graveler = 75,
-        [pbr::OriginalName("GOLEM")] Golem = 76,
-        [pbr::OriginalName("PONYTA")] Ponyta = 77,
-        [pbr::OriginalName("RAPIDASH")] Rapidash = 78,
-        [pbr::OriginalName("SLOWPOKE")] Slowpoke = 79,
-        [pbr::OriginalName("SLOWBRO")] Slowbro = 80,
-        [pbr::OriginalName("MAGNEMITE")] Magnemite = 81,
-        [pbr::OriginalName("MAGNETON")] Magneton = 82,
-        [pbr::OriginalName("FARFETCHD")] Farfetchd = 83,
-        [pbr::OriginalName("DODUO")] Doduo = 84,
-        [pbr::OriginalName("DODRIO")] Dodrio = 85,
-        [pbr::OriginalName("SEEL")] Seel = 86,
-        [pbr::OriginalName("DEWGONG")] Dewgong = 87,
-        [pbr::OriginalName("GRIMER")] Grimer = 88,
-        [pbr::OriginalName("MUK")] Muk = 89,
-        [pbr::OriginalName("SHELLDER")] Shellder = 90,
-        [pbr::OriginalName("CLOYSTER")] Cloyster = 91,
-        [pbr::OriginalName("GASTLY")] Gastly = 92,
-        [pbr::OriginalName("HAUNTER")] Haunter = 93,
-        [pbr::OriginalName("GENGAR")] Gengar = 94,
-        [pbr::OriginalName("ONIX")] Onix = 95,
-        [pbr::OriginalName("DROWZEE")] Drowzee = 96,
-        [pbr::OriginalName("HYPNO")] Hypno = 97,
-        [pbr::OriginalName("KRABBY")] Krabby = 98,
-        [pbr::OriginalName("KINGLER")] Kingler = 99,
-        [pbr::OriginalName("VOLTORB")] Voltorb = 100,
-        [pbr::OriginalName("ELECTRODE")] Electrode = 101,
-        [pbr::OriginalName("EXEGGCUTE")] Exeggcute = 102,
-        [pbr::OriginalName("EXEGGUTOR")] Exeggutor = 103,
-        [pbr::OriginalName("CUBONE")] Cubone = 104,
-        [pbr::OriginalName("MAROWAK")] Marowak = 105,
-        [pbr::OriginalName("HITMONLEE")] Hitmonlee = 106,
-        [pbr::OriginalName("HITMONCHAN")] Hitmonchan = 107,
-        [pbr::OriginalName("LICKITUNG")] Lickitung = 108,
-        [pbr::OriginalName("KOFFING")] Koffing = 109,
-        [pbr::OriginalName("WEEZING")] Weezing = 110,
-        [pbr::OriginalName("RHYHORN")] Rhyhorn = 111,
-        [pbr::OriginalName("RHYDON")] Rhydon = 112,
-        [pbr::OriginalName("CHANSEY")] Chansey = 113,
-        [pbr::OriginalName("TANGELA")] Tangela = 114,
-        [pbr::OriginalName("KANGASKHAN")] Kangaskhan = 115,
-        [pbr::OriginalName("HORSEA")] Horsea = 116,
-        [pbr::OriginalName("SEADRA")] Seadra = 117,
-        [pbr::OriginalName("GOLDEEN")] Goldeen = 118,
-        [pbr::OriginalName("SEAKING")] Seaking = 119,
-        [pbr::OriginalName("STARYU")] Staryu = 120,
-        [pbr::OriginalName("STARMIE")] Starmie = 121,
-        [pbr::OriginalName("MR_MIME")] MrMime = 122,
-        [pbr::OriginalName("SCYTHER")] Scyther = 123,
-        [pbr::OriginalName("JYNX")] Jynx = 124,
-        [pbr::OriginalName("ELECTABUZZ")] Electabuzz = 125,
-        [pbr::OriginalName("MAGMAR")] Magmar = 126,
-        [pbr::OriginalName("PINSIR")] Pinsir = 127,
-        [pbr::OriginalName("TAUROS")] Tauros = 128,
-        [pbr::OriginalName("MAGIKARP")] Magikarp = 129,
-        [pbr::OriginalName("GYARADOS")] Gyarados = 130,
-        [pbr::OriginalName("LAPRAS")] Lapras = 131,
-        [pbr::OriginalName("DITTO")] Ditto = 132,
-        [pbr::OriginalName("EEVEE")] Eevee = 133,
-        [pbr::OriginalName("VAPOREON")] Vaporeon = 134,
-        [pbr::OriginalName("JOLTEON")] Jolteon = 135,
-        [pbr::OriginalName("FLAREON")] Flareon = 136,
-        [pbr::OriginalName("PORYGON")] Porygon = 137,
-        [pbr::OriginalName("OMANYTE")] Omanyte = 138,
-        [pbr::OriginalName("OMASTAR")] Omastar = 139,
-        [pbr::OriginalName("KABUTO")] Kabuto = 140,
-        [pbr::OriginalName("KABUTOPS")] Kabutops = 141,
-        [pbr::OriginalName("AERODACTYL")] Aerodactyl = 142,
-        [pbr::OriginalName("SNORLAX")] Snorlax = 143,
-        [pbr::OriginalName("ARTICUNO")] Articuno = 144,
-        [pbr::OriginalName("ZAPDOS")] Zapdos = 145,
-        [pbr::OriginalName("MOLTRES")] Moltres = 146,
-        [pbr::OriginalName("DRATINI")] Dratini = 147,
-        [pbr::OriginalName("DRAGONAIR")] Dragonair = 148,
-        [pbr::OriginalName("DRAGONITE")] Dragonite = 149,
-        [pbr::OriginalName("MEWTWO")] Mewtwo = 150,
-        [pbr::OriginalName("MEW")] Mew = 151,
-    }
-
-    public enum FortSponsor
-    {
-        [pbr::OriginalName("UNSET_SPONSOR")] UnsetSponsor = 0,
-        [pbr::OriginalName("MCDONALDS")] Mcdonalds = 1,
-        [pbr::OriginalName("POKEMON_STORE")] PokemonStore = 2,
-    }
-
-    public enum FortRenderingType
-    {
-        [pbr::OriginalName("DEFAULT")] Default = 0,
-        [pbr::OriginalName("INTERNAL_TEST")] InternalTest = 1,
-    }
-
-    public enum ItemType
-    {
-        [pbr::OriginalName("ITEM_TYPE_NONE")] None = 0,
-        [pbr::OriginalName("ITEM_TYPE_POKEBALL")] Pokeball = 1,
-        [pbr::OriginalName("ITEM_TYPE_POTION")] Potion = 2,
-        [pbr::OriginalName("ITEM_TYPE_REVIVE")] Revive = 3,
-        [pbr::OriginalName("ITEM_TYPE_MAP")] Map = 4,
-        [pbr::OriginalName("ITEM_TYPE_BATTLE")] Battle = 5,
-        [pbr::OriginalName("ITEM_TYPE_FOOD")] Food = 6,
-        [pbr::OriginalName("ITEM_TYPE_CAMERA")] Camera = 7,
-        [pbr::OriginalName("ITEM_TYPE_DISK")] Disk = 8,
-        [pbr::OriginalName("ITEM_TYPE_INCUBATOR")] Incubator = 9,
-        [pbr::OriginalName("ITEM_TYPE_INCENSE")] Incense = 10,
-        [pbr::OriginalName("ITEM_TYPE_XP_BOOST")] XpBoost = 11,
-        [pbr::OriginalName("ITEM_TYPE_INVENTORY_UPGRADE")] InventoryUpgrade = 12,
-    }
-
-    public enum ItemCategory
-    {
-        [pbr::OriginalName("ITEM_CATEGORY_NONE")] None = 0,
-        [pbr::OriginalName("ITEM_CATEGORY_POKEBALL")] Pokeball = 1,
-        [pbr::OriginalName("ITEM_CATEGORY_FOOD")] Food = 2,
-        [pbr::OriginalName("ITEM_CATEGORY_MEDICINE")] Medicine = 3,
-        [pbr::OriginalName("ITEM_CATEGORY_BOOST")] Boost = 4,
-        [pbr::OriginalName("ITEM_CATEGORY_UTILITES")] Utilites = 5,
-        [pbr::OriginalName("ITEM_CATEGORY_CAMERA")] Camera = 6,
-        [pbr::OriginalName("ITEM_CATEGORY_DISK")] Disk = 7,
-        [pbr::OriginalName("ITEM_CATEGORY_INCUBATOR")] Incubator = 8,
-        [pbr::OriginalName("ITEM_CATEGORY_INCENSE")] Incense = 9,
-        [pbr::OriginalName("ITEM_CATEGORY_XP_BOOST")] XpBoost = 10,
-        [pbr::OriginalName("ITEM_CATEGORY_INVENTORY_UPGRADE")] InventoryUpgrade = 11,
-    }
-
-    public enum ItemEffect
-    {
-        [pbr::OriginalName("ITEM_EFFECT_NONE")] None = 0,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_NO_FLEE")] CapNoFlee = 1000,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_NO_MOVEMENT")] CapNoMovement = 1002,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_NO_THREAT")] CapNoThreat = 1003,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_TARGET_MAX")] CapTargetMax = 1004,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_TARGET_SLOW")] CapTargetSlow = 1005,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_NIGHT")] CapChanceNight = 1006,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_TRAINER")] CapChanceTrainer = 1007,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_FIRST_THROW")] CapChanceFirstThrow = 1008,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_LEGEND")] CapChanceLegend = 1009,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_HEAVY")] CapChanceHeavy = 1010,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_REPEAT")] CapChanceRepeat = 1011,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_MULTI_THROW")] CapChanceMultiThrow = 1012,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_ALWAYS")] CapChanceAlways = 1013,
-        [pbr::OriginalName("ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW")] CapChanceSingleThrow = 1014,
-    }
-
-    public enum ActivityType
-    {
-        [pbr::OriginalName("ACTIVITY_UNKNOWN")] ActivityUnknown = 0,
-        [pbr::OriginalName("ACTIVITY_CATCH_POKEMON")] ActivityCatchPokemon = 1,
-        [pbr::OriginalName("ACTIVITY_CATCH_LEGEND_POKEMON")] ActivityCatchLegendPokemon = 2,
-        [pbr::OriginalName("ACTIVITY_FLEE_POKEMON")] ActivityFleePokemon = 3,
-        [pbr::OriginalName("ACTIVITY_DEFEAT_FORT")] ActivityDefeatFort = 4,
-        [pbr::OriginalName("ACTIVITY_EVOLVE_POKEMON")] ActivityEvolvePokemon = 5,
-        [pbr::OriginalName("ACTIVITY_HATCH_EGG")] ActivityHatchEgg = 6,
-        [pbr::OriginalName("ACTIVITY_WALK_KM")] ActivityWalkKm = 7,
-        [pbr::OriginalName("ACTIVITY_POKEDEX_ENTRY_NEW")] ActivityPokedexEntryNew = 8,
-        [pbr::OriginalName("ACTIVITY_CATCH_FIRST_THROW")] ActivityCatchFirstThrow = 9,
-        [pbr::OriginalName("ACTIVITY_CATCH_NICE_THROW")] ActivityCatchNiceThrow = 10,
-        [pbr::OriginalName("ACTIVITY_CATCH_GREAT_THROW")] ActivityCatchGreatThrow = 11,
-        [pbr::OriginalName("ACTIVITY_CATCH_EXCELLENT_THROW")] ActivityCatchExcellentThrow = 12,
-        [pbr::OriginalName("ACTIVITY_CATCH_CURVEBALL")] ActivityCatchCurveball = 13,
-        [pbr::OriginalName("ACTIVITY_CATCH_FIRST_CATCH_OF_DAY")] ActivityCatchFirstCatchOfDay = 14,
-        [pbr::OriginalName("ACTIVITY_CATCH_MILESTONE")] ActivityCatchMilestone = 15,
-        [pbr::OriginalName("ACTIVITY_TRAIN_POKEMON")] ActivityTrainPokemon = 16,
-        [pbr::OriginalName("ACTIVITY_SEARCH_FORT")] ActivitySearchFort = 17,
-        [pbr::OriginalName("ACTIVITY_RELEASE_POKEMON")] ActivityReleasePokemon = 18,
-        [pbr::OriginalName("ACTIVITY_HATCH_EGG_SMALL_BONUS")] ActivityHatchEggSmallBonus = 19,
-        [pbr::OriginalName("ACTIVITY_HATCH_EGG_MEDIUM_BONUS")] ActivityHatchEggMediumBonus = 20,
-        [pbr::OriginalName("ACTIVITY_HATCH_EGG_LARGE_BONUS")] ActivityHatchEggLargeBonus = 21,
-        [pbr::OriginalName("ACTIVITY_DEFEAT_GYM_DEFENDER")] ActivityDefeatGymDefender = 22,
-        [pbr::OriginalName("ACTIVITY_DEFEAT_GYM_LEADER")] ActivityDefeatGymLeader = 23,
-    }
-
-    public enum BadgeType
-    {
-        [pbr::OriginalName("BADGE_UNSET")] BadgeUnset = 0,
-        [pbr::OriginalName("BADGE_TRAVEL_KM")] BadgeTravelKm = 1,
-        [pbr::OriginalName("BADGE_POKEDEX_ENTRIES")] BadgePokedexEntries = 2,
-        [pbr::OriginalName("BADGE_CAPTURE_TOTAL")] BadgeCaptureTotal = 3,
-        [pbr::OriginalName("BADGE_DEFEATED_FORT")] BadgeDefeatedFort = 4,
-        [pbr::OriginalName("BADGE_EVOLVED_TOTAL")] BadgeEvolvedTotal = 5,
-        [pbr::OriginalName("BADGE_HATCHED_TOTAL")] BadgeHatchedTotal = 6,
-        [pbr::OriginalName("BADGE_ENCOUNTERED_TOTAL")] BadgeEncounteredTotal = 7,
-        [pbr::OriginalName("BADGE_POKESTOPS_VISITED")] BadgePokestopsVisited = 8,
-        [pbr::OriginalName("BADGE_UNIQUE_POKESTOPS")] BadgeUniquePokestops = 9,
-        [pbr::OriginalName("BADGE_POKEBALL_THROWN")] BadgePokeballThrown = 10,
-        [pbr::OriginalName("BADGE_BIG_MAGIKARP")] BadgeBigMagikarp = 11,
-        [pbr::OriginalName("BADGE_DEPLOYED_TOTAL")] BadgeDeployedTotal = 12,
-        [pbr::OriginalName("BADGE_BATTLE_ATTACK_WON")] BadgeBattleAttackWon = 13,
-        [pbr::OriginalName("BADGE_BATTLE_TRAINING_WON")] BadgeBattleTrainingWon = 14,
-        [pbr::OriginalName("BADGE_BATTLE_DEFEND_WON")] BadgeBattleDefendWon = 15,
-        [pbr::OriginalName("BADGE_PRESTIGE_RAISED")] BadgePrestigeRaised = 16,
-        [pbr::OriginalName("BADGE_PRESTIGE_DROPPED")] BadgePrestigeDropped = 17,
-        [pbr::OriginalName("BADGE_TYPE_NORMAL")] Normal = 18,
-        [pbr::OriginalName("BADGE_TYPE_FIGHTING")] Fighting = 19,
-        [pbr::OriginalName("BADGE_TYPE_FLYING")] Flying = 20,
-        [pbr::OriginalName("BADGE_TYPE_POISON")] Poison = 21,
-        [pbr::OriginalName("BADGE_TYPE_GROUND")] Ground = 22,
-        [pbr::OriginalName("BADGE_TYPE_ROCK")] Rock = 23,
-        [pbr::OriginalName("BADGE_TYPE_BUG")] Bug = 24,
-        [pbr::OriginalName("BADGE_TYPE_GHOST")] Ghost = 25,
-        [pbr::OriginalName("BADGE_TYPE_STEEL")] Steel = 26,
-        [pbr::OriginalName("BADGE_TYPE_FIRE")] Fire = 27,
-        [pbr::OriginalName("BADGE_TYPE_WATER")] Water = 28,
-        [pbr::OriginalName("BADGE_TYPE_GRASS")] Grass = 29,
-        [pbr::OriginalName("BADGE_TYPE_ELECTRIC")] Electric = 30,
-        [pbr::OriginalName("BADGE_TYPE_PSYCHIC")] Psychic = 31,
-        [pbr::OriginalName("BADGE_TYPE_ICE")] Ice = 32,
-        [pbr::OriginalName("BADGE_TYPE_DRAGON")] Dragon = 33,
-        [pbr::OriginalName("BADGE_TYPE_DARK")] Dark = 34,
-        [pbr::OriginalName("BADGE_TYPE_FAIRY")] Fairy = 35,
-        [pbr::OriginalName("BADGE_SMALL_RATTATA")] BadgeSmallRattata = 36,
-        [pbr::OriginalName("BADGE_PIKACHU")] BadgePikachu = 37,
-    }
-
-    public enum HoloIapItemCategory
-    {
-        [pbr::OriginalName("IAP_CATEGORY_NONE")] IapCategoryNone = 0,
-        [pbr::OriginalName("IAP_CATEGORY_BUNDLE")] IapCategoryBundle = 1,
-        [pbr::OriginalName("IAP_CATEGORY_ITEMS")] IapCategoryItems = 2,
-        [pbr::OriginalName("IAP_CATEGORY_UPGRADES")] IapCategoryUpgrades = 3,
-        [pbr::OriginalName("IAP_CATEGORY_POKECOINS")] IapCategoryPokecoins = 4,
-    }
-
-    public enum CameraInterpolation
-    {
-        [pbr::OriginalName("CAM_INTERP_CUT")] CamInterpCut = 0,
-        [pbr::OriginalName("CAM_INTERP_LINEAR")] CamInterpLinear = 1,
-        [pbr::OriginalName("CAM_INTERP_SMOOTH")] CamInterpSmooth = 2,
-        [pbr::OriginalName("CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE")] CamInterpSmoothRotLinearMove = 3,
-        [pbr::OriginalName("CAM_INTERP_DEPENDS")] CamInterpDepends = 4,
-    }
-
-    public enum CameraTarget
-    {
-        [pbr::OriginalName("CAM_TARGET_ATTACKER")] CamTargetAttacker = 0,
-        [pbr::OriginalName("CAM_TARGET_ATTACKER_EDGE")] CamTargetAttackerEdge = 1,
-        [pbr::OriginalName("CAM_TARGET_ATTACKER_GROUND")] CamTargetAttackerGround = 2,
-        [pbr::OriginalName("CAM_TARGET_DEFENDER")] CamTargetDefender = 3,
-        [pbr::OriginalName("CAM_TARGET_DEFENDER_EDGE")] CamTargetDefenderEdge = 4,
-        [pbr::OriginalName("CAM_TARGET_DEFENDER_GROUND")] CamTargetDefenderGround = 5,
-        [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER")] CamTargetAttackerDefender = 6,
-        [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER_EDGE")] CamTargetAttackerDefenderEdge = 7,
-        [pbr::OriginalName("CAM_TARGET_DEFENDER_ATTACKER")] CamTargetDefenderAttacker = 8,
-        [pbr::OriginalName("CAM_TARGET_DEFENDER_ATTACKER_EDGE")] CamTargetDefenderAttackerEdge = 9,
-        [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER_MIRROR")] CamTargetAttackerDefenderMirror = 11,
-        [pbr::OriginalName("CAM_TARGET_SHOULDER_ATTACKER_DEFENDER")] CamTargetShoulderAttackerDefender = 12,
-        [pbr::OriginalName("CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR")] CamTargetShoulderAttackerDefenderMirror = 13,
-        [pbr::OriginalName("CAM_TARGET_ATTACKER_DEFENDER_WORLD")] CamTargetAttackerDefenderWorld = 14,
-    }
-
-    public enum PokemonType
-    {
-        [pbr::OriginalName("POKEMON_TYPE_NONE")] None = 0,
-        [pbr::OriginalName("POKEMON_TYPE_NORMAL")] Normal = 1,
-        [pbr::OriginalName("POKEMON_TYPE_FIGHTING")] Fighting = 2,
-        [pbr::OriginalName("POKEMON_TYPE_FLYING")] Flying = 3,
-        [pbr::OriginalName("POKEMON_TYPE_POISON")] Poison = 4,
-        [pbr::OriginalName("POKEMON_TYPE_GROUND")] Ground = 5,
-        [pbr::OriginalName("POKEMON_TYPE_ROCK")] Rock = 6,
-        [pbr::OriginalName("POKEMON_TYPE_BUG")] Bug = 7,
-        [pbr::OriginalName("POKEMON_TYPE_GHOST")] Ghost = 8,
-        [pbr::OriginalName("POKEMON_TYPE_STEEL")] Steel = 9,
-        [pbr::OriginalName("POKEMON_TYPE_FIRE")] Fire = 10,
-        [pbr::OriginalName("POKEMON_TYPE_WATER")] Water = 11,
-        [pbr::OriginalName("POKEMON_TYPE_GRASS")] Grass = 12,
-        [pbr::OriginalName("POKEMON_TYPE_ELECTRIC")] Electric = 13,
-        [pbr::OriginalName("POKEMON_TYPE_PSYCHIC")] Psychic = 14,
-        [pbr::OriginalName("POKEMON_TYPE_ICE")] Ice = 15,
-        [pbr::OriginalName("POKEMON_TYPE_DRAGON")] Dragon = 16,
-        [pbr::OriginalName("POKEMON_TYPE_DARK")] Dark = 17,
-        [pbr::OriginalName("POKEMON_TYPE_FAIRY")] Fairy = 18,
-    }
-
-    public enum PokemonMovementType
-    {
-        [pbr::OriginalName("MOVEMENT_STATIC")] MovementStatic = 0,
-        [pbr::OriginalName("MOVEMENT_JUMP")] MovementJump = 1,
-        [pbr::OriginalName("MOVEMENT_VERTICAL")] MovementVertical = 2,
-        [pbr::OriginalName("MOVEMENT_PSYCHIC")] MovementPsychic = 3,
-        [pbr::OriginalName("MOVEMENT_ELECTRIC")] MovementElectric = 4,
-        [pbr::OriginalName("MOVEMENT_FLYING")] MovementFlying = 5,
-        [pbr::OriginalName("MOVEMENT_HOVERING")] MovementHovering = 6,
-    }
-
-    public enum PokemonClass
-    {
-        [pbr::OriginalName("NORMAL")] Normal = 0,
-        [pbr::OriginalName("LEGENDARY")] Legendary = 1,
-        [pbr::OriginalName("MYTHIC")] Mythic = 2,
-    }
-
-    #endregion
-}
-
-#endregion Designer generated code
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs b/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
deleted file mode 100644
index 589c206..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/Payloads.cs
+++ /dev/null
@@ -1,27702 +0,0 @@
-#pragma warning disable 1591, 0612, 3021
-
-#region Designer generated code
-
-#region
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.GeneratedCode
-{
-    /// <summary>Holder for reflection information generated from Payloads.proto</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class PayloadsReflection
-    {
-        #region Descriptor
-
-        /// <summary>File descriptor for Payloads.proto</summary>
-        public static pbr::FileDescriptor Descriptor
-        {
-            get { return descriptor; }
-        }
-
-        private static pbr::FileDescriptor descriptor;
-
-        static PayloadsReflection()
-        {
-            var descriptorData = global::System.Convert.FromBase64String(
-                string.Concat(
-                    "Cg5QYXlsb2Fkcy5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0",
-                    "ZWRDb2RlGg1BbGxFbnVtLnByb3RvImIKEUdldFBsYXllclJlc3BvbnNlEhAK",
-                    "CHVua25vd24xGAEgASgFEjsKB3Byb2ZpbGUYAiABKAsyKi5Qb2tlbW9uR28u",
-                    "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUHJvZmlsZSL9AgoHUHJvZmlsZRIV",
-                    "Cg1jcmVhdGlvbl90aW1lGAEgASgDEhAKCHVzZXJuYW1lGAIgASgJEiAKBHRl",
-                    "YW0YBSABKA4yEi5BbGxFbnVtLlRlYW1Db2xvchIQCgh0dXRvcmlhbBgHIAEo",
-                    "DBJACgZhdmF0YXIYCCABKAsyMC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVy",
-                    "YXRlZENvZGUuQXZhdGFyRGV0YWlscxIUCgxwb2tlX3N0b3JhZ2UYCSABKAUS",
-                    "FAoMaXRlbV9zdG9yYWdlGAogASgFEkIKC2RhaWx5X2JvbnVzGAsgASgLMi0u",
-                    "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkRhaWx5Qm9udXMS",
-                    "EQoJdW5rbm93bjEyGAwgASgMEhEKCXVua25vd24xMxgNIAEoDBI9CghjdXJy",
-                    "ZW5jeRgOIAMoCzIrLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
-                    "ZS5DdXJyZW5jeSJZCgpEYWlseUJvbnVzEh4KFk5leHRDb2xsZWN0VGltZXN0",
-                    "YW1wTXMYASABKAMSKwojTmV4dERlZmVuZGVyQm9udXNDb2xsZWN0VGltZXN0",
-                    "YW1wTXMYAiABKAMiKAoIQ3VycmVuY3kSDAoEdHlwZRgBIAEoCRIOCgZhbW91",
-                    "bnQYAiABKAUiWAoNQXZhdGFyRGV0YWlscxIQCgh1bmtub3duMhgCIAEoBRIQ",
-                    "Cgh1bmtub3duMxgDIAEoBRIQCgh1bmtub3duORgJIAEoBRIRCgl1bmtub3du",
-                    "MTAYCiABKAUiJwoXRG93bmxvYWRTZXR0aW5nc1JlcXVlc3QSDAoEaGFzaBgB",
-                    "IAEoCSJzChRHZXRJbnZlbnRvcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgI",
-                    "EkoKD2ludmVudG9yeV9kZWx0YRgCIAEoCzIxLlBva2Vtb25Hby5Sb2NrZXRB",
-                    "UEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlEZWx0YSKUAQoOSW52ZW50b3J5",
-                    "RGVsdGESHQoVb3JpZ2luYWxfdGltZXN0YW1wX21zGAEgASgDEhgKEG5ld190",
-                    "aW1lc3RhbXBfbXMYAiABKAMSSQoPaW52ZW50b3J5X2l0ZW1zGAMgAygLMjAu",
-                    "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeUl0",
-                    "ZW0imwEKDUludmVudG9yeUl0ZW0SHQoVbW9kaWZpZWRfdGltZXN0YW1wX21z",
-                    "GAEgASgDEhgKEGRlbGV0ZWRfaXRlbV9rZXkYAiABKAMSUQoTaW52ZW50b3J5",
-                    "X2l0ZW1fZGF0YRgDIAEoCzI0LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJh",
-                    "dGVkQ29kZS5JbnZlbnRvcnlJdGVtRGF0YSLbBQoRSW52ZW50b3J5SXRlbURh",
-                    "dGESPwoHcG9rZW1vbhgBIAEoCzIuLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
-                    "ZXJhdGVkQ29kZS5Qb2tlbW9uRGF0YRI1CgRpdGVtGAIgASgLMicuUG9rZW1v",
-                    "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkl0ZW0SRgoNcG9rZWRleF9l",
-                    "bnRyeRgDIAEoCzIvLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
-                    "ZS5Qb2tlZGV4RW50cnkSRAoMcGxheWVyX3N0YXRzGAQgASgLMi4uUG9rZW1v",
-                    "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBsYXllclN0YXRzEkoKD3Bs",
-                    "YXllcl9jdXJyZW5jeRgFIAEoCzIxLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
-                    "ZXJhdGVkQ29kZS5QbGF5ZXJDdXJyZW5jeRJGCg1wbGF5ZXJfY2FtZXJhGAYg",
-                    "ASgLMi8uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBsYXll",
-                    "ckNhbWVyYRJQChJpbnZlbnRvcnlfdXBncmFkZXMYByABKAsyNC5Qb2tlbW9u",
-                    "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5VXBncmFkZXMS",
-                    "RgoNYXBwbGllZF9pdGVtcxgIIAEoCzIvLlBva2Vtb25Hby5Sb2NrZXRBUEku",
-                    "R2VuZXJhdGVkQ29kZS5BcHBsaWVkSXRlbXMSSAoOZWdnX2luY3ViYXRvcnMY",
-                    "CSABKAsyMC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRWdn",
-                    "SW5jdWJhdG9ycxJICg5wb2tlbW9uX2ZhbWlseRgKIAEoCzIwLlBva2Vtb25H",
-                    "by5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5Qb2tlbW9uRmFtaWx5ItgFCgdQ",
-                    "b2tlbW9uEgoKAmlkGAEgASgFEigKDHBva2Vtb25fdHlwZRgCIAEoDjISLkFs",
-                    "bEVudW0uUG9rZW1vbklkEgoKAmNwGAMgASgFEg8KB3N0YW1pbmEYBCABKAUS",
-                    "EwoLc3RhbWluYV9tYXgYBSABKAUSJAoGbW92ZV8xGAYgASgOMhQuQWxsRW51",
-                    "bS5Qb2tlbW9uTW92ZRIkCgZtb3ZlXzIYByABKA4yFC5BbGxFbnVtLlBva2Vt",
-                    "b25Nb3ZlEhgKEGRlcGxveWVkX2ZvcnRfaWQYCCABKAUSEgoKb3duZXJfbmFt",
-                    "ZRgJIAEoCRIOCgZpc19lZ2cYCiABKAgSHAoUZWdnX2ttX3dhbGtlZF90YXJn",
-                    "ZXQYCyABKAUSGwoTZWdnX2ttX3dhbGtlZF9zdGFydBgMIAEoBRIOCgZvcmln",
-                    "aW4YDiABKAUSEAoIaGVpZ2h0X20YDyABKAISEQoJd2VpZ2h0X2tnGBAgASgC",
-                    "EhkKEWluZGl2aWR1YWxfYXR0YWNrGBEgASgFEhoKEmluZGl2aWR1YWxfZGVm",
-                    "ZW5zZRgSIAEoBRIaChJpbmRpdmlkdWFsX3N0YW1pbmEYEyABKAUSFQoNY3Bf",
-                    "bXVsdGlwbGllchgUIAEoBRIQCghwb2tlYmFsbBgVIAEoBRIYChBjYXB0dXJl",
-                    "ZF9jZWxsX2lkGBYgASgEEhgKEGJhdHRsZXNfYXR0YWNrZWQYFyABKAUSGAoQ",
-                    "YmF0dGxlc19kZWZlbmRlZBgYIAEoBRIYChBlZ2dfaW5jdWJhdG9yX2lkGBkg",
-                    "ASgFEhgKEGNyZWF0aW9uX3RpbWVfbXMYGiABKAQSFAoMbnVtX3VwZ3JhZGVz",
-                    "GBsgASgFEiAKGGFkZGl0aW9uYWxfY3BfbXVsdGlwbGllchgcIAEoBRIQCghm",
-                    "YXZvcml0ZRgdIAEoBRIQCghuaWNrbmFtZRgeIAEoCRIRCglmcm9tX2ZvcnQY",
-                    "HyABKAUiRgoESXRlbRIfCgRpdGVtGAEgASgOMhEuQWxsRW51bS5JdGVtVHlw",
-                    "ZRINCgVjb3VudBgCIAEoBRIOCgZ1bnNlZW4YAyABKAgimQEKDFBva2VkZXhF",
-                    "bnRyeRIcChRwb2tlZGV4X2VudHJ5X251bWJlchgBIAEoBRIZChF0aW1lc19l",
-                    "bmNvdW50ZXJlZBgCIAEoBRIWCg50aW1lc19jYXB0dXJlZBgDIAEoBRIeChZl",
-                    "dm9sdXRpb25fc3RvbmVfcGllY2VzGAQgASgFEhgKEGV2b2x1dGlvbl9zdG9u",
-                    "ZXMYBSABKAUi7QQKC1BsYXllclN0YXRzEg0KBWxldmVsGAEgASgFEhIKCmV4",
-                    "cGVyaWVuY2UYAiABKAMSFQoNcHJldl9sZXZlbF94cBgDIAEoAxIVCg1uZXh0",
-                    "X2xldmVsX3hwGAQgASgDEhEKCWttX3dhbGtlZBgFIAEoAhIcChRwb2tlbW9u",
-                    "c19lbmNvdW50ZXJlZBgGIAEoBRIeChZ1bmlxdWVfcG9rZWRleF9lbnRyaWVz",
-                    "GAcgASgFEhkKEXBva2Vtb25zX2NhcHR1cmVkGAggASgFEhIKCmV2b2x1dGlv",
-                    "bnMYCSABKAUSGAoQcG9rZV9zdG9wX3Zpc2l0cxgKIAEoBRIYChBwb2tlYmFs",
-                    "bHNfdGhyb3duGAsgASgFEhQKDGVnZ3NfaGF0Y2hlZBgMIAEoBRIbChNiaWdf",
-                    "bWFnaWthcnBfY2F1Z2h0GA0gASgFEhkKEWJhdHRsZV9hdHRhY2tfd29uGA4g",
-                    "ASgFEhsKE2JhdHRsZV9hdHRhY2tfdG90YWwYDyABKAUSGwoTYmF0dGxlX2Rl",
-                    "ZmVuZGVkX3dvbhgQIAEoBRIbChNiYXR0bGVfdHJhaW5pbmdfd29uGBEgASgF",
-                    "Eh0KFWJhdHRsZV90cmFpbmluZ190b3RhbBgSIAEoBRIdChVwcmVzdGlnZV9y",
-                    "YWlzZWRfdG90YWwYEyABKAUSHgoWcHJlc3RpZ2VfZHJvcHBlZF90b3RhbBgU",
-                    "IAEoBRIYChBwb2tlbW9uX2RlcGxveWVkGBUgASgFEh4KFnBva2Vtb25fY2F1",
-                    "Z2h0X2J5X3R5cGUYFiABKAwSHAoUc21hbGxfcmF0dGF0YV9jYXVnaHQYFyAB",
-                    "KAUiHgoOUGxheWVyQ3VycmVuY3kSDAoEZ2VtcxgBIAEoBSIpCgxQbGF5ZXJD",
-                    "YW1lcmESGQoRaXNfZGVmYXVsdF9jYW1lcmEYASABKAgiZAoRSW52ZW50b3J5",
-                    "VXBncmFkZXMSTwoSaW52ZW50b3J5X3VwZ3JhZGVzGAEgAygLMjMuUG9rZW1v",
-                    "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVVwZ3JhZGUi",
-                    "hAEKEEludmVudG9yeVVwZ3JhZGUSHwoEaXRlbRgBIAEoDjIRLkFsbEVudW0u",
-                    "SXRlbVR5cGUSMwoMdXBncmFkZV90eXBlGAIgASgOMh0uQWxsRW51bS5JbnZl",
-                    "bnRvcnlVcGdyYWRlVHlwZRIaChJhZGRpdGlvbmFsX3N0b3JhZ2UYAyABKAUi",
-                    "TAoMQXBwbGllZEl0ZW1zEjwKBGl0ZW0YBCABKAsyLi5Qb2tlbW9uR28uUm9j",
-                    "a2V0QVBJLkdlbmVyYXRlZENvZGUuQXBwbGllZEl0ZW0ihwEKC0FwcGxpZWRJ",
-                    "dGVtEiIKCWl0ZW1fdHlwZRgBIAEoDjIPLkFsbEVudW0uSXRlbUlkEi0KEml0",
-                    "ZW1fdHlwZV9jYXRlZ29yeRgCIAEoDjIRLkFsbEVudW0uSXRlbVR5cGUSEQoJ",
-                    "ZXhwaXJlX21zGAMgASgDEhIKCmFwcGxpZWRfbXMYBCABKAMiVwoNRWdnSW5j",
-                    "dWJhdG9ycxJGCg1lZ2dfaW5jdWJhdG9yGAEgASgLMi8uUG9rZW1vbkdvLlJv",
-                    "Y2tldEFQSS5HZW5lcmF0ZWRDb2RlLkVnZ0luY3ViYXRvciLXAQoMRWdnSW5j",
-                    "dWJhdG9yEg8KB2l0ZW1faWQYASABKAkSJAoJaXRlbV90eXBlGAIgASgOMhEu",
-                    "QWxsRW51bS5JdGVtVHlwZRIxCg5pbmN1YmF0b3JfdHlwZRgDIAEoDjIZLkFs",
-                    "bEVudW0uRWdnSW5jdWJhdG9yVHlwZRIWCg51c2VzX3JlbWFpbmluZxgEIAEo",
-                    "BRISCgpwb2tlbW9uX2lkGAUgASgDEhcKD3N0YXJ0X2ttX3dhbGtlZBgGIAEo",
-                    "ARIYChB0YXJnZXRfa21fd2Fsa2VkGAcgASgBIksKDVBva2Vtb25GYW1pbHkS",
-                    "KwoJZmFtaWx5X2lkGAEgASgOMhguQWxsRW51bS5Qb2tlbW9uRmFtaWx5SWQS",
-                    "DQoFY2FuZHkYAiABKAUiaAoUR2V0TWFwT2JqZWN0c1JlcXVlc3QSDwoHY2Vs",
-                    "bF9pZBgBIAEoDBIaChJzaW5jZV90aW1lc3RhbXBfbXMYAiABKAwSEAoIbGF0",
-                    "aXR1ZGUYAyABKAESEQoJbG9uZ2l0dWRlGAQgASgBIoEBChVHZXRNYXBPYmpl",
-                    "Y3RzUmVzcG9uc2USPQoJbWFwX2NlbGxzGAEgAygLMiouUG9rZW1vbkdvLlJv",
-                    "Y2tldEFQSS5HZW5lcmF0ZWRDb2RlLk1hcENlbGwSKQoGc3RhdHVzGAIgASgO",
-                    "MhkuQWxsRW51bS5NYXBPYmplY3RzU3RhdHVzIuQECgdNYXBDZWxsEhIKCnMy",
-                    "X2NlbGxfaWQYASABKAQSHAoUY3VycmVudF90aW1lc3RhbXBfbXMYAiABKAMS",
-                    "OgoFZm9ydHMYAyADKAsyKy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUuRm9ydERhdGESQwoMc3Bhd25fcG9pbnRzGAQgAygLMi0uUG9rZW1v",
-                    "bkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlNwYXduUG9pbnQSFwoPZGVs",
-                    "ZXRlZF9vYmplY3RzGAYgAygJEhkKEWlzX3RydW5jYXRlZF9saXN0GAcgASgI",
-                    "EkYKDmZvcnRfc3VtbWFyaWVzGAggAygLMi4uUG9rZW1vbkdvLlJvY2tldEFQ",
-                    "SS5HZW5lcmF0ZWRDb2RlLkZvcnRTdW1tYXJ5Ek0KFmRlY2ltYXRlZF9zcGF3",
-                    "bl9wb2ludHMYCSADKAsyLS5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUuU3Bhd25Qb2ludBJFCg13aWxkX3Bva2Vtb25zGAUgAygLMi4uUG9r",
-                    "ZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLldpbGRQb2tlbW9uEkkK",
-                    "EmNhdGNoYWJsZV9wb2tlbW9ucxgKIAMoCzItLlBva2Vtb25Hby5Sb2NrZXRB",
-                    "UEkuR2VuZXJhdGVkQ29kZS5NYXBQb2tlbW9uEkkKD25lYXJieV9wb2tlbW9u",
-                    "cxgLIAMoCzIwLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5O",
-                    "ZWFyYnlQb2tlbW9uIpMECghGb3J0RGF0YRIKCgJpZBgBIAEoCRIiChpsYXN0",
-                    "X21vZGlmaWVkX3RpbWVzdGFtcF9tcxgCIAEoAxIQCghsYXRpdHVkZRgDIAEo",
-                    "ARIRCglsb25naXR1ZGUYBCABKAESDwoHZW5hYmxlZBgIIAEoCBIfCgR0eXBl",
-                    "GAkgASgOMhEuQWxsRW51bS5Gb3J0VHlwZRIpCg1vd25lZF9ieV90ZWFtGAUg",
-                    "ASgOMhIuQWxsRW51bS5UZWFtQ29sb3ISLAoQZ3VhcmRfcG9rZW1vbl9pZBgG",
-                    "IAEoDjISLkFsbEVudW0uUG9rZW1vbklkEhgKEGd1YXJkX3Bva2Vtb25fY3AY",
-                    "ByABKAUSEgoKZ3ltX3BvaW50cxgKIAEoAxIUCgxpc19pbl9iYXR0bGUYCyAB",
-                    "KAgSJgoeY29vbGRvd25fY29tcGxldGVfdGltZXN0YW1wX21zGA4gASgDEiUK",
-                    "B3Nwb25zb3IYDyABKA4yFC5BbGxFbnVtLkZvcnRTcG9uc29yEjIKDnJlbmRl",
-                    "cmluZ190eXBlGBAgASgOMhouQWxsRW51bS5Gb3J0UmVuZGVyaW5nVHlwZRIc",
-                    "ChRhY3RpdmVfZm9ydF9tb2RpZmllchgMIAEoDBJCCglsdXJlX2luZm8YDSAB",
-                    "KAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9ydEx1",
-                    "cmVJbmZvIoMBCgxGb3J0THVyZUluZm8SDwoHZm9ydF9pZBgBIAEoCRIQCgh1",
-                    "bmtub3duMhgCIAEoARItChFhY3RpdmVfcG9rZW1vbl9pZBgDIAEoDjISLkFs",
-                    "bEVudW0uUG9rZW1vbklkEiEKGWx1cmVfZXhwaXJlc190aW1lc3RhbXBfbXMY",
-                    "BCABKAMiMQoKU3Bhd25Qb2ludBIQCghsYXRpdHVkZRgCIAEoARIRCglsb25n",
-                    "aXR1ZGUYAyABKAEibwoLRm9ydFN1bW1hcnkSFwoPZm9ydF9zdW1tYXJ5X2lk",
-                    "GAEgASgFEiIKGmxhc3RfbW9kaWZpZWRfdGltZXN0YW1wX21zGAIgASgFEhAK",
-                    "CGxhdGl0dWRlGAMgASgFEhEKCWxvbmdpdHVkZRgEIAEoBSLmAQoLV2lsZFBv",
-                    "a2Vtb24SFAoMZW5jb3VudGVyX2lkGAEgASgGEiIKGmxhc3RfbW9kaWZpZWRf",
-                    "dGltZXN0YW1wX21zGAIgASgDEhAKCGxhdGl0dWRlGAMgASgBEhEKCWxvbmdp",
-                    "dHVkZRgEIAEoARIVCg1zcGF3bnBvaW50X2lkGAUgASgJEkQKDHBva2Vtb25f",
-                    "ZGF0YRgHIAEoCzIuLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
-                    "ZS5Qb2tlbW9uRGF0YRIbChN0aW1lX3RpbGxfaGlkZGVuX21zGAsgASgFItoF",
-                    "CgtQb2tlbW9uRGF0YRIKCgJpZBgBIAEoBhImCgpwb2tlbW9uX2lkGAIgASgO",
-                    "MhIuQWxsRW51bS5Qb2tlbW9uSWQSCgoCY3AYAyABKAUSDwoHc3RhbWluYRgE",
-                    "IAEoBRITCgtzdGFtaW5hX21heBgFIAEoBRIkCgZtb3ZlXzEYBiABKA4yFC5B",
-                    "bGxFbnVtLlBva2Vtb25Nb3ZlEiQKBm1vdmVfMhgHIAEoDjIULkFsbEVudW0u",
-                    "UG9rZW1vbk1vdmUSGAoQZGVwbG95ZWRfZm9ydF9pZBgIIAEoBRISCgpvd25l",
-                    "cl9uYW1lGAkgASgJEg4KBmlzX2VnZxgKIAEoCBIcChRlZ2dfa21fd2Fsa2Vk",
-                    "X3RhcmdldBgLIAEoBRIbChNlZ2dfa21fd2Fsa2VkX3N0YXJ0GAwgASgFEg4K",
-                    "Bm9yaWdpbhgOIAEoBRIQCghoZWlnaHRfbRgPIAEoAhIRCgl3ZWlnaHRfa2cY",
-                    "ECABKAISGQoRaW5kaXZpZHVhbF9hdHRhY2sYESABKAUSGgoSaW5kaXZpZHVh",
-                    "bF9kZWZlbnNlGBIgASgFEhoKEmluZGl2aWR1YWxfc3RhbWluYRgTIAEoBRIV",
-                    "Cg1jcF9tdWx0aXBsaWVyGBQgASgFEhAKCHBva2ViYWxsGBUgASgFEhgKEGNh",
-                    "cHR1cmVkX2NlbGxfaWQYFiABKAQSGAoQYmF0dGxlc19hdHRhY2tlZBgXIAEo",
-                    "BRIYChBiYXR0bGVzX2RlZmVuZGVkGBggASgFEhgKEGVnZ19pbmN1YmF0b3Jf",
-                    "aWQYGSABKAUSGAoQY3JlYXRpb25fdGltZV9tcxgaIAEoBBIUCgxudW1fdXBn",
-                    "cmFkZXMYGyABKAUSIAoYYWRkaXRpb25hbF9jcF9tdWx0aXBsaWVyGBwgASgF",
-                    "EhAKCGZhdm9yaXRlGB0gASgFEhAKCG5pY2tuYW1lGB4gASgJEhEKCWZyb21f",
-                    "Zm9ydBgfIAEoBSKnAQoKTWFwUG9rZW1vbhIVCg1zcGF3bnBvaW50X2lkGAEg",
-                    "ASgJEhQKDGVuY291bnRlcl9pZBgCIAEoBhImCgpwb2tlbW9uX2lkGAMgASgO",
-                    "MhIuQWxsRW51bS5Qb2tlbW9uSWQSHwoXZXhwaXJhdGlvbl90aW1lc3RhbXBf",
-                    "bXMYBCABKAMSEAoIbGF0aXR1ZGUYBSABKAESEQoJbG9uZ2l0dWRlGAYgASgB",
-                    "ImkKDU5lYXJieVBva2Vtb24SJgoKcG9rZW1vbl9pZBgBIAEoDjISLkFsbEVu",
-                    "dW0uUG9rZW1vbklkEhoKEmRpc3RhbmNlX2luX21ldGVycxgCIAEoAhIUCgxl",
-                    "bmNvdW50ZXJfaWQYAyABKAYifAoYRG93bmxvYWRTZXR0aW5nc1Jlc3BvbnNl",
-                    "Eg0KBWVycm9yGAEgASgJEgwKBGhhc2gYAiABKAkSQwoIc2V0dGluZ3MYAyAB",
-                    "KAsyMS5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuR2xvYmFs",
-                    "U2V0dGluZ3Mi2gIKDkdsb2JhbFNldHRpbmdzEkYKDWZvcnRfc2V0dGluZ3MY",
-                    "AiABKAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9y",
-                    "dFNldHRpbmdzEkQKDG1hcF9zZXR0aW5ncxgDIAEoCzIuLlBva2Vtb25Hby5S",
-                    "b2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5NYXBTZXR0aW5ncxJICg5sZXZlbF9z",
-                    "ZXR0aW5ncxgEIAEoCzIwLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-                    "Q29kZS5MZXZlbFNldHRpbmdzElAKEmludmVudG9yeV9zZXR0aW5ncxgFIAEo",
-                    "CzI0LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRv",
-                    "cnlTZXR0aW5ncxIeChZtaW5pbXVtX2NsaWVudF92ZXJzaW9uGAYgASgJIuQB",
-                    "CgxGb3J0U2V0dGluZ3MSIAoYaW50ZXJhY3Rpb25fcmFuZ2VfbWV0ZXJzGAEg",
-                    "ASgBEiIKGm1heF90b3RhbF9kZXBsb3llZF9wb2tlbW9uGAIgASgFEiMKG21h",
-                    "eF9wbGF5ZXJfZGVwbG95ZWRfcG9rZW1vbhgDIAEoBRIhChlkZXBsb3lfc3Rh",
-                    "bWluYV9tdWx0aXBsaWVyGAQgASgBEiAKGGRlcGxveV9hdHRhY2tfbXVsdGlw",
-                    "bGllchgFIAEoARIkChxmYXJfaW50ZXJhY3Rpb25fcmFuZ2VfbWV0ZXJzGAYg",
-                    "ASgBIo8CCgtNYXBTZXR0aW5ncxIdChVwb2tlbW9uX3Zpc2libGVfcmFuZ2UY",
-                    "ASABKAESHQoVcG9rZV9uYXZfcmFuZ2VfbWV0ZXJzGAIgASgBEh4KFmVuY291",
-                    "bnRlcl9yYW5nZV9tZXRlcnMYAyABKAESKwojZ2V0X21hcF9vYmplY3RzX21p",
-                    "bl9yZWZyZXNoX3NlY29uZHMYBCABKAISKwojZ2V0X21hcF9vYmplY3RzX21h",
-                    "eF9yZWZyZXNoX3NlY29uZHMYBSABKAISKwojZ2V0X21hcF9vYmplY3RzX21p",
-                    "bl9kaXN0YW5jZV9tZXRlcnMYBiABKAISGwoTZ29vZ2xlX21hcHNfYXBpX2tl",
-                    "eRgHIAEoCSJRCg1MZXZlbFNldHRpbmdzEhsKE3RyYWluZXJfY3BfbW9kaWZp",
-                    "ZXIYAiABKAESIwobdHJhaW5lcl9kaWZmaWN1bHR5X21vZGlmaWVyGAMgASgB",
-                    "IoABChFJbnZlbnRvcnlTZXR0aW5ncxITCgttYXhfcG9rZW1vbhgBIAEoBRIV",
-                    "Cg1tYXhfYmFnX2l0ZW1zGAIgASgFEhQKDGJhc2VfcG9rZW1vbhgDIAEoBRIW",
-                    "Cg5iYXNlX2JhZ19pdGVtcxgEIAEoBRIRCgliYXNlX2VnZ3MYBSABKAUiOgoT",
-                    "UGxheWVyVXBkYXRlUmVxdWVzdBIQCghsYXRpdHVkZRgBIAEoARIRCglsb25n",
-                    "aXR1ZGUYAiABKAEirwEKFFBsYXllclVwZGF0ZVJlc3BvbnNlEkUKDXdpbGRf",
-                    "cG9rZW1vbnMYASADKAsyLi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUuV2lsZFBva2Vtb24SOgoFZm9ydHMYAiADKAsyKy5Qb2tlbW9uR28u",
-                    "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9ydERhdGESFAoMZm9ydHNfbmVh",
-                    "cmJ5GAMgASgFIh4KHERvd25sb2FkSXRlbVRlbXBsYXRlc1JlcXVlc3Qi2woK",
-                    "HURvd25sb2FkSXRlbVRlbXBsYXRlc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASAB",
-                    "KAgSZQoOaXRlbV90ZW1wbGF0ZXMYAiADKAsyTS5Qb2tlbW9uR28uUm9ja2V0",
-                    "QVBJLkdlbmVyYXRlZENvZGUuRG93bmxvYWRJdGVtVGVtcGxhdGVzUmVzcG9u",
-                    "c2UuSXRlbVRlbXBsYXRlEhQKDHRpbWVzdGFtcF9tcxgDIAEoBBqrCQoMSXRl",
-                    "bVRlbXBsYXRlEhMKC3RlbXBsYXRlX2lkGAEgASgJEkwKEHBva2Vtb25fc2V0",
-                    "dGluZ3MYAiABKAsyMi5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
-                    "ZGUuUG9rZW1vblNldHRpbmdzEkYKDWl0ZW1fc2V0dGluZ3MYAyABKAsyLy5Q",
-                    "b2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSXRlbVNldHRpbmdz",
-                    "EkYKDW1vdmVfc2V0dGluZ3MYBCABKAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJ",
-                    "LkdlbmVyYXRlZENvZGUuTW92ZVNldHRpbmdzElcKFm1vdmVfc2VxdWVuY2Vf",
-                    "c2V0dGluZ3MYBSABKAsyNy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUuTW92ZVNlcXVlbmNlU2V0dGluZ3MSUAoOdHlwZV9lZmZlY3RpdmUY",
-                    "CCABKAsyOC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuVHlw",
-                    "ZUVmZmVjdGl2ZVNldHRpbmdzEkgKDmJhZGdlX3NldHRpbmdzGAogASgLMjAu",
-                    "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkJhZGdlU2V0dGlu",
-                    "Z3MSQQoGY2FtZXJhGAsgASgLMjEuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
-                    "cmF0ZWRDb2RlLkNhbWVyYVNldHRpbmdzEkwKDHBsYXllcl9sZXZlbBgMIAEo",
-                    "CzI2LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5QbGF5ZXJM",
-                    "ZXZlbFNldHRpbmdzEkYKCWd5bV9sZXZlbBgNIAEoCzIzLlBva2Vtb25Hby5S",
-                    "b2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5HeW1MZXZlbFNldHRpbmdzEk0KD2Jh",
-                    "dHRsZV9zZXR0aW5ncxgOIAEoCzI0LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
-                    "ZXJhdGVkQ29kZS5HeW1CYXR0bGVTZXR0aW5ncxJQChJlbmNvdW50ZXJfc2V0",
-                    "dGluZ3MYDyABKAsyNC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
-                    "ZGUuRW5jb3VudGVyU2V0dGluZ3MSSwoQaWFwX2l0ZW1fZGlzcGxheRgQIAEo",
-                    "CzIxLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JYXBJdGVt",
-                    "RGlzcGxheRJECgxpYXBfc2V0dGluZ3MYESABKAsyLi5Qb2tlbW9uR28uUm9j",
-                    "a2V0QVBJLkdlbmVyYXRlZENvZGUuSWFwU2V0dGluZ3MSUwoQcG9rZW1vbl91",
-                    "cGdyYWRlcxgSIAEoCzI5LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-                    "Q29kZS5Qb2tlbW9uVXBncmFkZVNldHRpbmdzElEKD2VxdWlwcGVkX2JhZGdl",
-                    "cxgTIAEoCzI4LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5F",
-                    "cXVpcHBlZEJhZGdlU2V0dGluZ3MiaQoVVXNlSXRlbUNhcHR1cmVSZXF1ZXN0",
-                    "EiAKB2l0ZW1faWQYASABKA4yDy5BbGxFbnVtLkl0ZW1JZBIUCgxlbmNvdW50",
-                    "ZXJfaWQYAiABKAYSGAoQc3Bhd25fcG9pbnRfZ3VpZBgDIAEoCSKxAQoWVXNl",
-                    "SXRlbUNhcHR1cmVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKEWl0ZW1f",
-                    "Y2FwdHVyZV9tdWx0GAIgASgBEhYKDml0ZW1fZmxlZV9tdWx0GAMgASgBEhUK",
-                    "DXN0b3BfbW92ZW1lbnQYBCABKAgSEwoLc3RvcF9hdHRhY2sYBSABKAgSEgoK",
-                    "dGFyZ2V0X21heBgGIAEoCBITCgt0YXJnZXRfc2xvdxgHIAEoCCIrChVSZWxl",
-                    "YXNlUG9rZW1vblJlcXVlc3QSEgoKcG9rZW1vbl9pZBgBIAEoBiLfAQoWUmVs",
-                    "ZWFzZVBva2Vtb25SZXNwb25zZRJQCgZyZXN1bHQYASABKA4yQC5Qb2tlbW9u",
-                    "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUmVsZWFzZVBva2Vtb25SZXNw",
-                    "b25zZS5SZXN1bHQSFQoNY2FuZHlfYXdhcmRlZBgCIAEoBSJcCgZSZXN1bHQS",
-                    "CQoFVU5TRVQQABILCgdTVUNDRVNTEAESFAoQUE9LRU1PTl9ERVBMT1lFRBAC",
-                    "EgoKBkZBSUxFRBADEhgKFEVSUk9SX1BPS0VNT05fSVNfRUdHEAQiFwoVR2V0",
-                    "SGF0Y2hlZEVnZ3NSZXF1ZXN0Io4BChZHZXRIYXRjaGVkRWdnc1Jlc3BvbnNl",
-                    "Eg8KB3N1Y2Nlc3MYASABKAgSFgoKcG9rZW1vbl9pZBgCIAMoBEICEAESGgoS",
-                    "ZXhwZXJpZW5jZV9hd2FyZGVkGAMgAygFEhUKDWNhbmR5X2F3YXJkZWQYBCAD",
-                    "KAUSGAoQc3RhcmR1c3RfYXdhcmRlZBgFIAMoBSKGAQoRRm9ydFNlYXJjaFJl",
-                    "cXVlc3QSDwoHZm9ydF9pZBgBIAEoCRIXCg9wbGF5ZXJfbGF0aXR1ZGUYAiAB",
-                    "KAESGAoQcGxheWVyX2xvbmdpdHVkZRgDIAEoARIVCg1mb3J0X2xhdGl0dWRl",
-                    "GAQgASgBEhYKDmZvcnRfbG9uZ2l0dWRlGAUgASgBIq0EChJGb3J0U2VhcmNo",
-                    "UmVzcG9uc2USTAoGcmVzdWx0GAEgASgOMjwuUG9rZW1vbkdvLlJvY2tldEFQ",
-                    "SS5HZW5lcmF0ZWRDb2RlLkZvcnRTZWFyY2hSZXNwb25zZS5SZXN1bHQSVgoN",
-                    "aXRlbXNfYXdhcmRlZBgCIAMoCzI/LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
-                    "ZXJhdGVkQ29kZS5Gb3J0U2VhcmNoUmVzcG9uc2UuSXRlbUF3YXJkEhQKDGdl",
-                    "bXNfYXdhcmRlZBgDIAEoBRJIChBwb2tlbW9uX2RhdGFfZWdnGAQgASgLMi4u",
-                    "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBva2Vtb25EYXRh",
-                    "EhoKEmV4cGVyaWVuY2VfYXdhcmRlZBgFIAEoBRImCh5jb29sZG93bl9jb21w",
-                    "bGV0ZV90aW1lc3RhbXBfbXMYBiABKAMSIgoaY2hhaW5faGFja19zZXF1ZW5j",
-                    "ZV9udW1iZXIYByABKAUaQQoJSXRlbUF3YXJkEiAKB2l0ZW1faWQYASABKA4y",
-                    "Dy5BbGxFbnVtLkl0ZW1JZBISCgppdGVtX2NvdW50GAIgASgFImYKBlJlc3Vs",
-                    "dBIRCg1OT19SRVNVTFRfU0VUEAASCwoHU1VDQ0VTUxABEhAKDE9VVF9PRl9S",
-                    "QU5HRRACEhYKEklOX0NPT0xET1dOX1BFUklPRBADEhIKDklOVkVOVE9SWV9G",
-                    "VUxMEAQiSgoSRm9ydERldGFpbHNSZXF1ZXN0Eg8KB2ZvcnRfaWQYASABKAkS",
-                    "EAoIbGF0aXR1ZGUYAiABKAESEQoJbG9uZ2l0dWRlGAMgASgBIocDChNGb3J0",
-                    "RGV0YWlsc1Jlc3BvbnNlEg8KB2ZvcnRfaWQYASABKAkSJgoKdGVhbV9jb2xv",
-                    "chgCIAEoDjISLkFsbEVudW0uVGVhbUNvbG9yEkQKDHBva2Vtb25fZGF0YRgD",
-                    "IAEoCzIuLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5Qb2tl",
-                    "bW9uRGF0YRIMCgRuYW1lGAQgASgJEhIKCmltYWdlX3VybHMYBSADKAkSCgoC",
-                    "ZnAYBiABKAUSDwoHc3RhbWluYRgHIAEoBRITCgttYXhfc3RhbWluYRgIIAEo",
-                    "BRIfCgR0eXBlGAkgASgOMhEuQWxsRW51bS5Gb3J0VHlwZRIQCghsYXRpdHVk",
-                    "ZRgKIAEoARIRCglsb25naXR1ZGUYCyABKAESEwoLZGVzY3JpcHRpb24YDCAB",
-                    "KAkSQgoJbW9kaWZpZXJzGA0gAygLMi8uUG9rZW1vbkdvLlJvY2tldEFQSS5H",
-                    "ZW5lcmF0ZWRDb2RlLkZvcnRNb2RpZmllciJzCgxGb3J0TW9kaWZpZXISIAoH",
-                    "aXRlbV9pZBgBIAEoDjIPLkFsbEVudW0uSXRlbUlkEh8KF2V4cGlyYXRpb25f",
-                    "dGltZXN0YW1wX21zGAIgASgDEiAKGGRlcGxveWVyX3BsYXllcl9jb2RlbmFt",
-                    "ZRgDIAEoCSJyChBFbmNvdW50ZXJSZXF1ZXN0EhQKDGVuY291bnRlcl9pZBgB",
-                    "IAEoBhIVCg1zcGF3bnBvaW50X2lkGAIgASgJEhcKD3BsYXllcl9sYXRpdHVk",
-                    "ZRgDIAEoARIYChBwbGF5ZXJfbG9uZ2l0dWRlGAQgASgBIs0EChFFbmNvdW50",
-                    "ZXJSZXNwb25zZRJECgx3aWxkX3Bva2Vtb24YASABKAsyLi5Qb2tlbW9uR28u",
-                    "Um9ja2V0QVBJLkdlbmVyYXRlZENvZGUuV2lsZFBva2Vtb24SUwoKYmFja2dy",
-                    "b3VuZBgCIAEoDjI/LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
-                    "ZS5FbmNvdW50ZXJSZXNwb25zZS5CYWNrZ3JvdW5kEksKBnN0YXR1cxgDIAEo",
-                    "DjI7LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5FbmNvdW50",
-                    "ZXJSZXNwb25zZS5TdGF0dXMSUgoTY2FwdHVyZV9wcm9iYWJpbGl0eRgEIAEo",
-                    "CzI1LlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5DYXB0dXJl",
-                    "UHJvYmFiaWxpdHkiIgoKQmFja2dyb3VuZBIICgRQQVJLEAASCgoGREVTRVJU",
-                    "EAEi1wEKBlN0YXR1cxITCg9FTkNPVU5URVJfRVJST1IQABIVChFFTkNPVU5U",
-                    "RVJfU1VDQ0VTUxABEhcKE0VOQ09VTlRFUl9OT1RfRk9VTkQQAhIUChBFTkNP",
-                    "VU5URVJfQ0xPU0VEEAMSGgoWRU5DT1VOVEVSX1BPS0VNT05fRkxFRBAEEhoK",
-                    "FkVOQ09VTlRFUl9OT1RfSU5fUkFOR0UQBRIeChpFTkNPVU5URVJfQUxSRUFE",
-                    "WV9IQVBQRU5FRBAGEhoKFlBPS0VNT05fSU5WRU5UT1JZX0ZVTEwQByJ7ChJD",
-                    "YXB0dXJlUHJvYmFiaWxpdHkSJgoNcG9rZWJhbGxfdHlwZRgBIAMoDjIPLkFs",
-                    "bEVudW0uSXRlbUlkEhsKE2NhcHR1cmVfcHJvYmFiaWxpdHkYAiADKAISIAoY",
-                    "cmV0aWNsZV9kaWZmaWN1bHR5X3NjYWxlGAwgASgBInAKFERpc2tFbmNvdW50",
-                    "ZXJSZXF1ZXN0EhQKDGVuY291bnRlcl9pZBgBIAEoBhIPCgdmb3J0X2lkGAIg",
-                    "ASgJEhcKD3BsYXllcl9sYXRpdHVkZRgDIAEoARIYChBwbGF5ZXJfbG9uZ2l0",
-                    "dWRlGAQgASgBIogDChVEaXNrRW5jb3VudGVyUmVzcG9uc2USTwoGcmVzdWx0",
-                    "GAEgASgOMj8uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkRp",
-                    "c2tFbmNvdW50ZXJSZXNwb25zZS5SZXN1bHQSRAoMcG9rZW1vbl9kYXRhGAIg",
-                    "ASgLMi4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlBva2Vt",
-                    "b25EYXRhElIKE2NhcHR1cmVfcHJvYmFiaWxpdHkYAyABKAsyNS5Qb2tlbW9u",
-                    "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuQ2FwdHVyZVByb2JhYmlsaXR5",
-                    "IoMBCgZSZXN1bHQSCwoHVU5LTk9XThAAEgsKB1NVQ0NFU1MQARIRCg1OT1Rf",
-                    "QVZBSUxBQkxFEAISEAoMTk9UX0lOX1JBTkdFEAMSHgoaRU5DT1VOVEVSX0FM",
-                    "UkVBRFlfRklOSVNIRUQQBBIaChZQT0tFTU9OX0lOVkVOVE9SWV9GVUxMEAUi",
-                    "wwEKE0NhdGNoUG9rZW1vblJlcXVlc3QSFAoMZW5jb3VudGVyX2lkGAEgASgG",
-                    "EhAKCHBva2ViYWxsGAIgASgFEh8KF25vcm1hbGl6ZWRfcmV0aWNsZV9zaXpl",
-                    "GAMgASgBEhgKEHNwYXduX3BvaW50X2d1aWQYBCABKAkSEwoLaGl0X3Bva2Vt",
-                    "b24YBSABKAgSFQoNc3Bpbl9tb2RpZmllchgGIAEoARIdChVOb3JtYWxpemVk",
-                    "SGl0UG9zaXRpb24YByABKAEixgIKFENhdGNoUG9rZW1vblJlc3BvbnNlElMK",
-                    "BnN0YXR1cxgBIAEoDjJDLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-                    "Q29kZS5DYXRjaFBva2Vtb25SZXNwb25zZS5DYXRjaFN0YXR1cxIUCgxtaXNz",
-                    "X3BlcmNlbnQYAiABKAESGwoTY2FwdHVyZWRfcG9rZW1vbl9pZBgDIAEoBBI/",
-                    "CgZzY29yZXMYBCABKAsyLy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUuQ2FwdHVyZVNjb3JlImUKC0NhdGNoU3RhdHVzEg8KC0NBVENIX0VS",
-                    "Uk9SEAASEQoNQ0FUQ0hfU1VDQ0VTUxABEhAKDENBVENIX0VTQ0FQRRACEg4K",
-                    "CkNBVENIX0ZMRUUQAxIQCgxDQVRDSF9NSVNTRUQQBCJpCgxDYXB0dXJlU2Nv",
-                    "cmUSLAoNYWN0aXZpdHlfdHlwZRgBIAMoDjIVLkFsbEVudW0uQWN0aXZpdHlU",
-                    "eXBlEgoKAnhwGAIgAygFEg0KBWNhbmR5GAMgAygFEhAKCHN0YXJkdXN0GAQg",
-                    "AygFIhsKGUNoZWNrQXdhcmRlZEJhZGdlc1JlcXVlc3QidwoaQ2hlY2tBd2Fy",
-                    "ZGVkQmFkZ2VzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIqCg5hd2FyZGVk",
-                    "X2JhZGdlcxgCIAMoDjISLkFsbEVudW0uQmFkZ2VUeXBlEhwKFGF3YXJkZWRf",
-                    "YmFkZ2VfbGV2ZWxzGAMgAygFInkKFUVxdWlwcGVkQmFkZ2VTZXR0aW5ncxIf",
-                    "ChdlcXVpcF9iYWRnZV9jb29sZG93bl9tcxgBIAEoAxIfChdjYXRjaF9wcm9i",
-                    "YWJpbGl0eV9ib251cxgCIAMoAhIeChZmbGVlX3Byb2JhYmlsaXR5X2JvbnVz",
-                    "GAMgAygCIoQBChZQb2tlbW9uVXBncmFkZVNldHRpbmdzEhoKEnVwZ3JhZGVz",
-                    "X3Blcl9sZXZlbBgBIAEoBRIjChthbGxvd2VkX2xldmVsc19hYm92ZV9wbGF5",
-                    "ZXIYAiABKAUSEgoKY2FuZHlfY29zdBgDIAMoBRIVCg1zdGFyZHVzdF9jb3N0",
-                    "GAQgAygFIowCCgtJYXBTZXR0aW5ncxIZChFkYWlseV9ib251c19jb2lucxgB",
-                    "IAEoBRIoCiBkYWlseV9kZWZlbmRlcl9ib251c19wZXJfcG9rZW1vbhgCIAMo",
-                    "BRIqCiJkYWlseV9kZWZlbmRlcl9ib251c19tYXhfZGVmZW5kZXJzGAMgASgF",
-                    "EiUKHWRhaWx5X2RlZmVuZGVyX2JvbnVzX2N1cnJlbmN5GAQgAygJEiIKGm1p",
-                    "bl90aW1lX2JldHdlZW5fY2xhaW1zX21zGAUgASgDEhsKE2RhaWx5X2JvbnVz",
-                    "X2VuYWJsZWQYBiABKAgSJAocZGFpbHlfZGVmZW5kZXJfYm9udXNfZW5hYmxl",
-                    "ZBgHIAEoCCKUAQoOSWFwSXRlbURpc3BsYXkSCwoDc2t1GAEgASgJEi4KCGNh",
-                    "dGVnb3J5GAIgASgOMhwuQWxsRW51bS5Ib2xvSWFwSXRlbUNhdGVnb3J5EhIK",
-                    "CnNvcnRfb3JkZXIYAyABKAUSIQoIaXRlbV9pZHMYBCADKA4yDy5BbGxFbnVt",
-                    "Lkl0ZW1JZBIOCgZjb3VudHMYBSADKAUirgEKEUVuY291bnRlclNldHRpbmdz",
-                    "EhwKFHNwaW5fYm9udXNfdGhyZXNob2xkGAEgASgCEiEKGWV4Y2VsbGVudF90",
-                    "aHJvd190aHJlc2hvbGQYAiABKAISHQoVZ3JlYXRfdGhyb3dfdGhyZXNob2xk",
-                    "GAMgASgCEhwKFG5pY2VfdGhyb3dfdGhyZXNob2xkGAQgASgCEhsKE21pbGVz",
-                    "dG9uZV90aHJlc2hvbGQYBSABKAUixgMKEUd5bUJhdHRsZVNldHRpbmdzEhYK",
-                    "DmVuZXJneV9wZXJfc2VjGAEgASgCEhkKEWRvZGdlX2VuZXJneV9jb3N0GAIg",
-                    "ASgCEhgKEHJldGFyZ2V0X3NlY29uZHMYAyABKAISHQoVZW5lbXlfYXR0YWNr",
-                    "X2ludGVydmFsGAQgASgCEh4KFmF0dGFja19zZXJ2ZXJfaW50ZXJ2YWwYBSAB",
-                    "KAISHgoWcm91bmRfZHVyYXRpb25fc2Vjb25kcxgGIAEoAhIjChtib251c190",
-                    "aW1lX3Blcl9hbGx5X3NlY29uZHMYByABKAISJAocbWF4aW11bV9hdHRhY2tl",
-                    "cnNfcGVyX2JhdHRsZRgIIAEoBRIpCiFzYW1lX3R5cGVfYXR0YWNrX2JvbnVz",
-                    "X211bHRpcGxpZXIYCSABKAISFgoObWF4aW11bV9lbmVyZ3kYCiABKAUSJAoc",
-                    "ZW5lcmd5X2RlbHRhX3Blcl9oZWFsdGhfbG9zdBgLIAEoAhIZChFkb2RnZV9k",
-                    "dXJhdGlvbl9tcxgMIAEoBRIcChRtaW5pbXVtX3BsYXllcl9sZXZlbBgNIAEo",
-                    "BRIYChBzd2FwX2R1cmF0aW9uX21zGA4gASgFIncKEEd5bUxldmVsU2V0dGlu",
-                    "Z3MSGwoTcmVxdWlyZWRfZXhwZXJpZW5jZRgBIAMoBRIUCgxsZWFkZXJfc2xv",
-                    "dHMYAiADKAUSFQoNdHJhaW5lcl9zbG90cxgDIAMoBRIZChFzZWFyY2hfcm9s",
-                    "bF9ib251cxgEIAMoBSKdAQoTUGxheWVyTGV2ZWxTZXR0aW5ncxIQCghyYW5r",
-                    "X251bRgBIAMoBRIbChNyZXF1aXJlZF9leHBlcmllbmNlGAIgAygFEhUKDWNw",
-                    "X211bHRpcGxpZXIYAyADKAISHAoUbWF4X2VnZ19wbGF5ZXJfbGV2ZWwYBCAB",
-                    "KAUSIgoabWF4X2VuY291bnRlcl9wbGF5ZXJfbGV2ZWwYBSABKAUixQMKDkNh",
-                    "bWVyYVNldHRpbmdzEhMKC25leHRfY2FtZXJhGAEgASgJEjMKDWludGVycG9s",
-                    "YXRpb24YAiADKA4yHC5BbGxFbnVtLkNhbWVyYUludGVycG9sYXRpb24SKgoL",
-                    "dGFyZ2V0X3R5cGUYAyADKA4yFS5BbGxFbnVtLkNhbWVyYVRhcmdldBIVCg1l",
-                    "YXNlX2luX3NwZWVkGAQgAygCEhYKDmVhc3Rfb3V0X3NwZWVkGAUgAygCEhgK",
-                    "EGR1cmF0aW9uX3NlY29uZHMYBiADKAISFAoMd2FpdF9zZWNvbmRzGAcgAygC",
-                    "EhoKEnRyYW5zaXRpb25fc2Vjb25kcxgIIAMoAhIUCgxhbmdsZV9kZWdyZWUY",
-                    "CSADKAISGwoTYW5nbGVfb2Zmc2V0X2RlZ3JlZRgKIAMoAhIUCgxwaXRjaF9k",
-                    "ZWdyZWUYCyADKAISGwoTcGl0Y2hfb2Zmc2V0X2RlZ3JlZRgMIAMoAhITCgty",
-                    "b2xsX2RlZ3JlZRgNIAMoAhIXCg9kaXN0YW5jZV9tZXRlcnMYDiADKAISFgoO",
-                    "aGVpZ2h0X3BlcmNlbnQYDyADKAISFgoOdmVydF9jdHJfcmF0aW8YECADKAIi",
-                    "XAoNQmFkZ2VTZXR0aW5ncxImCgpiYWRnZV90eXBlGAEgASgOMhIuQWxsRW51",
-                    "bS5CYWRnZVR5cGUSEgoKYmFkZ2VfcmFuaxgCIAEoBRIPCgd0YXJnZXRzGAMg",
-                    "AygFIlkKFVR5cGVFZmZlY3RpdmVTZXR0aW5ncxIVCg1hdHRhY2tfc2NhbGFy",
-                    "GAEgAygCEikKC2F0dGFja190eXBlGAIgASgOMhQuQWxsRW51bS5Qb2tlbW9u",
-                    "VHlwZSIoChRNb3ZlU2VxdWVuY2VTZXR0aW5ncxIQCghzZXF1ZW5jZRgBIAMo",
-                    "CSKnAwoMTW92ZVNldHRpbmdzEjEKC21vdmVtZW50X2lkGAEgASgOMhwuQWxs",
-                    "RW51bS5Qb2tlbW9uTW92ZW1lbnRUeXBlEhQKDGFuaW1hdGlvbl9pZBgCIAEo",
-                    "BRIqCgxwb2tlbW9uX3R5cGUYAyABKA4yFC5BbGxFbnVtLlBva2Vtb25UeXBl",
-                    "Eg0KBXBvd2VyGAQgASgCEhcKD2FjY3VyYWN5X2NoYW5jZRgFIAEoAhIXCg9j",
-                    "cml0aWNhbF9jaGFuY2UYBiABKAISEwoLaGVhbF9zY2FsYXIYByABKAISGwoT",
-                    "c3RhbWluYV9sb3NzX3NjYWxhchgIIAEoAhIZChF0cmFpbmVyX2xldmVsX21p",
-                    "bhgJIAEoBRIZChF0cmFpbmVyX2xldmVsX21heBgKIAEoBRIQCgh2ZnhfbmFt",
-                    "ZRgLIAEoCRITCgtkdXJhdGlvbl9tcxgMIAEoBRIeChZkYW1hZ2Vfd2luZG93",
-                    "X3N0YXJ0X21zGA0gASgFEhwKFGRhbWFnZV93aW5kb3dfZW5kX21zGA4gASgF",
-                    "EhQKDGVuZXJneV9kZWx0YRgPIAEoBSK+BgoPUG9rZW1vblNldHRpbmdzEiYK",
-                    "CnBva2Vtb25faWQYASABKA4yEi5BbGxFbnVtLlBva2Vtb25JZBITCgttb2Rl",
-                    "bF9zY2FsZRgDIAEoAhIiCgR0eXBlGAQgASgOMhQuQWxsRW51bS5Qb2tlbW9u",
-                    "VHlwZRIkCgZ0eXBlXzIYBSABKA4yFC5BbGxFbnVtLlBva2Vtb25UeXBlEkMK",
-                    "BmNhbWVyYRgGIAEoCzIzLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-                    "Q29kZS5DYW1lcmFBdHRyaWJ1dGVzEkkKCWVuY291bnRlchgHIAEoCzI2LlBv",
-                    "a2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5FbmNvdW50ZXJBdHRy",
-                    "aWJ1dGVzEkEKBXN0YXRzGAggASgLMjIuUG9rZW1vbkdvLlJvY2tldEFQSS5H",
-                    "ZW5lcmF0ZWRDb2RlLlN0YXRzQXR0cmlidXRlcxIpCgtxdWlja19tb3ZlcxgJ",
-                    "IAMoDjIULkFsbEVudW0uUG9rZW1vbk1vdmUSLQoPY2luZW1hdGljX21vdmVz",
-                    "GAogAygOMhQuQWxsRW51bS5Qb2tlbW9uTW92ZRIWCg5hbmltYXRpb25fdGlt",
-                    "ZRgLIAMoAhIpCg1ldm9sdXRpb25faWRzGAwgAygOMhIuQWxsRW51bS5Qb2tl",
-                    "bW9uSWQSFgoOZXZvbHV0aW9uX3BpcHMYDSABKAUSJAoFY2xhc3MYDiABKA4y",
-                    "FS5BbGxFbnVtLlBva2Vtb25DbGFzcxIYChBwb2tlZGV4X2hlaWdodF9tGA8g",
-                    "ASgCEhkKEXBva2VkZXhfd2VpZ2h0X2tnGBAgASgCEi0KEXBhcmVudF9wb2tl",
-                    "bW9uX2lkGBEgASgOMhIuQWxsRW51bS5Qb2tlbW9uSWQSFgoOaGVpZ2h0X3N0",
-                    "ZF9kZXYYEiABKAISFgoOd2VpZ2h0X3N0ZF9kZXYYEyABKAISHAoUa21fZGlz",
-                    "dGFuY2VfdG9faGF0Y2gYFCABKAISKwoJZmFtaWx5X2lkGBUgASgOMhguQWxs",
-                    "RW51bS5Qb2tlbW9uRmFtaWx5SWQSFwoPY2FuZHlfdG9fZXZvbHZlGBYgASgF",
-                    "IpcBChBDYW1lcmFBdHRyaWJ1dGVzEhUKDWRpc2tfcmFkaXVzX20YASABKAIS",
-                    "GQoRY3lsaW5kZXJfcmFkaXVzX20YAiABKAISGQoRY3lsaW5kZXJfaGVpZ2h0",
-                    "X20YAyABKAISGQoRY3lsaW5kZXJfZ3JvdW5kX20YBCABKAISGwoTc2hvdWxk",
-                    "ZXJfbW9kZV9zY2FsZRgFIAEoAiKdAgoTRW5jb3VudGVyQXR0cmlidXRlcxIZ",
-                    "ChFiYXNlX2NhcHR1cmVfcmF0ZRgBIAEoAhIWCg5iYXNlX2ZsZWVfcmF0ZRgC",
-                    "IAEoAhIaChJjb2xsaXNpb25fcmFkaXVzX20YAyABKAISGgoSY29sbGlzaW9u",
-                    "X2hlaWdodF9tGAQgASgCEh8KF2NvbGxpc2lvbl9oZWFkX3JhZGl1c19tGAUg",
-                    "ASgCEjMKDW1vdmVtZW50X3R5cGUYBiABKA4yHC5BbGxFbnVtLlBva2Vtb25N",
-                    "b3ZlbWVudFR5cGUSGAoQbW92ZW1lbnRfdGltZXJfcxgHIAEoAhITCgtqdW1w",
-                    "X3RpbWVfcxgIIAEoAhIWCg5hdHRhY2tfdGltZXJfcxgJIAEoAiJuCg9TdGF0",
-                    "c0F0dHJpYnV0ZXMSFAoMYmFzZV9zdGFtaW5hGAEgASgFEhMKC2Jhc2VfYXR0",
-                    "YWNrGAIgASgFEhQKDGJhc2VfZGVmZW5zZRgDIAEoBRIaChJkb2RnZV9lbmVy",
-                    "Z3lfZGVsdGEYCCABKAUinAcKDEl0ZW1TZXR0aW5ncxIgCgdpdGVtX2lkGAEg",
-                    "ASgOMg8uQWxsRW51bS5JdGVtSWQSJAoJaXRlbV90eXBlGAIgASgOMhEuQWxs",
-                    "RW51bS5JdGVtVHlwZRInCghjYXRlZ29yeRgDIAEoDjIVLkFsbEVudW0uSXRl",
-                    "bUNhdGVnb3J5EhEKCWRyb3BfZnJlcRgEIAEoAhIaChJkcm9wX3RyYWluZXJf",
-                    "bGV2ZWwYBSABKAUSRwoIcG9rZWJhbGwYBiABKAsyNS5Qb2tlbW9uR28uUm9j",
-                    "a2V0QVBJLkdlbmVyYXRlZENvZGUuUG9rZWJhbGxBdHRyaWJ1dGVzEkMKBnBv",
-                    "dGlvbhgHIAEoCzIzLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
-                    "ZS5Qb3Rpb25BdHRyaWJ1dGVzEkMKBnJldml2ZRgIIAEoCzIzLlBva2Vtb25H",
-                    "by5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5SZXZpdmVBdHRyaWJ1dGVzEkMK",
-                    "BmJhdHRsZRgJIAEoCzIzLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
-                    "Q29kZS5CYXR0bGVBdHRyaWJ1dGVzEj8KBGZvb2QYCiABKAsyMS5Qb2tlbW9u",
-                    "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRm9vZEF0dHJpYnV0ZXMSWAoR",
-                    "aW52ZW50b3J5X3VwZ3JhZGUYCyABKAsyPS5Qb2tlbW9uR28uUm9ja2V0QVBJ",
-                    "LkdlbmVyYXRlZENvZGUuSW52ZW50b3J5VXBncmFkZUF0dHJpYnV0ZXMSTgoI",
-                    "eHBfYm9vc3QYDCABKAsyPC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUuRXhwZXJpZW5jZUJvb3N0QXR0cmlidXRlcxJFCgdpbmNlbnNlGA0g",
-                    "ASgLMjQuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkluY2Vu",
-                    "c2VBdHRyaWJ1dGVzElAKDWVnZ19pbmN1YmF0b3IYDiABKAsyOS5Qb2tlbW9u",
-                    "R28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRWdnSW5jdWJhdG9yQXR0cmli",
-                    "dXRlcxJQCg1mb3J0X21vZGlmaWVyGA8gASgLMjkuUG9rZW1vbkdvLlJvY2tl",
-                    "dEFQSS5HZW5lcmF0ZWRDb2RlLkZvcnRNb2RpZmllckF0dHJpYnV0ZXMiJwoQ",
-                    "QmF0dGxlQXR0cmlidXRlcxITCgtzdGFfcGVyY2VudBgBIAEoAiJ2ChZFZ2dJ",
-                    "bmN1YmF0b3JBdHRyaWJ1dGVzEjEKDmluY3ViYXRvcl90eXBlGAEgASgOMhku",
-                    "QWxsRW51bS5FZ2dJbmN1YmF0b3JUeXBlEgwKBHVzZXMYAiABKAUSGwoTZGlz",
-                    "dGFuY2VfbXVsdGlwbGllchgDIAEoAiJNChlFeHBlcmllbmNlQm9vc3RBdHRy",
-                    "aWJ1dGVzEhUKDXhwX211bHRpcGxpZXIYASABKAISGQoRYm9vc3RfZHVyYXRp",
-                    "b25fbXMYAiABKAUibwoORm9vZEF0dHJpYnV0ZXMSKAoLaXRlbV9lZmZlY3QY",
-                    "ASADKA4yEy5BbGxFbnVtLkl0ZW1FZmZlY3QSGwoTaXRlbV9lZmZlY3RfcGVy",
-                    "Y2VudBgCIAMoAhIWCg5ncm93dGhfcGVyY2VudBgDIAEoAiJiChZGb3J0TW9k",
-                    "aWZpZXJBdHRyaWJ1dGVzEiEKGW1vZGlmaWVyX2xpZmV0aW1lX3NlY29uZHMY",
-                    "ASABKAUSJQoddHJveV9kaXNrX251bV9wb2tlbW9uX3NwYXduZWQYAiABKAUi",
-                    "yQIKEUluY2Vuc2VBdHRyaWJ1dGVzEiAKGGluY2Vuc2VfbGlmZXRpbWVfc2Vj",
-                    "b25kcxgBIAEoBRIqCgxwb2tlbW9uX3R5cGUYAiADKA4yFC5BbGxFbnVtLlBv",
-                    "a2Vtb25UeXBlEigKIHBva2Vtb25faW5jZW5zZV90eXBlX3Byb2JhYmlsaXR5",
-                    "GAMgASgCEjAKKHN0YW5kaW5nX3RpbWVfYmV0d2Vlbl9lbmNvdW50ZXJzX3Nl",
-                    "Y29uZHMYBCABKAUSLQolbW92aW5nX3RpbWVfYmV0d2Vlbl9lbmNvdW50ZXJf",
-                    "c2Vjb25kcxgFIAEoBRI1Ci1kaXN0YW5jZV9yZXF1aXJlZF9mb3Jfc2hvcnRl",
-                    "cl9pbnRlcnZhbF9tZXRlcnMYBiABKAUSJAoccG9rZW1vbl9hdHRyYWN0ZWRf",
-                    "bGVuZ3RoX3NlYxgHIAEoBSJtChpJbnZlbnRvcnlVcGdyYWRlQXR0cmlidXRl",
-                    "cxIaChJhZGRpdGlvbmFsX3N0b3JhZ2UYASABKAUSMwoMdXBncmFkZV90eXBl",
-                    "GAIgASgOMh0uQWxsRW51bS5JbnZlbnRvcnlVcGdyYWRlVHlwZSKMAQoSUG9r",
-                    "ZWJhbGxBdHRyaWJ1dGVzEigKC2l0ZW1fZWZmZWN0GAEgASgOMhMuQWxsRW51",
-                    "bS5JdGVtRWZmZWN0EhUKDWNhcHR1cmVfbXVsdGkYAiABKAISHAoUY2FwdHVy",
-                    "ZV9tdWx0aV9lZmZlY3QYAyABKAISFwoPaXRlbV9lZmZlY3RfbW9kGAQgASgC",
-                    "IjsKEFBvdGlvbkF0dHJpYnV0ZXMSEwoLc3RhX3BlcmNlbnQYASABKAISEgoK",
-                    "c3RhX2Ftb3VudBgCIAEoBSInChBSZXZpdmVBdHRyaWJ1dGVzEhMKC3N0YV9w",
-                    "ZXJjZW50GAEgASgCIiQKD1RyYW5zZmVyUG9rZW1vbhIRCglQb2tlbW9uSWQY",
-                    "ASABKAYiOgoSVHJhbnNmZXJQb2tlbW9uT3V0Eg4KBlN0YXR1cxgBIAEoBRIU",
-                    "CgxDYW5keUF3YXJkZWQYAiABKAUiIgoNRXZvbHZlUG9rZW1vbhIRCglQb2tl",
-                    "bW9uSWQYASABKAYikAEKEEV2b2x2ZVBva2Vtb25PdXQSDgoGUmVzdWx0GAEg",
-                    "ASgFEkIKDkV2b2x2ZWRQb2tlbW9uGAIgASgLMiouUG9rZW1vbkdvLlJvY2tl",
-                    "dEFQSS5HZW5lcmF0ZWRDb2RlLlBva2Vtb24SEgoKRXhwQXdhcmRlZBgDIAEo",
-                    "BRIUCgxDYW5keUF3YXJkZWQYBCABKAViBnByb3RvMw=="));
-            descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-                new pbr::FileDescriptor[] { global::AllEnum.AllEnumReflection.Descriptor, },
-                new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[]
-                {
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetPlayerResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GetPlayerResponse.Parser,
-                        new[] {"Unknown1", "Profile"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Profile),
-                        global::PokemonGo.RocketAPI.GeneratedCode.Profile.Parser,
-                        new[]
-                        {
-                            "CreationTime", "Username", "Team", "Tutorial", "Avatar", "PokeStorage", "ItemStorage",
-                            "DailyBonus", "Unknown12", "Unknown13", "Currency"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus.Parser,
-                        new[] {"NextCollectTimestampMs", "NextDefenderBonusCollectTimestampMs"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Currency),
-                        global::PokemonGo.RocketAPI.GeneratedCode.Currency.Parser, new[] {"Type", "Amount"}, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails),
-                        global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails.Parser,
-                        new[] {"Unknown2", "Unknown3", "Unknown9", "Unknown10"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsRequest.Parser, new[] {"Hash"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetInventoryResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GetInventoryResponse.Parser,
-                        new[] {"Success", "InventoryDelta"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta.Parser,
-                        new[] {"OriginalTimestampMs", "NewTimestampMs", "InventoryItems"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem.Parser,
-                        new[] {"ModifiedTimestampMs", "DeletedItemKey", "InventoryItemData"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData.Parser,
-                        new[]
-                        {
-                            "Pokemon", "Item", "PokedexEntry", "PlayerStats", "PlayerCurrency", "PlayerCamera",
-                            "InventoryUpgrades", "AppliedItems", "EggIncubators", "PokemonFamily"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Pokemon),
-                        global::PokemonGo.RocketAPI.GeneratedCode.Pokemon.Parser,
-                        new[]
-                        {
-                            "Id", "PokemonType", "Cp", "Stamina", "StaminaMax", "Move1", "Move2", "DeployedFortId",
-                            "OwnerName", "IsEgg", "EggKmWalkedTarget", "EggKmWalkedStart", "Origin", "HeightM",
-                            "WeightKg", "IndividualAttack", "IndividualDefense", "IndividualStamina", "CpMultiplier",
-                            "Pokeball", "CapturedCellId", "BattlesAttacked", "BattlesDefended", "EggIncubatorId",
-                            "CreationTimeMs", "NumUpgrades", "AdditionalCpMultiplier", "Favorite", "Nickname",
-                            "FromFort"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Item),
-                        global::PokemonGo.RocketAPI.GeneratedCode.Item.Parser, new[] {"Item_", "Count", "Unseen"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry.Parser,
-                        new[]
-                        {
-                            "PokedexEntryNumber", "TimesEncountered", "TimesCaptured", "EvolutionStonePieces",
-                            "EvolutionStones"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats.Parser,
-                        new[]
-                        {
-                            "Level", "Experience", "PrevLevelXp", "NextLevelXp", "KmWalked", "PokemonsEncountered",
-                            "UniquePokedexEntries", "PokemonsCaptured", "Evolutions", "PokeStopVisits",
-                            "PokeballsThrown", "EggsHatched", "BigMagikarpCaught", "BattleAttackWon",
-                            "BattleAttackTotal", "BattleDefendedWon", "BattleTrainingWon", "BattleTrainingTotal",
-                            "PrestigeRaisedTotal", "PrestigeDroppedTotal", "PokemonDeployed", "PokemonCaughtByType",
-                            "SmallRattataCaught"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency.Parser, new[] {"Gems"}, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera.Parser, new[] {"IsDefaultCamera"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades.Parser, new[] {"InventoryUpgrades_"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade.Parser,
-                        new[] {"Item", "UpgradeType", "AdditionalStorage"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems),
-                        global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems.Parser, new[] {"Item"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem),
-                        global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem.Parser,
-                        new[] {"ItemType", "ItemTypeCategory", "ExpireMs", "AppliedMs"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators.Parser, new[] {"EggIncubator"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator.Parser,
-                        new[]
-                        {
-                            "ItemId", "ItemType", "IncubatorType", "UsesRemaining", "PokemonId", "StartKmWalked",
-                            "TargetKmWalked"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily.Parser, new[] {"FamilyId", "Candy"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsRequest.Parser,
-                        new[] {"CellId", "SinceTimestampMs", "Latitude", "Longitude"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GetMapObjectsResponse.Parser,
-                        new[] {"MapCells", "Status"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapCell),
-                        global::PokemonGo.RocketAPI.GeneratedCode.MapCell.Parser,
-                        new[]
-                        {
-                            "S2CellId", "CurrentTimestampMs", "Forts", "SpawnPoints", "DeletedObjects", "IsTruncatedList",
-                            "FortSummaries", "DecimatedSpawnPoints", "WildPokemons", "CatchablePokemons",
-                            "NearbyPokemons"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortData),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortData.Parser,
-                        new[]
-                        {
-                            "Id", "LastModifiedTimestampMs", "Latitude", "Longitude", "Enabled", "Type", "OwnedByTeam",
-                            "GuardPokemonId", "GuardPokemonCp", "GymPoints", "IsInBattle", "CooldownCompleteTimestampMs",
-                            "Sponsor", "RenderingType", "ActiveFortModifier", "LureInfo"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo.Parser,
-                        new[] {"FortId", "Unknown2", "ActivePokemonId", "LureExpiresTimestampMs"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint),
-                        global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint.Parser, new[] {"Latitude", "Longitude"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSummary),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortSummary.Parser,
-                        new[] {"FortSummaryId", "LastModifiedTimestampMs", "Latitude", "Longitude"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon),
-                        global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon.Parser,
-                        new[]
-                        {
-                            "EncounterId", "LastModifiedTimestampMs", "Latitude", "Longitude", "SpawnpointId",
-                            "PokemonData", "TimeTillHiddenMs"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonData),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PokemonData.Parser,
-                        new[]
-                        {
-                            "Id", "PokemonId", "Cp", "Stamina", "StaminaMax", "Move1", "Move2", "DeployedFortId",
-                            "OwnerName", "IsEgg", "EggKmWalkedTarget", "EggKmWalkedStart", "Origin", "HeightM",
-                            "WeightKg", "IndividualAttack", "IndividualDefense", "IndividualStamina", "CpMultiplier",
-                            "Pokeball", "CapturedCellId", "BattlesAttacked", "BattlesDefended", "EggIncubatorId",
-                            "CreationTimeMs", "NumUpgrades", "AdditionalCpMultiplier", "Favorite", "Nickname",
-                            "FromFort"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon),
-                        global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon.Parser,
-                        new[]
-                        {"SpawnpointId", "EncounterId", "PokemonId", "ExpirationTimestampMs", "Latitude", "Longitude"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon),
-                        global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon.Parser,
-                        new[] {"PokemonId", "DistanceInMeters", "EncounterId"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DownloadSettingsResponse.Parser,
-                        new[] {"Error", "Hash", "Settings"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings.Parser,
-                        new[]
-                        {"FortSettings", "MapSettings", "LevelSettings", "InventorySettings", "MinimumClientVersion"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortSettings.Parser,
-                        new[]
-                        {
-                            "InteractionRangeMeters", "MaxTotalDeployedPokemon", "MaxPlayerDeployedPokemon",
-                            "DeployStaminaMultiplier", "DeployAttackMultiplier", "FarInteractionRangeMeters"
-                        }, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MapSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.MapSettings.Parser,
-                        new[]
-                        {
-                            "PokemonVisibleRange", "PokeNavRangeMeters", "EncounterRangeMeters",
-                            "GetMapObjectsMinRefreshSeconds", "GetMapObjectsMaxRefreshSeconds",
-                            "GetMapObjectsMinDistanceMeters", "GoogleMapsApiKey"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings.Parser,
-                        new[] {"TrainerCpModifier", "TrainerDifficultyModifier"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings.Parser,
-                        new[] {"MaxPokemon", "MaxBagItems", "BasePokemon", "BaseBagItems", "BaseEggs"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateRequest.Parser,
-                        new[] {"Latitude", "Longitude"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PlayerUpdateResponse.Parser,
-                        new[] {"WildPokemons", "Forts", "FortsNearby"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesRequest.Parser, null, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Parser,
-                        new[] {"Success", "ItemTemplates", "TimestampMs"}, null, null,
-                        new pbr::GeneratedClrTypeInfo[]
-                        {
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(
-                                    global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.
-                                        ItemTemplate),
-                                global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types
-                                    .ItemTemplate.Parser,
-                                new[]
-                                {
-                                    "TemplateId", "PokemonSettings", "ItemSettings", "MoveSettings", "MoveSequenceSettings",
-                                    "TypeEffective", "BadgeSettings", "Camera", "PlayerLevel", "GymLevel",
-                                    "BattleSettings", "EncounterSettings", "IapItemDisplay", "IapSettings",
-                                    "PokemonUpgrades", "EquippedBadges"
-                                }, null, null, null)
-                        }),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureRequest.Parser,
-                        new[] {"ItemId", "EncounterId", "SpawnPointGuid"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.UseItemCaptureResponse.Parser,
-                        new[]
-                        {
-                            "Success", "ItemCaptureMult", "ItemFleeMult", "StopMovement", "StopAttack", "TargetMax",
-                            "TargetSlow"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonRequest.Parser, new[] {"PokemonId"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Parser,
-                        new[] {"Result", "CandyAwarded"}, null,
-                        new[] {typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result)},
-                        null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsRequest.Parser, null, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GetHatchedEggsResponse.Parser,
-                        new[] {"Success", "PokemonId", "ExperienceAwarded", "CandyAwarded", "StardustAwarded"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortSearchRequest.Parser,
-                        new[] {"FortId", "PlayerLatitude", "PlayerLongitude", "FortLatitude", "FortLongitude"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Parser,
-                        new[]
-                        {
-                            "Result", "ItemsAwarded", "GemsAwarded", "PokemonDataEgg", "ExperienceAwarded",
-                            "CooldownCompleteTimestampMs", "ChainHackSequenceNumber"
-                        }, null,
-                        new[] {typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result)},
-                        new pbr::GeneratedClrTypeInfo[]
-                        {
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward),
-                                global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward.Parser,
-                                new[] {"ItemId", "ItemCount"}, null, null, null)
-                        }),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsRequest.Parser,
-                        new[] {"FortId", "Latitude", "Longitude"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortDetailsResponse.Parser,
-                        new[]
-                        {
-                            "FortId", "TeamColor", "PokemonData", "Name", "ImageUrls", "Fp", "Stamina", "MaxStamina",
-                            "Type", "Latitude", "Longitude", "Description", "Modifiers"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortModifier),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortModifier.Parser,
-                        new[] {"ItemId", "ExpirationTimestampMs", "DeployerPlayerCodename"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EncounterRequest.Parser,
-                        new[] {"EncounterId", "SpawnpointId", "PlayerLatitude", "PlayerLongitude"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Parser,
-                        new[] {"WildPokemon", "Background", "Status", "CaptureProbability"}, null,
-                        new[]
-                        {
-                            typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background),
-                            typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status)
-                        }, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability.Parser,
-                        new[] {"PokeballType", "CaptureProbability_", "ReticleDifficultyScale"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterRequest.Parser,
-                        new[] {"EncounterId", "FortId", "PlayerLatitude", "PlayerLongitude"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Parser,
-                        new[] {"Result", "PokemonData", "CaptureProbability"}, null,
-                        new[] {typeof(global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result)},
-                        null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonRequest.Parser,
-                        new[]
-                        {
-                            "EncounterId", "Pokeball", "NormalizedReticleSize", "SpawnPointGuid", "HitPokemon",
-                            "SpinModifier", "NormalizedHitPosition"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Parser,
-                        new[] {"Status", "MissPercent", "CapturedPokemonId", "Scores"}, null,
-                        new[] {typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus)},
-                        null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore.Parser,
-                        new[] {"ActivityType", "Xp", "Candy", "Stardust"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesRequest),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesRequest.Parser, null, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesResponse),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CheckAwardedBadgesResponse.Parser,
-                        new[] {"Success", "AwardedBadges", "AwardedBadgeLevels"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings.Parser,
-                        new[] {"EquipBadgeCooldownMs", "CatchProbabilityBonus", "FleeProbabilityBonus"}, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings.Parser,
-                        new[] {"UpgradesPerLevel", "AllowedLevelsAbovePlayer", "CandyCost", "StardustCost"}, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.IapSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.IapSettings.Parser,
-                        new[]
-                        {
-                            "DailyBonusCoins", "DailyDefenderBonusPerPokemon", "DailyDefenderBonusMaxDefenders",
-                            "DailyDefenderBonusCurrency", "MinTimeBetweenClaimsMs", "DailyBonusEnabled",
-                            "DailyDefenderBonusEnabled"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay),
-                        global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay.Parser,
-                        new[] {"Sku", "Category", "SortOrder", "ItemIds", "Counts"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings.Parser,
-                        new[]
-                        {
-                            "SpinBonusThreshold", "ExcellentThrowThreshold", "GreatThrowThreshold", "NiceThrowThreshold",
-                            "MilestoneThreshold"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings.Parser,
-                        new[]
-                        {
-                            "EnergyPerSec", "DodgeEnergyCost", "RetargetSeconds", "EnemyAttackInterval",
-                            "AttackServerInterval", "RoundDurationSeconds", "BonusTimePerAllySeconds",
-                            "MaximumAttackersPerBattle", "SameTypeAttackBonusMultiplier", "MaximumEnergy",
-                            "EnergyDeltaPerHealthLost", "DodgeDurationMs", "MinimumPlayerLevel", "SwapDurationMs"
-                        }, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings.Parser,
-                        new[] {"RequiredExperience", "LeaderSlots", "TrainerSlots", "SearchRollBonus"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings.Parser,
-                        new[]
-                        {
-                            "RankNum", "RequiredExperience", "CpMultiplier", "MaxEggPlayerLevel", "MaxEncounterPlayerLevel"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings.Parser,
-                        new[]
-                        {
-                            "NextCamera", "Interpolation", "TargetType", "EaseInSpeed", "EastOutSpeed", "DurationSeconds",
-                            "WaitSeconds", "TransitionSeconds", "AngleDegree", "AngleOffsetDegree", "PitchDegree",
-                            "PitchOffsetDegree", "RollDegree", "DistanceMeters", "HeightPercent", "VertCtrRatio"
-                        }, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings.Parser,
-                        new[] {"BadgeType", "BadgeRank", "Targets"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings.Parser,
-                        new[] {"AttackScalar", "AttackType"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings.Parser, new[] {"Sequence"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings.Parser,
-                        new[]
-                        {
-                            "MovementId", "AnimationId", "PokemonType", "Power", "AccuracyChance", "CriticalChance",
-                            "HealScalar", "StaminaLossScalar", "TrainerLevelMin", "TrainerLevelMax", "VfxName",
-                            "DurationMs", "DamageWindowStartMs", "DamageWindowEndMs", "EnergyDelta"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings.Parser,
-                        new[]
-                        {
-                            "PokemonId", "ModelScale", "Type", "Type2", "Camera", "Encounter", "Stats", "QuickMoves",
-                            "CinematicMoves", "AnimationTime", "EvolutionIds", "EvolutionPips", "Class",
-                            "PokedexHeightM", "PokedexWeightKg", "ParentPokemonId", "HeightStdDev", "WeightStdDev",
-                            "KmDistanceToHatch", "FamilyId", "CandyToEvolve"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes.Parser,
-                        new[]
-                        {"DiskRadiusM", "CylinderRadiusM", "CylinderHeightM", "CylinderGroundM", "ShoulderModeScale"},
-                        null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes.Parser,
-                        new[]
-                        {
-                            "BaseCaptureRate", "BaseFleeRate", "CollisionRadiusM", "CollisionHeightM",
-                            "CollisionHeadRadiusM", "MovementType", "MovementTimerS", "JumpTimeS", "AttackTimerS"
-                        }, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes.Parser,
-                        new[] {"BaseStamina", "BaseAttack", "BaseDefense", "DodgeEnergyDelta"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings),
-                        global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings.Parser,
-                        new[]
-                        {
-                            "ItemId", "ItemType", "Category", "DropFreq", "DropTrainerLevel", "Pokeball", "Potion",
-                            "Revive", "Battle", "Food", "InventoryUpgrade", "XpBoost", "Incense", "EggIncubator",
-                            "FortModifier"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes.Parser, new[] {"StaPercent"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes.Parser,
-                        new[] {"IncubatorType", "Uses", "DistanceMultiplier"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes.Parser,
-                        new[] {"XpMultiplier", "BoostDurationMs"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes.Parser,
-                        new[] {"ItemEffect", "ItemEffectPercent", "GrowthPercent"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes.Parser,
-                        new[] {"ModifierLifetimeSeconds", "TroyDiskNumPokemonSpawned"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes.Parser,
-                        new[]
-                        {
-                            "IncenseLifetimeSeconds", "PokemonType", "PokemonIncenseTypeProbability",
-                            "StandingTimeBetweenEncountersSeconds", "MovingTimeBetweenEncounterSeconds",
-                            "DistanceRequiredForShorterIntervalMeters", "PokemonAttractedLengthSec"
-                        }, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(
-                        typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes.Parser,
-                        new[] {"AdditionalStorage", "UpgradeType"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes.Parser,
-                        new[] {"ItemEffect", "CaptureMulti", "CaptureMultiEffect", "ItemEffectMod"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes.Parser,
-                        new[] {"StaPercent", "StaAmount"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes),
-                        global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes.Parser, new[] {"StaPercent"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemon),
-                        global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemon.Parser, new[] {"PokemonId"}, null,
-                        null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemonOut),
-                        global::PokemonGo.RocketAPI.GeneratedCode.TransferPokemonOut.Parser,
-                        new[] {"Status", "CandyAwarded"}, null, null, null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemon),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemon.Parser, new[] {"PokemonId"}, null, null,
-                        null),
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemonOut),
-                        global::PokemonGo.RocketAPI.GeneratedCode.EvolvePokemonOut.Parser,
-                        new[] {"Result", "EvolvedPokemon", "ExpAwarded", "CandyAwarded"}, null, null, null)
-                }));
-        }
-
-        #endregion
-    }
-
-    #region Messages
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GetPlayerResponse : pb::IMessage<GetPlayerResponse>
-    {
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-
-        /// <summary>Field number for the "profile" field.</summary>
-        public const int ProfileFieldNumber = 2;
-
-        private static readonly pb::MessageParser<GetPlayerResponse> _parser =
-            new pb::MessageParser<GetPlayerResponse>(() => new GetPlayerResponse());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.Profile profile_;
-        private int unknown1_;
-
-        public GetPlayerResponse()
-        {
-            OnConstruction();
-        }
-
-        public GetPlayerResponse(GetPlayerResponse other) : this()
-        {
-            unknown1_ = other.unknown1_;
-            Profile = other.profile_ != null ? other.Profile.Clone() : null;
-        }
-
-        public static pb::MessageParser<GetPlayerResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[0]; }
-        }
-
-        public int Unknown1
-        {
-            get { return unknown1_; }
-            set { unknown1_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Profile Profile
-        {
-            get { return profile_; }
-            set { profile_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GetPlayerResponse Clone()
-        {
-            return new GetPlayerResponse(this);
-        }
-
-        public bool Equals(GetPlayerResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Unknown1 != other.Unknown1) return false;
-            if (!Equals(Profile, other.Profile)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Unknown1 != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Unknown1);
-            }
-            if (profile_ != null)
-            {
-                output.WriteRawTag(18);
-                output.WriteMessage(Profile);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Unknown1 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-            }
-            if (profile_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Profile);
-            }
-            return size;
-        }
-
-        public void MergeFrom(GetPlayerResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Unknown1 != 0)
-            {
-                Unknown1 = other.Unknown1;
-            }
-            if (other.profile_ != null)
-            {
-                if (profile_ == null)
-                {
-                    profile_ = new global::PokemonGo.RocketAPI.GeneratedCode.Profile();
-                }
-                Profile.MergeFrom(other.Profile);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Unknown1 = input.ReadInt32();
-                            break;
-                        }
-                    case 18:
-                        {
-                            if (profile_ == null)
-                            {
-                                profile_ = new global::PokemonGo.RocketAPI.GeneratedCode.Profile();
-                            }
-                            input.ReadMessage(profile_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GetPlayerResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-            if (profile_ != null) hash ^= Profile.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Profile : pb::IMessage<Profile>
-    {
-        /// <summary>Field number for the "creation_time" field.</summary>
-        public const int CreationTimeFieldNumber = 1;
-
-        /// <summary>Field number for the "username" field.</summary>
-        public const int UsernameFieldNumber = 2;
-
-        /// <summary>Field number for the "team" field.</summary>
-        public const int TeamFieldNumber = 5;
-
-        /// <summary>Field number for the "tutorial" field.</summary>
-        public const int TutorialFieldNumber = 7;
-
-        /// <summary>Field number for the "avatar" field.</summary>
-        public const int AvatarFieldNumber = 8;
-
-        /// <summary>Field number for the "poke_storage" field.</summary>
-        public const int PokeStorageFieldNumber = 9;
-
-        /// <summary>Field number for the "item_storage" field.</summary>
-        public const int ItemStorageFieldNumber = 10;
-
-        /// <summary>Field number for the "daily_bonus" field.</summary>
-        public const int DailyBonusFieldNumber = 11;
-
-        /// <summary>Field number for the "unknown12" field.</summary>
-        public const int Unknown12FieldNumber = 12;
-
-        /// <summary>Field number for the "unknown13" field.</summary>
-        public const int Unknown13FieldNumber = 13;
-
-        /// <summary>Field number for the "currency" field.</summary>
-        public const int CurrencyFieldNumber = 14;
-
-        private static readonly pb::MessageParser<Profile> _parser = new pb::MessageParser<Profile>(() => new Profile());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.Currency>
-            _repeated_currency_codec
-                = pb::FieldCodec.ForMessage(114, global::PokemonGo.RocketAPI.GeneratedCode.Currency.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Currency> currency_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Currency>();
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails avatar_;
-        private long creationTime_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus dailyBonus_;
-        private int itemStorage_;
-        private int pokeStorage_;
-        private global::AllEnum.TeamColor team_ = 0;
-        private pb::ByteString tutorial_ = pb::ByteString.Empty;
-        private pb::ByteString unknown12_ = pb::ByteString.Empty;
-        private pb::ByteString unknown13_ = pb::ByteString.Empty;
-        private string username_ = "";
-
-        public Profile()
-        {
-            OnConstruction();
-        }
-
-        public Profile(Profile other) : this()
-        {
-            creationTime_ = other.creationTime_;
-            username_ = other.username_;
-            team_ = other.team_;
-            tutorial_ = other.tutorial_;
-            Avatar = other.avatar_ != null ? other.Avatar.Clone() : null;
-            pokeStorage_ = other.pokeStorage_;
-            itemStorage_ = other.itemStorage_;
-            DailyBonus = other.dailyBonus_ != null ? other.DailyBonus.Clone() : null;
-            unknown12_ = other.unknown12_;
-            unknown13_ = other.unknown13_;
-            currency_ = other.currency_.Clone();
-        }
-
-        public static pb::MessageParser<Profile> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[1]; }
-        }
-
-        public long CreationTime
-        {
-            get { return creationTime_; }
-            set { creationTime_ = value; }
-        }
-
-        public string Username
-        {
-            get { return username_; }
-            set { username_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::AllEnum.TeamColor Team
-        {
-            get { return team_; }
-            set { team_ = value; }
-        }
-
-        public pb::ByteString Tutorial
-        {
-            get { return tutorial_; }
-            set { tutorial_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails Avatar
-        {
-            get { return avatar_; }
-            set { avatar_ = value; }
-        }
-
-        public int PokeStorage
-        {
-            get { return pokeStorage_; }
-            set { pokeStorage_ = value; }
-        }
-
-        public int ItemStorage
-        {
-            get { return itemStorage_; }
-            set { itemStorage_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus DailyBonus
-        {
-            get { return dailyBonus_; }
-            set { dailyBonus_ = value; }
-        }
-
-        public pb::ByteString Unknown12
-        {
-            get { return unknown12_; }
-            set { unknown12_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public pb::ByteString Unknown13
-        {
-            get { return unknown13_; }
-            set { unknown13_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Currency> Currency
-        {
-            get { return currency_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public Profile Clone()
-        {
-            return new Profile(this);
-        }
-
-        public bool Equals(Profile other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (CreationTime != other.CreationTime) return false;
-            if (Username != other.Username) return false;
-            if (Team != other.Team) return false;
-            if (Tutorial != other.Tutorial) return false;
-            if (!Equals(Avatar, other.Avatar)) return false;
-            if (PokeStorage != other.PokeStorage) return false;
-            if (ItemStorage != other.ItemStorage) return false;
-            if (!Equals(DailyBonus, other.DailyBonus)) return false;
-            if (Unknown12 != other.Unknown12) return false;
-            if (Unknown13 != other.Unknown13) return false;
-            if (!currency_.Equals(other.currency_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (CreationTime != 0L)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt64(CreationTime);
-            }
-            if (Username.Length != 0)
-            {
-                output.WriteRawTag(18);
-                output.WriteString(Username);
-            }
-            if (Team != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteEnum((int)Team);
-            }
-            if (Tutorial.Length != 0)
-            {
-                output.WriteRawTag(58);
-                output.WriteBytes(Tutorial);
-            }
-            if (avatar_ != null)
-            {
-                output.WriteRawTag(66);
-                output.WriteMessage(Avatar);
-            }
-            if (PokeStorage != 0)
-            {
-                output.WriteRawTag(72);
-                output.WriteInt32(PokeStorage);
-            }
-            if (ItemStorage != 0)
-            {
-                output.WriteRawTag(80);
-                output.WriteInt32(ItemStorage);
-            }
-            if (dailyBonus_ != null)
-            {
-                output.WriteRawTag(90);
-                output.WriteMessage(DailyBonus);
-            }
-            if (Unknown12.Length != 0)
-            {
-                output.WriteRawTag(98);
-                output.WriteBytes(Unknown12);
-            }
-            if (Unknown13.Length != 0)
-            {
-                output.WriteRawTag(106);
-                output.WriteBytes(Unknown13);
-            }
-            currency_.WriteTo(output, _repeated_currency_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (CreationTime != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(CreationTime);
-            }
-            if (Username.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
-            }
-            if (Team != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Team);
-            }
-            if (Tutorial.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Tutorial);
-            }
-            if (avatar_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Avatar);
-            }
-            if (PokeStorage != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStorage);
-            }
-            if (ItemStorage != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemStorage);
-            }
-            if (dailyBonus_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(DailyBonus);
-            }
-            if (Unknown12.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown12);
-            }
-            if (Unknown13.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown13);
-            }
-            size += currency_.CalculateSize(_repeated_currency_codec);
-            return size;
-        }
-
-        public void MergeFrom(Profile other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.CreationTime != 0L)
-            {
-                CreationTime = other.CreationTime;
-            }
-            if (other.Username.Length != 0)
-            {
-                Username = other.Username;
-            }
-            if (other.Team != 0)
-            {
-                Team = other.Team;
-            }
-            if (other.Tutorial.Length != 0)
-            {
-                Tutorial = other.Tutorial;
-            }
-            if (other.avatar_ != null)
-            {
-                if (avatar_ == null)
-                {
-                    avatar_ = new global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails();
-                }
-                Avatar.MergeFrom(other.Avatar);
-            }
-            if (other.PokeStorage != 0)
-            {
-                PokeStorage = other.PokeStorage;
-            }
-            if (other.ItemStorage != 0)
-            {
-                ItemStorage = other.ItemStorage;
-            }
-            if (other.dailyBonus_ != null)
-            {
-                if (dailyBonus_ == null)
-                {
-                    dailyBonus_ = new global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus();
-                }
-                DailyBonus.MergeFrom(other.DailyBonus);
-            }
-            if (other.Unknown12.Length != 0)
-            {
-                Unknown12 = other.Unknown12;
-            }
-            if (other.Unknown13.Length != 0)
-            {
-                Unknown13 = other.Unknown13;
-            }
-            currency_.Add(other.currency_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            CreationTime = input.ReadInt64();
-                            break;
-                        }
-                    case 18:
-                        {
-                            Username = input.ReadString();
-                            break;
-                        }
-                    case 40:
-                        {
-                            team_ = (global::AllEnum.TeamColor)input.ReadEnum();
-                            break;
-                        }
-                    case 58:
-                        {
-                            Tutorial = input.ReadBytes();
-                            break;
-                        }
-                    case 66:
-                        {
-                            if (avatar_ == null)
-                            {
-                                avatar_ = new global::PokemonGo.RocketAPI.GeneratedCode.AvatarDetails();
-                            }
-                            input.ReadMessage(avatar_);
-                            break;
-                        }
-                    case 72:
-                        {
-                            PokeStorage = input.ReadInt32();
-                            break;
-                        }
-                    case 80:
-                        {
-                            ItemStorage = input.ReadInt32();
-                            break;
-                        }
-                    case 90:
-                        {
-                            if (dailyBonus_ == null)
-                            {
-                                dailyBonus_ = new global::PokemonGo.RocketAPI.GeneratedCode.DailyBonus();
-                            }
-                            input.ReadMessage(dailyBonus_);
-                            break;
-                        }
-                    case 98:
-                        {
-                            Unknown12 = input.ReadBytes();
-                            break;
-                        }
-                    case 106:
-                        {
-                            Unknown13 = input.ReadBytes();
-                            break;
-                        }
-                    case 114:
-                        {
-                            currency_.AddEntriesFrom(input, _repeated_currency_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as Profile);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (CreationTime != 0L) hash ^= CreationTime.GetHashCode();
-            if (Username.Length != 0) hash ^= Username.GetHashCode();
-            if (Team != 0) hash ^= Team.GetHashCode();
-            if (Tutorial.Length != 0) hash ^= Tutorial.GetHashCode();
-            if (avatar_ != null) hash ^= Avatar.GetHashCode();
-            if (PokeStorage != 0) hash ^= PokeStorage.GetHashCode();
-            if (ItemStorage != 0) hash ^= ItemStorage.GetHashCode();
-            if (dailyBonus_ != null) hash ^= DailyBonus.GetHashCode();
-            if (Unknown12.Length != 0) hash ^= Unknown12.GetHashCode();
-            if (Unknown13.Length != 0) hash ^= Unknown13.GetHashCode();
-            hash ^= currency_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DailyBonus : pb::IMessage<DailyBonus>
-    {
-        /// <summary>Field number for the "NextCollectTimestampMs" field.</summary>
-        public const int NextCollectTimestampMsFieldNumber = 1;
-
-        /// <summary>Field number for the "NextDefenderBonusCollectTimestampMs" field.</summary>
-        public const int NextDefenderBonusCollectTimestampMsFieldNumber = 2;
-
-        private static readonly pb::MessageParser<DailyBonus> _parser =
-            new pb::MessageParser<DailyBonus>(() => new DailyBonus());
-
-        private long nextCollectTimestampMs_;
-        private long nextDefenderBonusCollectTimestampMs_;
-
-        public DailyBonus()
-        {
-            OnConstruction();
-        }
-
-        public DailyBonus(DailyBonus other) : this()
-        {
-            nextCollectTimestampMs_ = other.nextCollectTimestampMs_;
-            nextDefenderBonusCollectTimestampMs_ = other.nextDefenderBonusCollectTimestampMs_;
-        }
-
-        public static pb::MessageParser<DailyBonus> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[2]; }
-        }
-
-        public long NextCollectTimestampMs
-        {
-            get { return nextCollectTimestampMs_; }
-            set { nextCollectTimestampMs_ = value; }
-        }
-
-        public long NextDefenderBonusCollectTimestampMs
-        {
-            get { return nextDefenderBonusCollectTimestampMs_; }
-            set { nextDefenderBonusCollectTimestampMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DailyBonus Clone()
-        {
-            return new DailyBonus(this);
-        }
-
-        public bool Equals(DailyBonus other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (NextCollectTimestampMs != other.NextCollectTimestampMs) return false;
-            if (NextDefenderBonusCollectTimestampMs != other.NextDefenderBonusCollectTimestampMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (NextCollectTimestampMs != 0L)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt64(NextCollectTimestampMs);
-            }
-            if (NextDefenderBonusCollectTimestampMs != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(NextDefenderBonusCollectTimestampMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (NextCollectTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextCollectTimestampMs);
-            }
-            if (NextDefenderBonusCollectTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextDefenderBonusCollectTimestampMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(DailyBonus other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.NextCollectTimestampMs != 0L)
-            {
-                NextCollectTimestampMs = other.NextCollectTimestampMs;
-            }
-            if (other.NextDefenderBonusCollectTimestampMs != 0L)
-            {
-                NextDefenderBonusCollectTimestampMs = other.NextDefenderBonusCollectTimestampMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            NextCollectTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            NextDefenderBonusCollectTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DailyBonus);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (NextCollectTimestampMs != 0L) hash ^= NextCollectTimestampMs.GetHashCode();
-            if (NextDefenderBonusCollectTimestampMs != 0L) hash ^= NextDefenderBonusCollectTimestampMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Currency : pb::IMessage<Currency>
-    {
-        /// <summary>Field number for the "type" field.</summary>
-        public const int TypeFieldNumber = 1;
-
-        /// <summary>Field number for the "amount" field.</summary>
-        public const int AmountFieldNumber = 2;
-
-        private static readonly pb::MessageParser<Currency> _parser =
-            new pb::MessageParser<Currency>(() => new Currency());
-
-        private int amount_;
-        private string type_ = "";
-
-        public Currency()
-        {
-            OnConstruction();
-        }
-
-        public Currency(Currency other) : this()
-        {
-            type_ = other.type_;
-            amount_ = other.amount_;
-        }
-
-        public static pb::MessageParser<Currency> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[3]; }
-        }
-
-        public string Type
-        {
-            get { return type_; }
-            set { type_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public int Amount
-        {
-            get { return amount_; }
-            set { amount_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public Currency Clone()
-        {
-            return new Currency(this);
-        }
-
-        public bool Equals(Currency other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Type != other.Type) return false;
-            if (Amount != other.Amount) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Type.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(Type);
-            }
-            if (Amount != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(Amount);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Type.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Type);
-            }
-            if (Amount != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Amount);
-            }
-            return size;
-        }
-
-        public void MergeFrom(Currency other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Type.Length != 0)
-            {
-                Type = other.Type;
-            }
-            if (other.Amount != 0)
-            {
-                Amount = other.Amount;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            Type = input.ReadString();
-                            break;
-                        }
-                    case 16:
-                        {
-                            Amount = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as Currency);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Type.Length != 0) hash ^= Type.GetHashCode();
-            if (Amount != 0) hash ^= Amount.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class AvatarDetails : pb::IMessage<AvatarDetails>
-    {
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-
-        /// <summary>Field number for the "unknown3" field.</summary>
-        public const int Unknown3FieldNumber = 3;
-
-        /// <summary>Field number for the "unknown9" field.</summary>
-        public const int Unknown9FieldNumber = 9;
-
-        /// <summary>Field number for the "unknown10" field.</summary>
-        public const int Unknown10FieldNumber = 10;
-
-        private static readonly pb::MessageParser<AvatarDetails> _parser =
-            new pb::MessageParser<AvatarDetails>(() => new AvatarDetails());
-
-        private int unknown10_;
-        private int unknown2_;
-        private int unknown3_;
-        private int unknown9_;
-
-        public AvatarDetails()
-        {
-            OnConstruction();
-        }
-
-        public AvatarDetails(AvatarDetails other) : this()
-        {
-            unknown2_ = other.unknown2_;
-            unknown3_ = other.unknown3_;
-            unknown9_ = other.unknown9_;
-            unknown10_ = other.unknown10_;
-        }
-
-        public static pb::MessageParser<AvatarDetails> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[4]; }
-        }
-
-        public int Unknown2
-        {
-            get { return unknown2_; }
-            set { unknown2_ = value; }
-        }
-
-        public int Unknown3
-        {
-            get { return unknown3_; }
-            set { unknown3_ = value; }
-        }
-
-        public int Unknown9
-        {
-            get { return unknown9_; }
-            set { unknown9_ = value; }
-        }
-
-        public int Unknown10
-        {
-            get { return unknown10_; }
-            set { unknown10_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public AvatarDetails Clone()
-        {
-            return new AvatarDetails(this);
-        }
-
-        public bool Equals(AvatarDetails other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Unknown2 != other.Unknown2) return false;
-            if (Unknown3 != other.Unknown3) return false;
-            if (Unknown9 != other.Unknown9) return false;
-            if (Unknown10 != other.Unknown10) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Unknown2 != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(Unknown2);
-            }
-            if (Unknown3 != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(Unknown3);
-            }
-            if (Unknown9 != 0)
-            {
-                output.WriteRawTag(72);
-                output.WriteInt32(Unknown9);
-            }
-            if (Unknown10 != 0)
-            {
-                output.WriteRawTag(80);
-                output.WriteInt32(Unknown10);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Unknown2 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown2);
-            }
-            if (Unknown3 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown3);
-            }
-            if (Unknown9 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown9);
-            }
-            if (Unknown10 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown10);
-            }
-            return size;
-        }
-
-        public void MergeFrom(AvatarDetails other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Unknown2 != 0)
-            {
-                Unknown2 = other.Unknown2;
-            }
-            if (other.Unknown3 != 0)
-            {
-                Unknown3 = other.Unknown3;
-            }
-            if (other.Unknown9 != 0)
-            {
-                Unknown9 = other.Unknown9;
-            }
-            if (other.Unknown10 != 0)
-            {
-                Unknown10 = other.Unknown10;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 16:
-                        {
-                            Unknown2 = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            Unknown3 = input.ReadInt32();
-                            break;
-                        }
-                    case 72:
-                        {
-                            Unknown9 = input.ReadInt32();
-                            break;
-                        }
-                    case 80:
-                        {
-                            Unknown10 = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as AvatarDetails);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Unknown2 != 0) hash ^= Unknown2.GetHashCode();
-            if (Unknown3 != 0) hash ^= Unknown3.GetHashCode();
-            if (Unknown9 != 0) hash ^= Unknown9.GetHashCode();
-            if (Unknown10 != 0) hash ^= Unknown10.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DownloadSettingsRequest : pb::IMessage<DownloadSettingsRequest>
-    {
-        /// <summary>Field number for the "hash" field.</summary>
-        public const int HashFieldNumber = 1;
-
-        private static readonly pb::MessageParser<DownloadSettingsRequest> _parser =
-            new pb::MessageParser<DownloadSettingsRequest>(() => new DownloadSettingsRequest());
-
-        private string hash_ = "";
-
-        public DownloadSettingsRequest()
-        {
-            OnConstruction();
-        }
-
-        public DownloadSettingsRequest(DownloadSettingsRequest other) : this()
-        {
-            hash_ = other.hash_;
-        }
-
-        public static pb::MessageParser<DownloadSettingsRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[5]; }
-        }
-
-        public string Hash
-        {
-            get { return hash_; }
-            set { hash_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DownloadSettingsRequest Clone()
-        {
-            return new DownloadSettingsRequest(this);
-        }
-
-        public bool Equals(DownloadSettingsRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Hash != other.Hash) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Hash.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(Hash);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Hash.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Hash);
-            }
-            return size;
-        }
-
-        public void MergeFrom(DownloadSettingsRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Hash.Length != 0)
-            {
-                Hash = other.Hash;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            Hash = input.ReadString();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DownloadSettingsRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Hash.Length != 0) hash ^= Hash.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GetInventoryResponse : pb::IMessage<GetInventoryResponse>
-    {
-        /// <summary>Field number for the "success" field.</summary>
-        public const int SuccessFieldNumber = 1;
-
-        /// <summary>Field number for the "inventory_delta" field.</summary>
-        public const int InventoryDeltaFieldNumber = 2;
-
-        private static readonly pb::MessageParser<GetInventoryResponse> _parser =
-            new pb::MessageParser<GetInventoryResponse>(() => new GetInventoryResponse());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta inventoryDelta_;
-        private bool success_;
-
-        public GetInventoryResponse()
-        {
-            OnConstruction();
-        }
-
-        public GetInventoryResponse(GetInventoryResponse other) : this()
-        {
-            success_ = other.success_;
-            InventoryDelta = other.inventoryDelta_ != null ? other.InventoryDelta.Clone() : null;
-        }
-
-        public static pb::MessageParser<GetInventoryResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[6]; }
-        }
-
-        public bool Success
-        {
-            get { return success_; }
-            set { success_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta InventoryDelta
-        {
-            get { return inventoryDelta_; }
-            set { inventoryDelta_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GetInventoryResponse Clone()
-        {
-            return new GetInventoryResponse(this);
-        }
-
-        public bool Equals(GetInventoryResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Success != other.Success) return false;
-            if (!Equals(InventoryDelta, other.InventoryDelta)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Success != false)
-            {
-                output.WriteRawTag(8);
-                output.WriteBool(Success);
-            }
-            if (inventoryDelta_ != null)
-            {
-                output.WriteRawTag(18);
-                output.WriteMessage(InventoryDelta);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Success != false)
-            {
-                size += 1 + 1;
-            }
-            if (inventoryDelta_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryDelta);
-            }
-            return size;
-        }
-
-        public void MergeFrom(GetInventoryResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Success != false)
-            {
-                Success = other.Success;
-            }
-            if (other.inventoryDelta_ != null)
-            {
-                if (inventoryDelta_ == null)
-                {
-                    inventoryDelta_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta();
-                }
-                InventoryDelta.MergeFrom(other.InventoryDelta);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Success = input.ReadBool();
-                            break;
-                        }
-                    case 18:
-                        {
-                            if (inventoryDelta_ == null)
-                            {
-                                inventoryDelta_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryDelta();
-                            }
-                            input.ReadMessage(inventoryDelta_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GetInventoryResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Success != false) hash ^= Success.GetHashCode();
-            if (inventoryDelta_ != null) hash ^= InventoryDelta.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventoryDelta : pb::IMessage<InventoryDelta>
-    {
-        /// <summary>Field number for the "original_timestamp_ms" field.</summary>
-        public const int OriginalTimestampMsFieldNumber = 1;
-
-        /// <summary>Field number for the "new_timestamp_ms" field.</summary>
-        public const int NewTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "inventory_items" field.</summary>
-        public const int InventoryItemsFieldNumber = 3;
-
-        private static readonly pb::MessageParser<InventoryDelta> _parser =
-            new pb::MessageParser<InventoryDelta>(() => new InventoryDelta());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem>
-            _repeated_inventoryItems_codec
-                = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem> inventoryItems_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem>();
-
-        private long newTimestampMs_;
-        private long originalTimestampMs_;
-
-        public InventoryDelta()
-        {
-            OnConstruction();
-        }
-
-        public InventoryDelta(InventoryDelta other) : this()
-        {
-            originalTimestampMs_ = other.originalTimestampMs_;
-            newTimestampMs_ = other.newTimestampMs_;
-            inventoryItems_ = other.inventoryItems_.Clone();
-        }
-
-        public static pb::MessageParser<InventoryDelta> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[7]; }
-        }
-
-        public long OriginalTimestampMs
-        {
-            get { return originalTimestampMs_; }
-            set { originalTimestampMs_ = value; }
-        }
-
-        public long NewTimestampMs
-        {
-            get { return newTimestampMs_; }
-            set { newTimestampMs_ = value; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryItem> InventoryItems
-        {
-            get { return inventoryItems_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventoryDelta Clone()
-        {
-            return new InventoryDelta(this);
-        }
-
-        public bool Equals(InventoryDelta other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (OriginalTimestampMs != other.OriginalTimestampMs) return false;
-            if (NewTimestampMs != other.NewTimestampMs) return false;
-            if (!inventoryItems_.Equals(other.inventoryItems_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (OriginalTimestampMs != 0L)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt64(OriginalTimestampMs);
-            }
-            if (NewTimestampMs != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(NewTimestampMs);
-            }
-            inventoryItems_.WriteTo(output, _repeated_inventoryItems_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (OriginalTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(OriginalTimestampMs);
-            }
-            if (NewTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(NewTimestampMs);
-            }
-            size += inventoryItems_.CalculateSize(_repeated_inventoryItems_codec);
-            return size;
-        }
-
-        public void MergeFrom(InventoryDelta other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.OriginalTimestampMs != 0L)
-            {
-                OriginalTimestampMs = other.OriginalTimestampMs;
-            }
-            if (other.NewTimestampMs != 0L)
-            {
-                NewTimestampMs = other.NewTimestampMs;
-            }
-            inventoryItems_.Add(other.inventoryItems_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            OriginalTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            NewTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 26:
-                        {
-                            inventoryItems_.AddEntriesFrom(input, _repeated_inventoryItems_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventoryDelta);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (OriginalTimestampMs != 0L) hash ^= OriginalTimestampMs.GetHashCode();
-            if (NewTimestampMs != 0L) hash ^= NewTimestampMs.GetHashCode();
-            hash ^= inventoryItems_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventoryItem : pb::IMessage<InventoryItem>
-    {
-        /// <summary>Field number for the "modified_timestamp_ms" field.</summary>
-        public const int ModifiedTimestampMsFieldNumber = 1;
-
-        /// <summary>Field number for the "deleted_item_key" field.</summary>
-        public const int DeletedItemKeyFieldNumber = 2;
-
-        /// <summary>Field number for the "inventory_item_data" field.</summary>
-        public const int InventoryItemDataFieldNumber = 3;
-
-        private static readonly pb::MessageParser<InventoryItem> _parser =
-            new pb::MessageParser<InventoryItem>(() => new InventoryItem());
-
-        private long deletedItemKey_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData inventoryItemData_;
-        private long modifiedTimestampMs_;
-
-        public InventoryItem()
-        {
-            OnConstruction();
-        }
-
-        public InventoryItem(InventoryItem other) : this()
-        {
-            modifiedTimestampMs_ = other.modifiedTimestampMs_;
-            deletedItemKey_ = other.deletedItemKey_;
-            InventoryItemData = other.inventoryItemData_ != null ? other.InventoryItemData.Clone() : null;
-        }
-
-        public static pb::MessageParser<InventoryItem> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[8]; }
-        }
-
-        public long ModifiedTimestampMs
-        {
-            get { return modifiedTimestampMs_; }
-            set { modifiedTimestampMs_ = value; }
-        }
-
-        public long DeletedItemKey
-        {
-            get { return deletedItemKey_; }
-            set { deletedItemKey_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData InventoryItemData
-        {
-            get { return inventoryItemData_; }
-            set { inventoryItemData_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventoryItem Clone()
-        {
-            return new InventoryItem(this);
-        }
-
-        public bool Equals(InventoryItem other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ModifiedTimestampMs != other.ModifiedTimestampMs) return false;
-            if (DeletedItemKey != other.DeletedItemKey) return false;
-            if (!Equals(InventoryItemData, other.InventoryItemData)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ModifiedTimestampMs != 0L)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt64(ModifiedTimestampMs);
-            }
-            if (DeletedItemKey != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(DeletedItemKey);
-            }
-            if (inventoryItemData_ != null)
-            {
-                output.WriteRawTag(26);
-                output.WriteMessage(InventoryItemData);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ModifiedTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ModifiedTimestampMs);
-            }
-            if (DeletedItemKey != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(DeletedItemKey);
-            }
-            if (inventoryItemData_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryItemData);
-            }
-            return size;
-        }
-
-        public void MergeFrom(InventoryItem other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ModifiedTimestampMs != 0L)
-            {
-                ModifiedTimestampMs = other.ModifiedTimestampMs;
-            }
-            if (other.DeletedItemKey != 0L)
-            {
-                DeletedItemKey = other.DeletedItemKey;
-            }
-            if (other.inventoryItemData_ != null)
-            {
-                if (inventoryItemData_ == null)
-                {
-                    inventoryItemData_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData();
-                }
-                InventoryItemData.MergeFrom(other.InventoryItemData);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            ModifiedTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            DeletedItemKey = input.ReadInt64();
-                            break;
-                        }
-                    case 26:
-                        {
-                            if (inventoryItemData_ == null)
-                            {
-                                inventoryItemData_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryItemData();
-                            }
-                            input.ReadMessage(inventoryItemData_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventoryItem);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ModifiedTimestampMs != 0L) hash ^= ModifiedTimestampMs.GetHashCode();
-            if (DeletedItemKey != 0L) hash ^= DeletedItemKey.GetHashCode();
-            if (inventoryItemData_ != null) hash ^= InventoryItemData.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventoryItemData : pb::IMessage<InventoryItemData>
-    {
-        /// <summary>Field number for the "pokemon" field.</summary>
-        public const int PokemonFieldNumber = 1;
-
-        /// <summary>Field number for the "item" field.</summary>
-        public const int ItemFieldNumber = 2;
-
-        /// <summary>Field number for the "pokedex_entry" field.</summary>
-        public const int PokedexEntryFieldNumber = 3;
-
-        /// <summary>Field number for the "player_stats" field.</summary>
-        public const int PlayerStatsFieldNumber = 4;
-
-        /// <summary>Field number for the "player_currency" field.</summary>
-        public const int PlayerCurrencyFieldNumber = 5;
-
-        /// <summary>Field number for the "player_camera" field.</summary>
-        public const int PlayerCameraFieldNumber = 6;
-
-        /// <summary>Field number for the "inventory_upgrades" field.</summary>
-        public const int InventoryUpgradesFieldNumber = 7;
-
-        /// <summary>Field number for the "applied_items" field.</summary>
-        public const int AppliedItemsFieldNumber = 8;
-
-        /// <summary>Field number for the "egg_incubators" field.</summary>
-        public const int EggIncubatorsFieldNumber = 9;
-
-        /// <summary>Field number for the "pokemon_family" field.</summary>
-        public const int PokemonFamilyFieldNumber = 10;
-
-        private static readonly pb::MessageParser<InventoryItemData> _parser =
-            new pb::MessageParser<InventoryItemData>(() => new InventoryItemData());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems appliedItems_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators eggIncubators_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades inventoryUpgrades_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.Item item_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera playerCamera_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency playerCurrency_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats playerStats_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry pokedexEntry_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemon_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily pokemonFamily_;
-
-        public InventoryItemData()
-        {
-            OnConstruction();
-        }
-
-        public InventoryItemData(InventoryItemData other) : this()
-        {
-            Pokemon = other.pokemon_ != null ? other.Pokemon.Clone() : null;
-            Item = other.item_ != null ? other.Item.Clone() : null;
-            PokedexEntry = other.pokedexEntry_ != null ? other.PokedexEntry.Clone() : null;
-            PlayerStats = other.playerStats_ != null ? other.PlayerStats.Clone() : null;
-            PlayerCurrency = other.playerCurrency_ != null ? other.PlayerCurrency.Clone() : null;
-            PlayerCamera = other.playerCamera_ != null ? other.PlayerCamera.Clone() : null;
-            InventoryUpgrades = other.inventoryUpgrades_ != null ? other.InventoryUpgrades.Clone() : null;
-            AppliedItems = other.appliedItems_ != null ? other.AppliedItems.Clone() : null;
-            EggIncubators = other.eggIncubators_ != null ? other.EggIncubators.Clone() : null;
-            PokemonFamily = other.pokemonFamily_ != null ? other.PokemonFamily.Clone() : null;
-        }
-
-        public static pb::MessageParser<InventoryItemData> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[9]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData Pokemon
-        {
-            get { return pokemon_; }
-            set { pokemon_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Item Item
-        {
-            get { return item_; }
-            set { item_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry PokedexEntry
-        {
-            get { return pokedexEntry_; }
-            set { pokedexEntry_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats PlayerStats
-        {
-            get { return playerStats_; }
-            set { playerStats_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency PlayerCurrency
-        {
-            get { return playerCurrency_; }
-            set { playerCurrency_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera PlayerCamera
-        {
-            get { return playerCamera_; }
-            set { playerCamera_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades InventoryUpgrades
-        {
-            get { return inventoryUpgrades_; }
-            set { inventoryUpgrades_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems AppliedItems
-        {
-            get { return appliedItems_; }
-            set { appliedItems_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators EggIncubators
-        {
-            get { return eggIncubators_; }
-            set { eggIncubators_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily PokemonFamily
-        {
-            get { return pokemonFamily_; }
-            set { pokemonFamily_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventoryItemData Clone()
-        {
-            return new InventoryItemData(this);
-        }
-
-        public bool Equals(InventoryItemData other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!Equals(Pokemon, other.Pokemon)) return false;
-            if (!Equals(Item, other.Item)) return false;
-            if (!Equals(PokedexEntry, other.PokedexEntry)) return false;
-            if (!Equals(PlayerStats, other.PlayerStats)) return false;
-            if (!Equals(PlayerCurrency, other.PlayerCurrency)) return false;
-            if (!Equals(PlayerCamera, other.PlayerCamera)) return false;
-            if (!Equals(InventoryUpgrades, other.InventoryUpgrades)) return false;
-            if (!Equals(AppliedItems, other.AppliedItems)) return false;
-            if (!Equals(EggIncubators, other.EggIncubators)) return false;
-            if (!Equals(PokemonFamily, other.PokemonFamily)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (pokemon_ != null)
-            {
-                output.WriteRawTag(10);
-                output.WriteMessage(Pokemon);
-            }
-            if (item_ != null)
-            {
-                output.WriteRawTag(18);
-                output.WriteMessage(Item);
-            }
-            if (pokedexEntry_ != null)
-            {
-                output.WriteRawTag(26);
-                output.WriteMessage(PokedexEntry);
-            }
-            if (playerStats_ != null)
-            {
-                output.WriteRawTag(34);
-                output.WriteMessage(PlayerStats);
-            }
-            if (playerCurrency_ != null)
-            {
-                output.WriteRawTag(42);
-                output.WriteMessage(PlayerCurrency);
-            }
-            if (playerCamera_ != null)
-            {
-                output.WriteRawTag(50);
-                output.WriteMessage(PlayerCamera);
-            }
-            if (inventoryUpgrades_ != null)
-            {
-                output.WriteRawTag(58);
-                output.WriteMessage(InventoryUpgrades);
-            }
-            if (appliedItems_ != null)
-            {
-                output.WriteRawTag(66);
-                output.WriteMessage(AppliedItems);
-            }
-            if (eggIncubators_ != null)
-            {
-                output.WriteRawTag(74);
-                output.WriteMessage(EggIncubators);
-            }
-            if (pokemonFamily_ != null)
-            {
-                output.WriteRawTag(82);
-                output.WriteMessage(PokemonFamily);
-            }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public sealed partial class RecycleInventoryItem : pb::IMessage<RecycleInventoryItem>
-        {
-            private static readonly pb::MessageParser<RecycleInventoryItem> _parser = new pb::MessageParser<RecycleInventoryItem>(() => new RecycleInventoryItem());
-            public static pb::MessageParser<RecycleInventoryItem> Parser { get { return _parser; } }
-
-            public static pbr::MessageDescriptor Descriptor
-            {
-                get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[10]; }
-            }
-
-            pbr::MessageDescriptor pb::IMessage.Descriptor
-            {
-                get { return Descriptor; }
-            }
-
-            public RecycleInventoryItem()
-            {
-                OnConstruction();
-            }
-
-            partial void OnConstruction();
-
-            public RecycleInventoryItem(RecycleInventoryItem other) : this()
-            {
-                itemId_ = other.itemId_;
-                count_ = other.count_;
-            }
-
-            public RecycleInventoryItem Clone()
-            {
-                return new RecycleInventoryItem(this);
-            }
-
-            /// <summary>Field number for the "item_id" field.</summary>
-            public const int ItemIdFieldNumber = 1;
-            private global::AllEnum.ItemId itemId_ = 0;
-            public global::AllEnum.ItemId ItemId
-            {
-                get { return itemId_; }
-                set
-                {
-                    itemId_ = value;
-                }
-            }
-
-            /// <summary>Field number for the "count" field.</summary>
-            public const int CountFieldNumber = 2;
-            private int count_;
-            public int Count
-            {
-                get { return count_; }
-                set
-                {
-                    count_ = value;
-                }
-            }
-
-            public override bool Equals(object other)
-            {
-                return Equals(other as RecycleInventoryItem);
-            }
-
-            public bool Equals(RecycleInventoryItem other)
-            {
-                if (ReferenceEquals(other, null))
-                {
-                    return false;
-                }
-                if (ReferenceEquals(other, this))
-                {
-                    return true;
-                }
-                if (ItemId != other.ItemId) return false;
-                if (Count != other.Count) return false;
-                return true;
-            }
-
-            public override int GetHashCode()
-            {
-                int hash = 1;
-                if (ItemId != 0) hash ^= ItemId.GetHashCode();
-                if (Count != 0) hash ^= Count.GetHashCode();
-                return hash;
-            }
-
-            public override string ToString()
-            {
-                return pb::JsonFormatter.ToDiagnosticString(this);
-            }
-
-            public void WriteTo(pb::CodedOutputStream output)
-            {
-                if (ItemId != 0)
-                {
-                    output.WriteRawTag(8);
-                    output.WriteEnum((int)ItemId);
-                }
-                if (Count != 0)
-                {
-                    output.WriteRawTag(16);
-                    output.WriteInt32(Count);
-                }
-            }
-
-            public int CalculateSize()
-            {
-                int size = 0;
-                if (ItemId != 0)
-                {
-                    size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
-                }
-                if (Count != 0)
-                {
-                    size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
-                }
-                return size;
-            }
-
-            public void MergeFrom(RecycleInventoryItem other)
-            {
-                if (other == null)
-                {
-                    return;
-                }
-                if (other.ItemId != 0)
-                {
-                    ItemId = other.ItemId;
-                }
-                if (other.Count != 0)
-                {
-                    Count = other.Count;
-                }
-            }
-
-            public void MergeFrom(pb::CodedInputStream input)
-            {
-                uint tag;
-                while ((tag = input.ReadTag()) != 0)
-                {
-                    switch (tag)
-                    {
-                        default:
-                            input.SkipLastField();
-                            break;
-                        case 8:
-                            {
-                                itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
-                                break;
-                            }
-                        case 16:
-                            {
-                                Count = input.ReadInt32();
-                                break;
-                            }
-                    }
-                }
-            }
-
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (pokemon_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokemon);
-            }
-            if (item_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
-            }
-            if (pokedexEntry_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokedexEntry);
-            }
-            if (playerStats_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerStats);
-            }
-            if (playerCurrency_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCurrency);
-            }
-            if (playerCamera_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCamera);
-            }
-            if (inventoryUpgrades_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryUpgrades);
-            }
-            if (appliedItems_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppliedItems);
-            }
-            if (eggIncubators_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubators);
-            }
-            if (pokemonFamily_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonFamily);
-            }
-            return size;
-        }
-
-        public void MergeFrom(InventoryItemData other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.pokemon_ != null)
-            {
-                if (pokemon_ == null)
-                {
-                    pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                }
-                Pokemon.MergeFrom(other.Pokemon);
-            }
-            if (other.item_ != null)
-            {
-                if (item_ == null)
-                {
-                    item_ = new global::PokemonGo.RocketAPI.GeneratedCode.Item();
-                }
-                Item.MergeFrom(other.Item);
-            }
-            if (other.pokedexEntry_ != null)
-            {
-                if (pokedexEntry_ == null)
-                {
-                    pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry();
-                }
-                PokedexEntry.MergeFrom(other.PokedexEntry);
-            }
-            if (other.playerStats_ != null)
-            {
-                if (playerStats_ == null)
-                {
-                    playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats();
-                }
-                PlayerStats.MergeFrom(other.PlayerStats);
-            }
-            if (other.playerCurrency_ != null)
-            {
-                if (playerCurrency_ == null)
-                {
-                    playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency();
-                }
-                PlayerCurrency.MergeFrom(other.PlayerCurrency);
-            }
-            if (other.playerCamera_ != null)
-            {
-                if (playerCamera_ == null)
-                {
-                    playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera();
-                }
-                PlayerCamera.MergeFrom(other.PlayerCamera);
-            }
-            if (other.inventoryUpgrades_ != null)
-            {
-                if (inventoryUpgrades_ == null)
-                {
-                    inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades();
-                }
-                InventoryUpgrades.MergeFrom(other.InventoryUpgrades);
-            }
-            if (other.appliedItems_ != null)
-            {
-                if (appliedItems_ == null)
-                {
-                    appliedItems_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems();
-                }
-                AppliedItems.MergeFrom(other.AppliedItems);
-            }
-            if (other.eggIncubators_ != null)
-            {
-                if (eggIncubators_ == null)
-                {
-                    eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators();
-                }
-                EggIncubators.MergeFrom(other.EggIncubators);
-            }
-            if (other.pokemonFamily_ != null)
-            {
-                if (pokemonFamily_ == null)
-                {
-                    pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily();
-                }
-                PokemonFamily.MergeFrom(other.PokemonFamily);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            if (pokemon_ == null)
-                            {
-                                pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                            }
-                            input.ReadMessage(pokemon_);
-                            break;
-                        }
-                    case 18:
-                        {
-                            if (item_ == null)
-                            {
-                                item_ = new global::PokemonGo.RocketAPI.GeneratedCode.Item();
-                            }
-                            input.ReadMessage(item_);
-                            break;
-                        }
-                    case 26:
-                        {
-                            if (pokedexEntry_ == null)
-                            {
-                                pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokedexEntry();
-                            }
-                            input.ReadMessage(pokedexEntry_);
-                            break;
-                        }
-                    case 34:
-                        {
-                            if (playerStats_ == null)
-                            {
-                                playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerStats();
-                            }
-                            input.ReadMessage(playerStats_);
-                            break;
-                        }
-                    case 42:
-                        {
-                            if (playerCurrency_ == null)
-                            {
-                                playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCurrency();
-                            }
-                            input.ReadMessage(playerCurrency_);
-                            break;
-                        }
-                    case 50:
-                        {
-                            if (playerCamera_ == null)
-                            {
-                                playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerCamera();
-                            }
-                            input.ReadMessage(playerCamera_);
-                            break;
-                        }
-                    case 58:
-                        {
-                            if (inventoryUpgrades_ == null)
-                            {
-                                inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrades();
-                            }
-                            input.ReadMessage(inventoryUpgrades_);
-                            break;
-                        }
-                    case 66:
-                        {
-                            if (appliedItems_ == null)
-                            {
-                                appliedItems_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItems();
-                            }
-                            input.ReadMessage(appliedItems_);
-                            break;
-                        }
-                    case 74:
-                        {
-                            if (eggIncubators_ == null)
-                            {
-                                eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubators();
-                            }
-                            input.ReadMessage(eggIncubators_);
-                            break;
-                        }
-                    case 82:
-                        {
-                            if (pokemonFamily_ == null)
-                            {
-                                pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonFamily();
-                            }
-                            input.ReadMessage(pokemonFamily_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventoryItemData);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (pokemon_ != null) hash ^= Pokemon.GetHashCode();
-            if (item_ != null) hash ^= Item.GetHashCode();
-            if (pokedexEntry_ != null) hash ^= PokedexEntry.GetHashCode();
-            if (playerStats_ != null) hash ^= PlayerStats.GetHashCode();
-            if (playerCurrency_ != null) hash ^= PlayerCurrency.GetHashCode();
-            if (playerCamera_ != null) hash ^= PlayerCamera.GetHashCode();
-            if (inventoryUpgrades_ != null) hash ^= InventoryUpgrades.GetHashCode();
-            if (appliedItems_ != null) hash ^= AppliedItems.GetHashCode();
-            if (eggIncubators_ != null) hash ^= EggIncubators.GetHashCode();
-            if (pokemonFamily_ != null) hash ^= PokemonFamily.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Pokemon : pb::IMessage<Pokemon>
-    {
-        /// <summary>Field number for the "id" field.</summary>
-        public const int IdFieldNumber = 1;
-
-        /// <summary>Field number for the "pokemon_type" field.</summary>
-        public const int PokemonTypeFieldNumber = 2;
-
-        /// <summary>Field number for the "cp" field.</summary>
-        public const int CpFieldNumber = 3;
-
-        /// <summary>Field number for the "stamina" field.</summary>
-        public const int StaminaFieldNumber = 4;
-
-        /// <summary>Field number for the "stamina_max" field.</summary>
-        public const int StaminaMaxFieldNumber = 5;
-
-        /// <summary>Field number for the "move_1" field.</summary>
-        public const int Move1FieldNumber = 6;
-
-        /// <summary>Field number for the "move_2" field.</summary>
-        public const int Move2FieldNumber = 7;
-
-        /// <summary>Field number for the "deployed_fort_id" field.</summary>
-        public const int DeployedFortIdFieldNumber = 8;
-
-        /// <summary>Field number for the "owner_name" field.</summary>
-        public const int OwnerNameFieldNumber = 9;
-
-        /// <summary>Field number for the "is_egg" field.</summary>
-        public const int IsEggFieldNumber = 10;
-
-        /// <summary>Field number for the "egg_km_walked_target" field.</summary>
-        public const int EggKmWalkedTargetFieldNumber = 11;
-
-        /// <summary>Field number for the "egg_km_walked_start" field.</summary>
-        public const int EggKmWalkedStartFieldNumber = 12;
-
-        /// <summary>Field number for the "origin" field.</summary>
-        public const int OriginFieldNumber = 14;
-
-        /// <summary>Field number for the "height_m" field.</summary>
-        public const int HeightMFieldNumber = 15;
-
-        /// <summary>Field number for the "weight_kg" field.</summary>
-        public const int WeightKgFieldNumber = 16;
-
-        /// <summary>Field number for the "individual_attack" field.</summary>
-        public const int IndividualAttackFieldNumber = 17;
-
-        /// <summary>Field number for the "individual_defense" field.</summary>
-        public const int IndividualDefenseFieldNumber = 18;
-
-        /// <summary>Field number for the "individual_stamina" field.</summary>
-        public const int IndividualStaminaFieldNumber = 19;
-
-        /// <summary>Field number for the "cp_multiplier" field.</summary>
-        public const int CpMultiplierFieldNumber = 20;
-
-        /// <summary>Field number for the "pokeball" field.</summary>
-        public const int PokeballFieldNumber = 21;
-
-        /// <summary>Field number for the "captured_cell_id" field.</summary>
-        public const int CapturedCellIdFieldNumber = 22;
-
-        /// <summary>Field number for the "battles_attacked" field.</summary>
-        public const int BattlesAttackedFieldNumber = 23;
-
-        /// <summary>Field number for the "battles_defended" field.</summary>
-        public const int BattlesDefendedFieldNumber = 24;
-
-        /// <summary>Field number for the "egg_incubator_id" field.</summary>
-        public const int EggIncubatorIdFieldNumber = 25;
-
-        /// <summary>Field number for the "creation_time_ms" field.</summary>
-        public const int CreationTimeMsFieldNumber = 26;
-
-        /// <summary>Field number for the "num_upgrades" field.</summary>
-        public const int NumUpgradesFieldNumber = 27;
-
-        /// <summary>Field number for the "additional_cp_multiplier" field.</summary>
-        public const int AdditionalCpMultiplierFieldNumber = 28;
-
-        /// <summary>Field number for the "favorite" field.</summary>
-        public const int FavoriteFieldNumber = 29;
-
-        /// <summary>Field number for the "nickname" field.</summary>
-        public const int NicknameFieldNumber = 30;
-
-        /// <summary>Field number for the "from_fort" field.</summary>
-        public const int FromFortFieldNumber = 31;
-
-        private static readonly pb::MessageParser<Pokemon> _parser = new pb::MessageParser<Pokemon>(() => new Pokemon());
-        private int additionalCpMultiplier_;
-        private int battlesAttacked_;
-        private int battlesDefended_;
-        private ulong capturedCellId_;
-        private int cp_;
-        private int cpMultiplier_;
-        private ulong creationTimeMs_;
-        private int deployedFortId_;
-        private int eggIncubatorId_;
-        private int eggKmWalkedStart_;
-        private int eggKmWalkedTarget_;
-        private int favorite_;
-        private int fromFort_;
-        private float heightM_;
-        private int id_;
-        private int individualAttack_;
-        private int individualDefense_;
-        private int individualStamina_;
-        private bool isEgg_;
-        private global::AllEnum.PokemonMove move1_ = 0;
-        private global::AllEnum.PokemonMove move2_ = 0;
-        private string nickname_ = "";
-        private int numUpgrades_;
-        private int origin_;
-        private string ownerName_ = "";
-        private int pokeball_;
-        private global::AllEnum.PokemonId pokemonType_ = 0;
-        private int stamina_;
-        private int staminaMax_;
-        private float weightKg_;
-
-        public Pokemon()
-        {
-            OnConstruction();
-        }
-
-        public Pokemon(Pokemon other) : this()
-        {
-            id_ = other.id_;
-            pokemonType_ = other.pokemonType_;
-            cp_ = other.cp_;
-            stamina_ = other.stamina_;
-            staminaMax_ = other.staminaMax_;
-            move1_ = other.move1_;
-            move2_ = other.move2_;
-            deployedFortId_ = other.deployedFortId_;
-            ownerName_ = other.ownerName_;
-            isEgg_ = other.isEgg_;
-            eggKmWalkedTarget_ = other.eggKmWalkedTarget_;
-            eggKmWalkedStart_ = other.eggKmWalkedStart_;
-            origin_ = other.origin_;
-            heightM_ = other.heightM_;
-            weightKg_ = other.weightKg_;
-            individualAttack_ = other.individualAttack_;
-            individualDefense_ = other.individualDefense_;
-            individualStamina_ = other.individualStamina_;
-            cpMultiplier_ = other.cpMultiplier_;
-            pokeball_ = other.pokeball_;
-            capturedCellId_ = other.capturedCellId_;
-            battlesAttacked_ = other.battlesAttacked_;
-            battlesDefended_ = other.battlesDefended_;
-            eggIncubatorId_ = other.eggIncubatorId_;
-            creationTimeMs_ = other.creationTimeMs_;
-            numUpgrades_ = other.numUpgrades_;
-            additionalCpMultiplier_ = other.additionalCpMultiplier_;
-            favorite_ = other.favorite_;
-            nickname_ = other.nickname_;
-            fromFort_ = other.fromFort_;
-        }
-
-        public static pb::MessageParser<Pokemon> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[10]; }
-        }
-
-        public int Id
-        {
-            get { return id_; }
-            set { id_ = value; }
-        }
-
-        public global::AllEnum.PokemonId PokemonType
-        {
-            get { return pokemonType_; }
-            set { pokemonType_ = value; }
-        }
-
-        public int Cp
-        {
-            get { return cp_; }
-            set { cp_ = value; }
-        }
-
-        public int Stamina
-        {
-            get { return stamina_; }
-            set { stamina_ = value; }
-        }
-
-        public int StaminaMax
-        {
-            get { return staminaMax_; }
-            set { staminaMax_ = value; }
-        }
-
-        public global::AllEnum.PokemonMove Move1
-        {
-            get { return move1_; }
-            set { move1_ = value; }
-        }
-
-        public global::AllEnum.PokemonMove Move2
-        {
-            get { return move2_; }
-            set { move2_ = value; }
-        }
-
-        public int DeployedFortId
-        {
-            get { return deployedFortId_; }
-            set { deployedFortId_ = value; }
-        }
-
-        public string OwnerName
-        {
-            get { return ownerName_; }
-            set { ownerName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public bool IsEgg
-        {
-            get { return isEgg_; }
-            set { isEgg_ = value; }
-        }
-
-        public int EggKmWalkedTarget
-        {
-            get { return eggKmWalkedTarget_; }
-            set { eggKmWalkedTarget_ = value; }
-        }
-
-        public int EggKmWalkedStart
-        {
-            get { return eggKmWalkedStart_; }
-            set { eggKmWalkedStart_ = value; }
-        }
-
-        public int Origin
-        {
-            get { return origin_; }
-            set { origin_ = value; }
-        }
-
-        public float HeightM
-        {
-            get { return heightM_; }
-            set { heightM_ = value; }
-        }
-
-        public float WeightKg
-        {
-            get { return weightKg_; }
-            set { weightKg_ = value; }
-        }
-
-        public int IndividualAttack
-        {
-            get { return individualAttack_; }
-            set { individualAttack_ = value; }
-        }
-
-        public int IndividualDefense
-        {
-            get { return individualDefense_; }
-            set { individualDefense_ = value; }
-        }
-
-        public int IndividualStamina
-        {
-            get { return individualStamina_; }
-            set { individualStamina_ = value; }
-        }
-
-        public int CpMultiplier
-        {
-            get { return cpMultiplier_; }
-            set { cpMultiplier_ = value; }
-        }
-
-        public int Pokeball
-        {
-            get { return pokeball_; }
-            set { pokeball_ = value; }
-        }
-
-        public ulong CapturedCellId
-        {
-            get { return capturedCellId_; }
-            set { capturedCellId_ = value; }
-        }
-
-        public int BattlesAttacked
-        {
-            get { return battlesAttacked_; }
-            set { battlesAttacked_ = value; }
-        }
-
-        public int BattlesDefended
-        {
-            get { return battlesDefended_; }
-            set { battlesDefended_ = value; }
-        }
-
-        public int EggIncubatorId
-        {
-            get { return eggIncubatorId_; }
-            set { eggIncubatorId_ = value; }
-        }
-
-        public ulong CreationTimeMs
-        {
-            get { return creationTimeMs_; }
-            set { creationTimeMs_ = value; }
-        }
-
-        public int NumUpgrades
-        {
-            get { return numUpgrades_; }
-            set { numUpgrades_ = value; }
-        }
-
-        public int AdditionalCpMultiplier
-        {
-            get { return additionalCpMultiplier_; }
-            set { additionalCpMultiplier_ = value; }
-        }
-
-        public int Favorite
-        {
-            get { return favorite_; }
-            set { favorite_ = value; }
-        }
-
-        public string Nickname
-        {
-            get { return nickname_; }
-            set { nickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public int FromFort
-        {
-            get { return fromFort_; }
-            set { fromFort_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public Pokemon Clone()
-        {
-            return new Pokemon(this);
-        }
-
-        public bool Equals(Pokemon other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Id != other.Id) return false;
-            if (PokemonType != other.PokemonType) return false;
-            if (Cp != other.Cp) return false;
-            if (Stamina != other.Stamina) return false;
-            if (StaminaMax != other.StaminaMax) return false;
-            if (Move1 != other.Move1) return false;
-            if (Move2 != other.Move2) return false;
-            if (DeployedFortId != other.DeployedFortId) return false;
-            if (OwnerName != other.OwnerName) return false;
-            if (IsEgg != other.IsEgg) return false;
-            if (EggKmWalkedTarget != other.EggKmWalkedTarget) return false;
-            if (EggKmWalkedStart != other.EggKmWalkedStart) return false;
-            if (Origin != other.Origin) return false;
-            if (HeightM != other.HeightM) return false;
-            if (WeightKg != other.WeightKg) return false;
-            if (IndividualAttack != other.IndividualAttack) return false;
-            if (IndividualDefense != other.IndividualDefense) return false;
-            if (IndividualStamina != other.IndividualStamina) return false;
-            if (CpMultiplier != other.CpMultiplier) return false;
-            if (Pokeball != other.Pokeball) return false;
-            if (CapturedCellId != other.CapturedCellId) return false;
-            if (BattlesAttacked != other.BattlesAttacked) return false;
-            if (BattlesDefended != other.BattlesDefended) return false;
-            if (EggIncubatorId != other.EggIncubatorId) return false;
-            if (CreationTimeMs != other.CreationTimeMs) return false;
-            if (NumUpgrades != other.NumUpgrades) return false;
-            if (AdditionalCpMultiplier != other.AdditionalCpMultiplier) return false;
-            if (Favorite != other.Favorite) return false;
-            if (Nickname != other.Nickname) return false;
-            if (FromFort != other.FromFort) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Id != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Id);
-            }
-            if (PokemonType != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)PokemonType);
-            }
-            if (Cp != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(Cp);
-            }
-            if (Stamina != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(Stamina);
-            }
-            if (StaminaMax != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(StaminaMax);
-            }
-            if (Move1 != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteEnum((int)Move1);
-            }
-            if (Move2 != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteEnum((int)Move2);
-            }
-            if (DeployedFortId != 0)
-            {
-                output.WriteRawTag(64);
-                output.WriteInt32(DeployedFortId);
-            }
-            if (OwnerName.Length != 0)
-            {
-                output.WriteRawTag(74);
-                output.WriteString(OwnerName);
-            }
-            if (IsEgg != false)
-            {
-                output.WriteRawTag(80);
-                output.WriteBool(IsEgg);
-            }
-            if (EggKmWalkedTarget != 0)
-            {
-                output.WriteRawTag(88);
-                output.WriteInt32(EggKmWalkedTarget);
-            }
-            if (EggKmWalkedStart != 0)
-            {
-                output.WriteRawTag(96);
-                output.WriteInt32(EggKmWalkedStart);
-            }
-            if (Origin != 0)
-            {
-                output.WriteRawTag(112);
-                output.WriteInt32(Origin);
-            }
-            if (HeightM != 0F)
-            {
-                output.WriteRawTag(125);
-                output.WriteFloat(HeightM);
-            }
-            if (WeightKg != 0F)
-            {
-                output.WriteRawTag(133, 1);
-                output.WriteFloat(WeightKg);
-            }
-            if (IndividualAttack != 0)
-            {
-                output.WriteRawTag(136, 1);
-                output.WriteInt32(IndividualAttack);
-            }
-            if (IndividualDefense != 0)
-            {
-                output.WriteRawTag(144, 1);
-                output.WriteInt32(IndividualDefense);
-            }
-            if (IndividualStamina != 0)
-            {
-                output.WriteRawTag(152, 1);
-                output.WriteInt32(IndividualStamina);
-            }
-            if (CpMultiplier != 0)
-            {
-                output.WriteRawTag(160, 1);
-                output.WriteInt32(CpMultiplier);
-            }
-            if (Pokeball != 0)
-            {
-                output.WriteRawTag(168, 1);
-                output.WriteInt32(Pokeball);
-            }
-            if (CapturedCellId != 0UL)
-            {
-                output.WriteRawTag(176, 1);
-                output.WriteUInt64(CapturedCellId);
-            }
-            if (BattlesAttacked != 0)
-            {
-                output.WriteRawTag(184, 1);
-                output.WriteInt32(BattlesAttacked);
-            }
-            if (BattlesDefended != 0)
-            {
-                output.WriteRawTag(192, 1);
-                output.WriteInt32(BattlesDefended);
-            }
-            if (EggIncubatorId != 0)
-            {
-                output.WriteRawTag(200, 1);
-                output.WriteInt32(EggIncubatorId);
-            }
-            if (CreationTimeMs != 0UL)
-            {
-                output.WriteRawTag(208, 1);
-                output.WriteUInt64(CreationTimeMs);
-            }
-            if (NumUpgrades != 0)
-            {
-                output.WriteRawTag(216, 1);
-                output.WriteInt32(NumUpgrades);
-            }
-            if (AdditionalCpMultiplier != 0)
-            {
-                output.WriteRawTag(224, 1);
-                output.WriteInt32(AdditionalCpMultiplier);
-            }
-            if (Favorite != 0)
-            {
-                output.WriteRawTag(232, 1);
-                output.WriteInt32(Favorite);
-            }
-            if (Nickname.Length != 0)
-            {
-                output.WriteRawTag(242, 1);
-                output.WriteString(Nickname);
-            }
-            if (FromFort != 0)
-            {
-                output.WriteRawTag(248, 1);
-                output.WriteInt32(FromFort);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Id != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
-            }
-            if (PokemonType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)PokemonType);
-            }
-            if (Cp != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Cp);
-            }
-            if (Stamina != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
-            }
-            if (StaminaMax != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(StaminaMax);
-            }
-            if (Move1 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Move1);
-            }
-            if (Move2 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Move2);
-            }
-            if (DeployedFortId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeployedFortId);
-            }
-            if (OwnerName.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(OwnerName);
-            }
-            if (IsEgg != false)
-            {
-                size += 1 + 1;
-            }
-            if (EggKmWalkedTarget != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedTarget);
-            }
-            if (EggKmWalkedStart != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedStart);
-            }
-            if (Origin != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Origin);
-            }
-            if (HeightM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (WeightKg != 0F)
-            {
-                size += 2 + 4;
-            }
-            if (IndividualAttack != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualAttack);
-            }
-            if (IndividualDefense != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualDefense);
-            }
-            if (IndividualStamina != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualStamina);
-            }
-            if (CpMultiplier != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(CpMultiplier);
-            }
-            if (Pokeball != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
-            }
-            if (CapturedCellId != 0UL)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CapturedCellId);
-            }
-            if (BattlesAttacked != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesAttacked);
-            }
-            if (BattlesDefended != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesDefended);
-            }
-            if (EggIncubatorId != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(EggIncubatorId);
-            }
-            if (CreationTimeMs != 0UL)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CreationTimeMs);
-            }
-            if (NumUpgrades != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumUpgrades);
-            }
-            if (AdditionalCpMultiplier != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(AdditionalCpMultiplier);
-            }
-            if (Favorite != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(Favorite);
-            }
-            if (Nickname.Length != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeStringSize(Nickname);
-            }
-            if (FromFort != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(FromFort);
-            }
-            return size;
-        }
-
-        public void MergeFrom(Pokemon other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Id != 0)
-            {
-                Id = other.Id;
-            }
-            if (other.PokemonType != 0)
-            {
-                PokemonType = other.PokemonType;
-            }
-            if (other.Cp != 0)
-            {
-                Cp = other.Cp;
-            }
-            if (other.Stamina != 0)
-            {
-                Stamina = other.Stamina;
-            }
-            if (other.StaminaMax != 0)
-            {
-                StaminaMax = other.StaminaMax;
-            }
-            if (other.Move1 != 0)
-            {
-                Move1 = other.Move1;
-            }
-            if (other.Move2 != 0)
-            {
-                Move2 = other.Move2;
-            }
-            if (other.DeployedFortId != 0)
-            {
-                DeployedFortId = other.DeployedFortId;
-            }
-            if (other.OwnerName.Length != 0)
-            {
-                OwnerName = other.OwnerName;
-            }
-            if (other.IsEgg != false)
-            {
-                IsEgg = other.IsEgg;
-            }
-            if (other.EggKmWalkedTarget != 0)
-            {
-                EggKmWalkedTarget = other.EggKmWalkedTarget;
-            }
-            if (other.EggKmWalkedStart != 0)
-            {
-                EggKmWalkedStart = other.EggKmWalkedStart;
-            }
-            if (other.Origin != 0)
-            {
-                Origin = other.Origin;
-            }
-            if (other.HeightM != 0F)
-            {
-                HeightM = other.HeightM;
-            }
-            if (other.WeightKg != 0F)
-            {
-                WeightKg = other.WeightKg;
-            }
-            if (other.IndividualAttack != 0)
-            {
-                IndividualAttack = other.IndividualAttack;
-            }
-            if (other.IndividualDefense != 0)
-            {
-                IndividualDefense = other.IndividualDefense;
-            }
-            if (other.IndividualStamina != 0)
-            {
-                IndividualStamina = other.IndividualStamina;
-            }
-            if (other.CpMultiplier != 0)
-            {
-                CpMultiplier = other.CpMultiplier;
-            }
-            if (other.Pokeball != 0)
-            {
-                Pokeball = other.Pokeball;
-            }
-            if (other.CapturedCellId != 0UL)
-            {
-                CapturedCellId = other.CapturedCellId;
-            }
-            if (other.BattlesAttacked != 0)
-            {
-                BattlesAttacked = other.BattlesAttacked;
-            }
-            if (other.BattlesDefended != 0)
-            {
-                BattlesDefended = other.BattlesDefended;
-            }
-            if (other.EggIncubatorId != 0)
-            {
-                EggIncubatorId = other.EggIncubatorId;
-            }
-            if (other.CreationTimeMs != 0UL)
-            {
-                CreationTimeMs = other.CreationTimeMs;
-            }
-            if (other.NumUpgrades != 0)
-            {
-                NumUpgrades = other.NumUpgrades;
-            }
-            if (other.AdditionalCpMultiplier != 0)
-            {
-                AdditionalCpMultiplier = other.AdditionalCpMultiplier;
-            }
-            if (other.Favorite != 0)
-            {
-                Favorite = other.Favorite;
-            }
-            if (other.Nickname.Length != 0)
-            {
-                Nickname = other.Nickname;
-            }
-            if (other.FromFort != 0)
-            {
-                FromFort = other.FromFort;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Id = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            pokemonType_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            Cp = input.ReadInt32();
-                            break;
-                        }
-                    case 32:
-                        {
-                            Stamina = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            StaminaMax = input.ReadInt32();
-                            break;
-                        }
-                    case 48:
-                        {
-                            move1_ = (global::AllEnum.PokemonMove)input.ReadEnum();
-                            break;
-                        }
-                    case 56:
-                        {
-                            move2_ = (global::AllEnum.PokemonMove)input.ReadEnum();
-                            break;
-                        }
-                    case 64:
-                        {
-                            DeployedFortId = input.ReadInt32();
-                            break;
-                        }
-                    case 74:
-                        {
-                            OwnerName = input.ReadString();
-                            break;
-                        }
-                    case 80:
-                        {
-                            IsEgg = input.ReadBool();
-                            break;
-                        }
-                    case 88:
-                        {
-                            EggKmWalkedTarget = input.ReadInt32();
-                            break;
-                        }
-                    case 96:
-                        {
-                            EggKmWalkedStart = input.ReadInt32();
-                            break;
-                        }
-                    case 112:
-                        {
-                            Origin = input.ReadInt32();
-                            break;
-                        }
-                    case 125:
-                        {
-                            HeightM = input.ReadFloat();
-                            break;
-                        }
-                    case 133:
-                        {
-                            WeightKg = input.ReadFloat();
-                            break;
-                        }
-                    case 136:
-                        {
-                            IndividualAttack = input.ReadInt32();
-                            break;
-                        }
-                    case 144:
-                        {
-                            IndividualDefense = input.ReadInt32();
-                            break;
-                        }
-                    case 152:
-                        {
-                            IndividualStamina = input.ReadInt32();
-                            break;
-                        }
-                    case 160:
-                        {
-                            CpMultiplier = input.ReadInt32();
-                            break;
-                        }
-                    case 168:
-                        {
-                            Pokeball = input.ReadInt32();
-                            break;
-                        }
-                    case 176:
-                        {
-                            CapturedCellId = input.ReadUInt64();
-                            break;
-                        }
-                    case 184:
-                        {
-                            BattlesAttacked = input.ReadInt32();
-                            break;
-                        }
-                    case 192:
-                        {
-                            BattlesDefended = input.ReadInt32();
-                            break;
-                        }
-                    case 200:
-                        {
-                            EggIncubatorId = input.ReadInt32();
-                            break;
-                        }
-                    case 208:
-                        {
-                            CreationTimeMs = input.ReadUInt64();
-                            break;
-                        }
-                    case 216:
-                        {
-                            NumUpgrades = input.ReadInt32();
-                            break;
-                        }
-                    case 224:
-                        {
-                            AdditionalCpMultiplier = input.ReadInt32();
-                            break;
-                        }
-                    case 232:
-                        {
-                            Favorite = input.ReadInt32();
-                            break;
-                        }
-                    case 242:
-                        {
-                            Nickname = input.ReadString();
-                            break;
-                        }
-                    case 248:
-                        {
-                            FromFort = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as Pokemon);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Id != 0) hash ^= Id.GetHashCode();
-            if (PokemonType != 0) hash ^= PokemonType.GetHashCode();
-            if (Cp != 0) hash ^= Cp.GetHashCode();
-            if (Stamina != 0) hash ^= Stamina.GetHashCode();
-            if (StaminaMax != 0) hash ^= StaminaMax.GetHashCode();
-            if (Move1 != 0) hash ^= Move1.GetHashCode();
-            if (Move2 != 0) hash ^= Move2.GetHashCode();
-            if (DeployedFortId != 0) hash ^= DeployedFortId.GetHashCode();
-            if (OwnerName.Length != 0) hash ^= OwnerName.GetHashCode();
-            if (IsEgg != false) hash ^= IsEgg.GetHashCode();
-            if (EggKmWalkedTarget != 0) hash ^= EggKmWalkedTarget.GetHashCode();
-            if (EggKmWalkedStart != 0) hash ^= EggKmWalkedStart.GetHashCode();
-            if (Origin != 0) hash ^= Origin.GetHashCode();
-            if (HeightM != 0F) hash ^= HeightM.GetHashCode();
-            if (WeightKg != 0F) hash ^= WeightKg.GetHashCode();
-            if (IndividualAttack != 0) hash ^= IndividualAttack.GetHashCode();
-            if (IndividualDefense != 0) hash ^= IndividualDefense.GetHashCode();
-            if (IndividualStamina != 0) hash ^= IndividualStamina.GetHashCode();
-            if (CpMultiplier != 0) hash ^= CpMultiplier.GetHashCode();
-            if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
-            if (CapturedCellId != 0UL) hash ^= CapturedCellId.GetHashCode();
-            if (BattlesAttacked != 0) hash ^= BattlesAttacked.GetHashCode();
-            if (BattlesDefended != 0) hash ^= BattlesDefended.GetHashCode();
-            if (EggIncubatorId != 0) hash ^= EggIncubatorId.GetHashCode();
-            if (CreationTimeMs != 0UL) hash ^= CreationTimeMs.GetHashCode();
-            if (NumUpgrades != 0) hash ^= NumUpgrades.GetHashCode();
-            if (AdditionalCpMultiplier != 0) hash ^= AdditionalCpMultiplier.GetHashCode();
-            if (Favorite != 0) hash ^= Favorite.GetHashCode();
-            if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
-            if (FromFort != 0) hash ^= FromFort.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Item : pb::IMessage<Item>
-    {
-        /// <summary>Field number for the "item" field.</summary>
-        public const int Item_FieldNumber = 1;
-
-        /// <summary>Field number for the "count" field.</summary>
-        public const int CountFieldNumber = 2;
-
-        /// <summary>Field number for the "unseen" field.</summary>
-        public const int UnseenFieldNumber = 3;
-
-        private static readonly pb::MessageParser<Item> _parser = new pb::MessageParser<Item>(() => new Item());
-        private int count_;
-        private global::AllEnum.ItemType item_ = 0;
-        private bool unseen_;
-
-        public Item()
-        {
-            OnConstruction();
-        }
-
-        public Item(Item other) : this()
-        {
-            item_ = other.item_;
-            count_ = other.count_;
-            unseen_ = other.unseen_;
-        }
-
-        public static pb::MessageParser<Item> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[11]; }
-        }
-
-        public global::AllEnum.ItemType Item_
-        {
-            get { return item_; }
-            set { item_ = value; }
-        }
-
-        public int Count
-        {
-            get { return count_; }
-            set { count_ = value; }
-        }
-
-        public bool Unseen
-        {
-            get { return unseen_; }
-            set { unseen_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public Item Clone()
-        {
-            return new Item(this);
-        }
-
-        public bool Equals(Item other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Item_ != other.Item_) return false;
-            if (Count != other.Count) return false;
-            if (Unseen != other.Unseen) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Item_ != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)Item_);
-            }
-            if (Count != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(Count);
-            }
-            if (Unseen != false)
-            {
-                output.WriteRawTag(24);
-                output.WriteBool(Unseen);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Item_ != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Item_);
-            }
-            if (Count != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
-            }
-            if (Unseen != false)
-            {
-                size += 1 + 1;
-            }
-            return size;
-        }
-
-        public void MergeFrom(Item other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Item_ != 0)
-            {
-                Item_ = other.Item_;
-            }
-            if (other.Count != 0)
-            {
-                Count = other.Count;
-            }
-            if (other.Unseen != false)
-            {
-                Unseen = other.Unseen;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            item_ = (global::AllEnum.ItemType)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            Count = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            Unseen = input.ReadBool();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as Item);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Item_ != 0) hash ^= Item_.GetHashCode();
-            if (Count != 0) hash ^= Count.GetHashCode();
-            if (Unseen != false) hash ^= Unseen.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PokedexEntry : pb::IMessage<PokedexEntry>
-    {
-        /// <summary>Field number for the "pokedex_entry_number" field.</summary>
-        public const int PokedexEntryNumberFieldNumber = 1;
-
-        /// <summary>Field number for the "times_encountered" field.</summary>
-        public const int TimesEncounteredFieldNumber = 2;
-
-        /// <summary>Field number for the "times_captured" field.</summary>
-        public const int TimesCapturedFieldNumber = 3;
-
-        /// <summary>Field number for the "evolution_stone_pieces" field.</summary>
-        public const int EvolutionStonePiecesFieldNumber = 4;
-
-        /// <summary>Field number for the "evolution_stones" field.</summary>
-        public const int EvolutionStonesFieldNumber = 5;
-
-        private static readonly pb::MessageParser<PokedexEntry> _parser =
-            new pb::MessageParser<PokedexEntry>(() => new PokedexEntry());
-
-        private int evolutionStonePieces_;
-        private int evolutionStones_;
-        private int pokedexEntryNumber_;
-        private int timesCaptured_;
-        private int timesEncountered_;
-
-        public PokedexEntry()
-        {
-            OnConstruction();
-        }
-
-        public PokedexEntry(PokedexEntry other) : this()
-        {
-            pokedexEntryNumber_ = other.pokedexEntryNumber_;
-            timesEncountered_ = other.timesEncountered_;
-            timesCaptured_ = other.timesCaptured_;
-            evolutionStonePieces_ = other.evolutionStonePieces_;
-            evolutionStones_ = other.evolutionStones_;
-        }
-
-        public static pb::MessageParser<PokedexEntry> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[12]; }
-        }
-
-        public int PokedexEntryNumber
-        {
-            get { return pokedexEntryNumber_; }
-            set { pokedexEntryNumber_ = value; }
-        }
-
-        public int TimesEncountered
-        {
-            get { return timesEncountered_; }
-            set { timesEncountered_ = value; }
-        }
-
-        public int TimesCaptured
-        {
-            get { return timesCaptured_; }
-            set { timesCaptured_ = value; }
-        }
-
-        public int EvolutionStonePieces
-        {
-            get { return evolutionStonePieces_; }
-            set { evolutionStonePieces_ = value; }
-        }
-
-        public int EvolutionStones
-        {
-            get { return evolutionStones_; }
-            set { evolutionStones_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PokedexEntry Clone()
-        {
-            return new PokedexEntry(this);
-        }
-
-        public bool Equals(PokedexEntry other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokedexEntryNumber != other.PokedexEntryNumber) return false;
-            if (TimesEncountered != other.TimesEncountered) return false;
-            if (TimesCaptured != other.TimesCaptured) return false;
-            if (EvolutionStonePieces != other.EvolutionStonePieces) return false;
-            if (EvolutionStones != other.EvolutionStones) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokedexEntryNumber != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(PokedexEntryNumber);
-            }
-            if (TimesEncountered != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(TimesEncountered);
-            }
-            if (TimesCaptured != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(TimesCaptured);
-            }
-            if (EvolutionStonePieces != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(EvolutionStonePieces);
-            }
-            if (EvolutionStones != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(EvolutionStones);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokedexEntryNumber != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokedexEntryNumber);
-            }
-            if (TimesEncountered != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesEncountered);
-            }
-            if (TimesCaptured != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesCaptured);
-            }
-            if (EvolutionStonePieces != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStonePieces);
-            }
-            if (EvolutionStones != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStones);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PokedexEntry other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokedexEntryNumber != 0)
-            {
-                PokedexEntryNumber = other.PokedexEntryNumber;
-            }
-            if (other.TimesEncountered != 0)
-            {
-                TimesEncountered = other.TimesEncountered;
-            }
-            if (other.TimesCaptured != 0)
-            {
-                TimesCaptured = other.TimesCaptured;
-            }
-            if (other.EvolutionStonePieces != 0)
-            {
-                EvolutionStonePieces = other.EvolutionStonePieces;
-            }
-            if (other.EvolutionStones != 0)
-            {
-                EvolutionStones = other.EvolutionStones;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            PokedexEntryNumber = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            TimesEncountered = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            TimesCaptured = input.ReadInt32();
-                            break;
-                        }
-                    case 32:
-                        {
-                            EvolutionStonePieces = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            EvolutionStones = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PokedexEntry);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokedexEntryNumber != 0) hash ^= PokedexEntryNumber.GetHashCode();
-            if (TimesEncountered != 0) hash ^= TimesEncountered.GetHashCode();
-            if (TimesCaptured != 0) hash ^= TimesCaptured.GetHashCode();
-            if (EvolutionStonePieces != 0) hash ^= EvolutionStonePieces.GetHashCode();
-            if (EvolutionStones != 0) hash ^= EvolutionStones.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PlayerStats : pb::IMessage<PlayerStats>
-    {
-        /// <summary>Field number for the "level" field.</summary>
-        public const int LevelFieldNumber = 1;
-
-        /// <summary>Field number for the "experience" field.</summary>
-        public const int ExperienceFieldNumber = 2;
-
-        /// <summary>Field number for the "prev_level_xp" field.</summary>
-        public const int PrevLevelXpFieldNumber = 3;
-
-        /// <summary>Field number for the "next_level_xp" field.</summary>
-        public const int NextLevelXpFieldNumber = 4;
-
-        /// <summary>Field number for the "km_walked" field.</summary>
-        public const int KmWalkedFieldNumber = 5;
-
-        /// <summary>Field number for the "pokemons_encountered" field.</summary>
-        public const int PokemonsEncounteredFieldNumber = 6;
-
-        /// <summary>Field number for the "unique_pokedex_entries" field.</summary>
-        public const int UniquePokedexEntriesFieldNumber = 7;
-
-        /// <summary>Field number for the "pokemons_captured" field.</summary>
-        public const int PokemonsCapturedFieldNumber = 8;
-
-        /// <summary>Field number for the "evolutions" field.</summary>
-        public const int EvolutionsFieldNumber = 9;
-
-        /// <summary>Field number for the "poke_stop_visits" field.</summary>
-        public const int PokeStopVisitsFieldNumber = 10;
-
-        /// <summary>Field number for the "pokeballs_thrown" field.</summary>
-        public const int PokeballsThrownFieldNumber = 11;
-
-        /// <summary>Field number for the "eggs_hatched" field.</summary>
-        public const int EggsHatchedFieldNumber = 12;
-
-        /// <summary>Field number for the "big_magikarp_caught" field.</summary>
-        public const int BigMagikarpCaughtFieldNumber = 13;
-
-        /// <summary>Field number for the "battle_attack_won" field.</summary>
-        public const int BattleAttackWonFieldNumber = 14;
-
-        /// <summary>Field number for the "battle_attack_total" field.</summary>
-        public const int BattleAttackTotalFieldNumber = 15;
-
-        /// <summary>Field number for the "battle_defended_won" field.</summary>
-        public const int BattleDefendedWonFieldNumber = 16;
-
-        /// <summary>Field number for the "battle_training_won" field.</summary>
-        public const int BattleTrainingWonFieldNumber = 17;
-
-        /// <summary>Field number for the "battle_training_total" field.</summary>
-        public const int BattleTrainingTotalFieldNumber = 18;
-
-        /// <summary>Field number for the "prestige_raised_total" field.</summary>
-        public const int PrestigeRaisedTotalFieldNumber = 19;
-
-        /// <summary>Field number for the "prestige_dropped_total" field.</summary>
-        public const int PrestigeDroppedTotalFieldNumber = 20;
-
-        /// <summary>Field number for the "pokemon_deployed" field.</summary>
-        public const int PokemonDeployedFieldNumber = 21;
-
-        /// <summary>Field number for the "pokemon_caught_by_type" field.</summary>
-        public const int PokemonCaughtByTypeFieldNumber = 22;
-
-        /// <summary>Field number for the "small_rattata_caught" field.</summary>
-        public const int SmallRattataCaughtFieldNumber = 23;
-
-        private static readonly pb::MessageParser<PlayerStats> _parser =
-            new pb::MessageParser<PlayerStats>(() => new PlayerStats());
-
-        private int battleAttackTotal_;
-        private int battleAttackWon_;
-        private int battleDefendedWon_;
-        private int battleTrainingTotal_;
-        private int battleTrainingWon_;
-        private int bigMagikarpCaught_;
-        private int eggsHatched_;
-        private int evolutions_;
-        private long experience_;
-        private float kmWalked_;
-        private int level_;
-        private long nextLevelXp_;
-        private int pokeballsThrown_;
-        private pb::ByteString pokemonCaughtByType_ = pb::ByteString.Empty;
-        private int pokemonDeployed_;
-        private int pokemonsCaptured_;
-        private int pokemonsEncountered_;
-        private int pokeStopVisits_;
-        private int prestigeDroppedTotal_;
-        private int prestigeRaisedTotal_;
-        private long prevLevelXp_;
-        private int smallRattataCaught_;
-        private int uniquePokedexEntries_;
-
-        public PlayerStats()
-        {
-            OnConstruction();
-        }
-
-        public PlayerStats(PlayerStats other) : this()
-        {
-            level_ = other.level_;
-            experience_ = other.experience_;
-            prevLevelXp_ = other.prevLevelXp_;
-            nextLevelXp_ = other.nextLevelXp_;
-            kmWalked_ = other.kmWalked_;
-            pokemonsEncountered_ = other.pokemonsEncountered_;
-            uniquePokedexEntries_ = other.uniquePokedexEntries_;
-            pokemonsCaptured_ = other.pokemonsCaptured_;
-            evolutions_ = other.evolutions_;
-            pokeStopVisits_ = other.pokeStopVisits_;
-            pokeballsThrown_ = other.pokeballsThrown_;
-            eggsHatched_ = other.eggsHatched_;
-            bigMagikarpCaught_ = other.bigMagikarpCaught_;
-            battleAttackWon_ = other.battleAttackWon_;
-            battleAttackTotal_ = other.battleAttackTotal_;
-            battleDefendedWon_ = other.battleDefendedWon_;
-            battleTrainingWon_ = other.battleTrainingWon_;
-            battleTrainingTotal_ = other.battleTrainingTotal_;
-            prestigeRaisedTotal_ = other.prestigeRaisedTotal_;
-            prestigeDroppedTotal_ = other.prestigeDroppedTotal_;
-            pokemonDeployed_ = other.pokemonDeployed_;
-            pokemonCaughtByType_ = other.pokemonCaughtByType_;
-            smallRattataCaught_ = other.smallRattataCaught_;
-        }
-
-        public static pb::MessageParser<PlayerStats> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[13]; }
-        }
-
-        public int Level
-        {
-            get { return level_; }
-            set { level_ = value; }
-        }
-
-        public long Experience
-        {
-            get { return experience_; }
-            set { experience_ = value; }
-        }
-
-        public long PrevLevelXp
-        {
-            get { return prevLevelXp_; }
-            set { prevLevelXp_ = value; }
-        }
-
-        public long NextLevelXp
-        {
-            get { return nextLevelXp_; }
-            set { nextLevelXp_ = value; }
-        }
-
-        public float KmWalked
-        {
-            get { return kmWalked_; }
-            set { kmWalked_ = value; }
-        }
-
-        public int PokemonsEncountered
-        {
-            get { return pokemonsEncountered_; }
-            set { pokemonsEncountered_ = value; }
-        }
-
-        public int UniquePokedexEntries
-        {
-            get { return uniquePokedexEntries_; }
-            set { uniquePokedexEntries_ = value; }
-        }
-
-        public int PokemonsCaptured
-        {
-            get { return pokemonsCaptured_; }
-            set { pokemonsCaptured_ = value; }
-        }
-
-        public int Evolutions
-        {
-            get { return evolutions_; }
-            set { evolutions_ = value; }
-        }
-
-        public int PokeStopVisits
-        {
-            get { return pokeStopVisits_; }
-            set { pokeStopVisits_ = value; }
-        }
-
-        public int PokeballsThrown
-        {
-            get { return pokeballsThrown_; }
-            set { pokeballsThrown_ = value; }
-        }
-
-        public int EggsHatched
-        {
-            get { return eggsHatched_; }
-            set { eggsHatched_ = value; }
-        }
-
-        public int BigMagikarpCaught
-        {
-            get { return bigMagikarpCaught_; }
-            set { bigMagikarpCaught_ = value; }
-        }
-
-        public int BattleAttackWon
-        {
-            get { return battleAttackWon_; }
-            set { battleAttackWon_ = value; }
-        }
-
-        public int BattleAttackTotal
-        {
-            get { return battleAttackTotal_; }
-            set { battleAttackTotal_ = value; }
-        }
-
-        public int BattleDefendedWon
-        {
-            get { return battleDefendedWon_; }
-            set { battleDefendedWon_ = value; }
-        }
-
-        public int BattleTrainingWon
-        {
-            get { return battleTrainingWon_; }
-            set { battleTrainingWon_ = value; }
-        }
-
-        public int BattleTrainingTotal
-        {
-            get { return battleTrainingTotal_; }
-            set { battleTrainingTotal_ = value; }
-        }
-
-        public int PrestigeRaisedTotal
-        {
-            get { return prestigeRaisedTotal_; }
-            set { prestigeRaisedTotal_ = value; }
-        }
-
-        public int PrestigeDroppedTotal
-        {
-            get { return prestigeDroppedTotal_; }
-            set { prestigeDroppedTotal_ = value; }
-        }
-
-        public int PokemonDeployed
-        {
-            get { return pokemonDeployed_; }
-            set { pokemonDeployed_ = value; }
-        }
-
-        /// <summary>
-        ///     TODO: repeated PokemonType ??
-        /// </summary>
-        public pb::ByteString PokemonCaughtByType
-        {
-            get { return pokemonCaughtByType_; }
-            set { pokemonCaughtByType_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public int SmallRattataCaught
-        {
-            get { return smallRattataCaught_; }
-            set { smallRattataCaught_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PlayerStats Clone()
-        {
-            return new PlayerStats(this);
-        }
-
-        public bool Equals(PlayerStats other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Level != other.Level) return false;
-            if (Experience != other.Experience) return false;
-            if (PrevLevelXp != other.PrevLevelXp) return false;
-            if (NextLevelXp != other.NextLevelXp) return false;
-            if (KmWalked != other.KmWalked) return false;
-            if (PokemonsEncountered != other.PokemonsEncountered) return false;
-            if (UniquePokedexEntries != other.UniquePokedexEntries) return false;
-            if (PokemonsCaptured != other.PokemonsCaptured) return false;
-            if (Evolutions != other.Evolutions) return false;
-            if (PokeStopVisits != other.PokeStopVisits) return false;
-            if (PokeballsThrown != other.PokeballsThrown) return false;
-            if (EggsHatched != other.EggsHatched) return false;
-            if (BigMagikarpCaught != other.BigMagikarpCaught) return false;
-            if (BattleAttackWon != other.BattleAttackWon) return false;
-            if (BattleAttackTotal != other.BattleAttackTotal) return false;
-            if (BattleDefendedWon != other.BattleDefendedWon) return false;
-            if (BattleTrainingWon != other.BattleTrainingWon) return false;
-            if (BattleTrainingTotal != other.BattleTrainingTotal) return false;
-            if (PrestigeRaisedTotal != other.PrestigeRaisedTotal) return false;
-            if (PrestigeDroppedTotal != other.PrestigeDroppedTotal) return false;
-            if (PokemonDeployed != other.PokemonDeployed) return false;
-            if (PokemonCaughtByType != other.PokemonCaughtByType) return false;
-            if (SmallRattataCaught != other.SmallRattataCaught) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Level != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Level);
-            }
-            if (Experience != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(Experience);
-            }
-            if (PrevLevelXp != 0L)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt64(PrevLevelXp);
-            }
-            if (NextLevelXp != 0L)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt64(NextLevelXp);
-            }
-            if (KmWalked != 0F)
-            {
-                output.WriteRawTag(45);
-                output.WriteFloat(KmWalked);
-            }
-            if (PokemonsEncountered != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteInt32(PokemonsEncountered);
-            }
-            if (UniquePokedexEntries != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteInt32(UniquePokedexEntries);
-            }
-            if (PokemonsCaptured != 0)
-            {
-                output.WriteRawTag(64);
-                output.WriteInt32(PokemonsCaptured);
-            }
-            if (Evolutions != 0)
-            {
-                output.WriteRawTag(72);
-                output.WriteInt32(Evolutions);
-            }
-            if (PokeStopVisits != 0)
-            {
-                output.WriteRawTag(80);
-                output.WriteInt32(PokeStopVisits);
-            }
-            if (PokeballsThrown != 0)
-            {
-                output.WriteRawTag(88);
-                output.WriteInt32(PokeballsThrown);
-            }
-            if (EggsHatched != 0)
-            {
-                output.WriteRawTag(96);
-                output.WriteInt32(EggsHatched);
-            }
-            if (BigMagikarpCaught != 0)
-            {
-                output.WriteRawTag(104);
-                output.WriteInt32(BigMagikarpCaught);
-            }
-            if (BattleAttackWon != 0)
-            {
-                output.WriteRawTag(112);
-                output.WriteInt32(BattleAttackWon);
-            }
-            if (BattleAttackTotal != 0)
-            {
-                output.WriteRawTag(120);
-                output.WriteInt32(BattleAttackTotal);
-            }
-            if (BattleDefendedWon != 0)
-            {
-                output.WriteRawTag(128, 1);
-                output.WriteInt32(BattleDefendedWon);
-            }
-            if (BattleTrainingWon != 0)
-            {
-                output.WriteRawTag(136, 1);
-                output.WriteInt32(BattleTrainingWon);
-            }
-            if (BattleTrainingTotal != 0)
-            {
-                output.WriteRawTag(144, 1);
-                output.WriteInt32(BattleTrainingTotal);
-            }
-            if (PrestigeRaisedTotal != 0)
-            {
-                output.WriteRawTag(152, 1);
-                output.WriteInt32(PrestigeRaisedTotal);
-            }
-            if (PrestigeDroppedTotal != 0)
-            {
-                output.WriteRawTag(160, 1);
-                output.WriteInt32(PrestigeDroppedTotal);
-            }
-            if (PokemonDeployed != 0)
-            {
-                output.WriteRawTag(168, 1);
-                output.WriteInt32(PokemonDeployed);
-            }
-            if (PokemonCaughtByType.Length != 0)
-            {
-                output.WriteRawTag(178, 1);
-                output.WriteBytes(PokemonCaughtByType);
-            }
-            if (SmallRattataCaught != 0)
-            {
-                output.WriteRawTag(184, 1);
-                output.WriteInt32(SmallRattataCaught);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Level != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
-            }
-            if (Experience != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(Experience);
-            }
-            if (PrevLevelXp != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(PrevLevelXp);
-            }
-            if (NextLevelXp != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextLevelXp);
-            }
-            if (KmWalked != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (PokemonsEncountered != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonsEncountered);
-            }
-            if (UniquePokedexEntries != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(UniquePokedexEntries);
-            }
-            if (PokemonsCaptured != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonsCaptured);
-            }
-            if (Evolutions != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Evolutions);
-            }
-            if (PokeStopVisits != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStopVisits);
-            }
-            if (PokeballsThrown != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeballsThrown);
-            }
-            if (EggsHatched != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggsHatched);
-            }
-            if (BigMagikarpCaught != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BigMagikarpCaught);
-            }
-            if (BattleAttackWon != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleAttackWon);
-            }
-            if (BattleAttackTotal != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleAttackTotal);
-            }
-            if (BattleDefendedWon != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleDefendedWon);
-            }
-            if (BattleTrainingWon != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleTrainingWon);
-            }
-            if (BattleTrainingTotal != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleTrainingTotal);
-            }
-            if (PrestigeRaisedTotal != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeRaisedTotal);
-            }
-            if (PrestigeDroppedTotal != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeDroppedTotal);
-            }
-            if (PokemonDeployed != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PokemonDeployed);
-            }
-            if (PokemonCaughtByType.Length != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeBytesSize(PokemonCaughtByType);
-            }
-            if (SmallRattataCaught != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(SmallRattataCaught);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PlayerStats other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Level != 0)
-            {
-                Level = other.Level;
-            }
-            if (other.Experience != 0L)
-            {
-                Experience = other.Experience;
-            }
-            if (other.PrevLevelXp != 0L)
-            {
-                PrevLevelXp = other.PrevLevelXp;
-            }
-            if (other.NextLevelXp != 0L)
-            {
-                NextLevelXp = other.NextLevelXp;
-            }
-            if (other.KmWalked != 0F)
-            {
-                KmWalked = other.KmWalked;
-            }
-            if (other.PokemonsEncountered != 0)
-            {
-                PokemonsEncountered = other.PokemonsEncountered;
-            }
-            if (other.UniquePokedexEntries != 0)
-            {
-                UniquePokedexEntries = other.UniquePokedexEntries;
-            }
-            if (other.PokemonsCaptured != 0)
-            {
-                PokemonsCaptured = other.PokemonsCaptured;
-            }
-            if (other.Evolutions != 0)
-            {
-                Evolutions = other.Evolutions;
-            }
-            if (other.PokeStopVisits != 0)
-            {
-                PokeStopVisits = other.PokeStopVisits;
-            }
-            if (other.PokeballsThrown != 0)
-            {
-                PokeballsThrown = other.PokeballsThrown;
-            }
-            if (other.EggsHatched != 0)
-            {
-                EggsHatched = other.EggsHatched;
-            }
-            if (other.BigMagikarpCaught != 0)
-            {
-                BigMagikarpCaught = other.BigMagikarpCaught;
-            }
-            if (other.BattleAttackWon != 0)
-            {
-                BattleAttackWon = other.BattleAttackWon;
-            }
-            if (other.BattleAttackTotal != 0)
-            {
-                BattleAttackTotal = other.BattleAttackTotal;
-            }
-            if (other.BattleDefendedWon != 0)
-            {
-                BattleDefendedWon = other.BattleDefendedWon;
-            }
-            if (other.BattleTrainingWon != 0)
-            {
-                BattleTrainingWon = other.BattleTrainingWon;
-            }
-            if (other.BattleTrainingTotal != 0)
-            {
-                BattleTrainingTotal = other.BattleTrainingTotal;
-            }
-            if (other.PrestigeRaisedTotal != 0)
-            {
-                PrestigeRaisedTotal = other.PrestigeRaisedTotal;
-            }
-            if (other.PrestigeDroppedTotal != 0)
-            {
-                PrestigeDroppedTotal = other.PrestigeDroppedTotal;
-            }
-            if (other.PokemonDeployed != 0)
-            {
-                PokemonDeployed = other.PokemonDeployed;
-            }
-            if (other.PokemonCaughtByType.Length != 0)
-            {
-                PokemonCaughtByType = other.PokemonCaughtByType;
-            }
-            if (other.SmallRattataCaught != 0)
-            {
-                SmallRattataCaught = other.SmallRattataCaught;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Level = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            Experience = input.ReadInt64();
-                            break;
-                        }
-                    case 24:
-                        {
-                            PrevLevelXp = input.ReadInt64();
-                            break;
-                        }
-                    case 32:
-                        {
-                            NextLevelXp = input.ReadInt64();
-                            break;
-                        }
-                    case 45:
-                        {
-                            KmWalked = input.ReadFloat();
-                            break;
-                        }
-                    case 48:
-                        {
-                            PokemonsEncountered = input.ReadInt32();
-                            break;
-                        }
-                    case 56:
-                        {
-                            UniquePokedexEntries = input.ReadInt32();
-                            break;
-                        }
-                    case 64:
-                        {
-                            PokemonsCaptured = input.ReadInt32();
-                            break;
-                        }
-                    case 72:
-                        {
-                            Evolutions = input.ReadInt32();
-                            break;
-                        }
-                    case 80:
-                        {
-                            PokeStopVisits = input.ReadInt32();
-                            break;
-                        }
-                    case 88:
-                        {
-                            PokeballsThrown = input.ReadInt32();
-                            break;
-                        }
-                    case 96:
-                        {
-                            EggsHatched = input.ReadInt32();
-                            break;
-                        }
-                    case 104:
-                        {
-                            BigMagikarpCaught = input.ReadInt32();
-                            break;
-                        }
-                    case 112:
-                        {
-                            BattleAttackWon = input.ReadInt32();
-                            break;
-                        }
-                    case 120:
-                        {
-                            BattleAttackTotal = input.ReadInt32();
-                            break;
-                        }
-                    case 128:
-                        {
-                            BattleDefendedWon = input.ReadInt32();
-                            break;
-                        }
-                    case 136:
-                        {
-                            BattleTrainingWon = input.ReadInt32();
-                            break;
-                        }
-                    case 144:
-                        {
-                            BattleTrainingTotal = input.ReadInt32();
-                            break;
-                        }
-                    case 152:
-                        {
-                            PrestigeRaisedTotal = input.ReadInt32();
-                            break;
-                        }
-                    case 160:
-                        {
-                            PrestigeDroppedTotal = input.ReadInt32();
-                            break;
-                        }
-                    case 168:
-                        {
-                            PokemonDeployed = input.ReadInt32();
-                            break;
-                        }
-                    case 178:
-                        {
-                            PokemonCaughtByType = input.ReadBytes();
-                            break;
-                        }
-                    case 184:
-                        {
-                            SmallRattataCaught = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PlayerStats);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Level != 0) hash ^= Level.GetHashCode();
-            if (Experience != 0L) hash ^= Experience.GetHashCode();
-            if (PrevLevelXp != 0L) hash ^= PrevLevelXp.GetHashCode();
-            if (NextLevelXp != 0L) hash ^= NextLevelXp.GetHashCode();
-            if (KmWalked != 0F) hash ^= KmWalked.GetHashCode();
-            if (PokemonsEncountered != 0) hash ^= PokemonsEncountered.GetHashCode();
-            if (UniquePokedexEntries != 0) hash ^= UniquePokedexEntries.GetHashCode();
-            if (PokemonsCaptured != 0) hash ^= PokemonsCaptured.GetHashCode();
-            if (Evolutions != 0) hash ^= Evolutions.GetHashCode();
-            if (PokeStopVisits != 0) hash ^= PokeStopVisits.GetHashCode();
-            if (PokeballsThrown != 0) hash ^= PokeballsThrown.GetHashCode();
-            if (EggsHatched != 0) hash ^= EggsHatched.GetHashCode();
-            if (BigMagikarpCaught != 0) hash ^= BigMagikarpCaught.GetHashCode();
-            if (BattleAttackWon != 0) hash ^= BattleAttackWon.GetHashCode();
-            if (BattleAttackTotal != 0) hash ^= BattleAttackTotal.GetHashCode();
-            if (BattleDefendedWon != 0) hash ^= BattleDefendedWon.GetHashCode();
-            if (BattleTrainingWon != 0) hash ^= BattleTrainingWon.GetHashCode();
-            if (BattleTrainingTotal != 0) hash ^= BattleTrainingTotal.GetHashCode();
-            if (PrestigeRaisedTotal != 0) hash ^= PrestigeRaisedTotal.GetHashCode();
-            if (PrestigeDroppedTotal != 0) hash ^= PrestigeDroppedTotal.GetHashCode();
-            if (PokemonDeployed != 0) hash ^= PokemonDeployed.GetHashCode();
-            if (PokemonCaughtByType.Length != 0) hash ^= PokemonCaughtByType.GetHashCode();
-            if (SmallRattataCaught != 0) hash ^= SmallRattataCaught.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PlayerCurrency : pb::IMessage<PlayerCurrency>
-    {
-        /// <summary>Field number for the "gems" field.</summary>
-        public const int GemsFieldNumber = 1;
-
-        private static readonly pb::MessageParser<PlayerCurrency> _parser =
-            new pb::MessageParser<PlayerCurrency>(() => new PlayerCurrency());
-
-        private int gems_;
-
-        public PlayerCurrency()
-        {
-            OnConstruction();
-        }
-
-        public PlayerCurrency(PlayerCurrency other) : this()
-        {
-            gems_ = other.gems_;
-        }
-
-        public static pb::MessageParser<PlayerCurrency> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[14]; }
-        }
-
-        public int Gems
-        {
-            get { return gems_; }
-            set { gems_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PlayerCurrency Clone()
-        {
-            return new PlayerCurrency(this);
-        }
-
-        public bool Equals(PlayerCurrency other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Gems != other.Gems) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Gems != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Gems);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Gems != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Gems);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PlayerCurrency other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Gems != 0)
-            {
-                Gems = other.Gems;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Gems = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PlayerCurrency);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Gems != 0) hash ^= Gems.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PlayerCamera : pb::IMessage<PlayerCamera>
-    {
-        /// <summary>Field number for the "is_default_camera" field.</summary>
-        public const int IsDefaultCameraFieldNumber = 1;
-
-        private static readonly pb::MessageParser<PlayerCamera> _parser =
-            new pb::MessageParser<PlayerCamera>(() => new PlayerCamera());
-
-        private bool isDefaultCamera_;
-
-        public PlayerCamera()
-        {
-            OnConstruction();
-        }
-
-        public PlayerCamera(PlayerCamera other) : this()
-        {
-            isDefaultCamera_ = other.isDefaultCamera_;
-        }
-
-        public static pb::MessageParser<PlayerCamera> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[15]; }
-        }
-
-        public bool IsDefaultCamera
-        {
-            get { return isDefaultCamera_; }
-            set { isDefaultCamera_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PlayerCamera Clone()
-        {
-            return new PlayerCamera(this);
-        }
-
-        public bool Equals(PlayerCamera other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (IsDefaultCamera != other.IsDefaultCamera) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (IsDefaultCamera != false)
-            {
-                output.WriteRawTag(8);
-                output.WriteBool(IsDefaultCamera);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (IsDefaultCamera != false)
-            {
-                size += 1 + 1;
-            }
-            return size;
-        }
-
-        public void MergeFrom(PlayerCamera other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.IsDefaultCamera != false)
-            {
-                IsDefaultCamera = other.IsDefaultCamera;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            IsDefaultCamera = input.ReadBool();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PlayerCamera);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (IsDefaultCamera != false) hash ^= IsDefaultCamera.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventoryUpgrades : pb::IMessage<InventoryUpgrades>
-    {
-        /// <summary>Field number for the "inventory_upgrades" field.</summary>
-        public const int InventoryUpgrades_FieldNumber = 1;
-
-        private static readonly pb::MessageParser<InventoryUpgrades> _parser =
-            new pb::MessageParser<InventoryUpgrades>(() => new InventoryUpgrades());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade>
-            _repeated_inventoryUpgrades_codec
-                = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade>
-            inventoryUpgrades_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade>();
-
-        public InventoryUpgrades()
-        {
-            OnConstruction();
-        }
-
-        public InventoryUpgrades(InventoryUpgrades other) : this()
-        {
-            inventoryUpgrades_ = other.inventoryUpgrades_.Clone();
-        }
-
-        public static pb::MessageParser<InventoryUpgrades> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[16]; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgrade> InventoryUpgrades_
-        {
-            get { return inventoryUpgrades_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventoryUpgrades Clone()
-        {
-            return new InventoryUpgrades(this);
-        }
-
-        public bool Equals(InventoryUpgrades other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!inventoryUpgrades_.Equals(other.inventoryUpgrades_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            inventoryUpgrades_.WriteTo(output, _repeated_inventoryUpgrades_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += inventoryUpgrades_.CalculateSize(_repeated_inventoryUpgrades_codec);
-            return size;
-        }
-
-        public void MergeFrom(InventoryUpgrades other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            inventoryUpgrades_.Add(other.inventoryUpgrades_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            inventoryUpgrades_.AddEntriesFrom(input, _repeated_inventoryUpgrades_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventoryUpgrades);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= inventoryUpgrades_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventoryUpgrade : pb::IMessage<InventoryUpgrade>
-    {
-        /// <summary>Field number for the "item" field.</summary>
-        public const int ItemFieldNumber = 1;
-
-        /// <summary>Field number for the "upgrade_type" field.</summary>
-        public const int UpgradeTypeFieldNumber = 2;
-
-        /// <summary>Field number for the "additional_storage" field.</summary>
-        public const int AdditionalStorageFieldNumber = 3;
-
-        private static readonly pb::MessageParser<InventoryUpgrade> _parser =
-            new pb::MessageParser<InventoryUpgrade>(() => new InventoryUpgrade());
-
-        private int additionalStorage_;
-        private global::AllEnum.ItemType item_ = 0;
-        private global::AllEnum.InventoryUpgradeType upgradeType_ = 0;
-
-        public InventoryUpgrade()
-        {
-            OnConstruction();
-        }
-
-        public InventoryUpgrade(InventoryUpgrade other) : this()
-        {
-            item_ = other.item_;
-            upgradeType_ = other.upgradeType_;
-            additionalStorage_ = other.additionalStorage_;
-        }
-
-        public static pb::MessageParser<InventoryUpgrade> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[17]; }
-        }
-
-        public global::AllEnum.ItemType Item
-        {
-            get { return item_; }
-            set { item_ = value; }
-        }
-
-        public global::AllEnum.InventoryUpgradeType UpgradeType
-        {
-            get { return upgradeType_; }
-            set { upgradeType_ = value; }
-        }
-
-        public int AdditionalStorage
-        {
-            get { return additionalStorage_; }
-            set { additionalStorage_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventoryUpgrade Clone()
-        {
-            return new InventoryUpgrade(this);
-        }
-
-        public bool Equals(InventoryUpgrade other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Item != other.Item) return false;
-            if (UpgradeType != other.UpgradeType) return false;
-            if (AdditionalStorage != other.AdditionalStorage) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Item != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)Item);
-            }
-            if (UpgradeType != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)UpgradeType);
-            }
-            if (AdditionalStorage != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(AdditionalStorage);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Item != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Item);
-            }
-            if (UpgradeType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)UpgradeType);
-            }
-            if (AdditionalStorage != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(AdditionalStorage);
-            }
-            return size;
-        }
-
-        public void MergeFrom(InventoryUpgrade other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Item != 0)
-            {
-                Item = other.Item;
-            }
-            if (other.UpgradeType != 0)
-            {
-                UpgradeType = other.UpgradeType;
-            }
-            if (other.AdditionalStorage != 0)
-            {
-                AdditionalStorage = other.AdditionalStorage;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            item_ = (global::AllEnum.ItemType)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            upgradeType_ = (global::AllEnum.InventoryUpgradeType)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            AdditionalStorage = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventoryUpgrade);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Item != 0) hash ^= Item.GetHashCode();
-            if (UpgradeType != 0) hash ^= UpgradeType.GetHashCode();
-            if (AdditionalStorage != 0) hash ^= AdditionalStorage.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class AppliedItems : pb::IMessage<AppliedItems>
-    {
-        /// <summary>Field number for the "item" field.</summary>
-        public const int ItemFieldNumber = 4;
-
-        private static readonly pb::MessageParser<AppliedItems> _parser =
-            new pb::MessageParser<AppliedItems>(() => new AppliedItems());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem item_;
-
-        public AppliedItems()
-        {
-            OnConstruction();
-        }
-
-        public AppliedItems(AppliedItems other) : this()
-        {
-            Item = other.item_ != null ? other.Item.Clone() : null;
-        }
-
-        public static pb::MessageParser<AppliedItems> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[18]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem Item
-        {
-            get { return item_; }
-            set { item_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public AppliedItems Clone()
-        {
-            return new AppliedItems(this);
-        }
-
-        public bool Equals(AppliedItems other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!Equals(Item, other.Item)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (item_ != null)
-            {
-                output.WriteRawTag(34);
-                output.WriteMessage(Item);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (item_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
-            }
-            return size;
-        }
-
-        public void MergeFrom(AppliedItems other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.item_ != null)
-            {
-                if (item_ == null)
-                {
-                    item_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem();
-                }
-                Item.MergeFrom(other.Item);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 34:
-                        {
-                            if (item_ == null)
-                            {
-                                item_ = new global::PokemonGo.RocketAPI.GeneratedCode.AppliedItem();
-                            }
-                            input.ReadMessage(item_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as AppliedItems);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (item_ != null) hash ^= Item.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class AppliedItem : pb::IMessage<AppliedItem>
-    {
-        /// <summary>Field number for the "item_type" field.</summary>
-        public const int ItemTypeFieldNumber = 1;
-
-        /// <summary>Field number for the "item_type_category" field.</summary>
-        public const int ItemTypeCategoryFieldNumber = 2;
-
-        /// <summary>Field number for the "expire_ms" field.</summary>
-        public const int ExpireMsFieldNumber = 3;
-
-        /// <summary>Field number for the "applied_ms" field.</summary>
-        public const int AppliedMsFieldNumber = 4;
-
-        private static readonly pb::MessageParser<AppliedItem> _parser =
-            new pb::MessageParser<AppliedItem>(() => new AppliedItem());
-
-        private long appliedMs_;
-        private long expireMs_;
-        private global::AllEnum.ItemId itemType_ = 0;
-        private global::AllEnum.ItemType itemTypeCategory_ = 0;
-
-        public AppliedItem()
-        {
-            OnConstruction();
-        }
-
-        public AppliedItem(AppliedItem other) : this()
-        {
-            itemType_ = other.itemType_;
-            itemTypeCategory_ = other.itemTypeCategory_;
-            expireMs_ = other.expireMs_;
-            appliedMs_ = other.appliedMs_;
-        }
-
-        public static pb::MessageParser<AppliedItem> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[19]; }
-        }
-
-        public global::AllEnum.ItemId ItemType
-        {
-            get { return itemType_; }
-            set { itemType_ = value; }
-        }
-
-        public global::AllEnum.ItemType ItemTypeCategory
-        {
-            get { return itemTypeCategory_; }
-            set { itemTypeCategory_ = value; }
-        }
-
-        public long ExpireMs
-        {
-            get { return expireMs_; }
-            set { expireMs_ = value; }
-        }
-
-        public long AppliedMs
-        {
-            get { return appliedMs_; }
-            set { appliedMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public AppliedItem Clone()
-        {
-            return new AppliedItem(this);
-        }
-
-        public bool Equals(AppliedItem other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemType != other.ItemType) return false;
-            if (ItemTypeCategory != other.ItemTypeCategory) return false;
-            if (ExpireMs != other.ExpireMs) return false;
-            if (AppliedMs != other.AppliedMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemType != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)ItemType);
-            }
-            if (ItemTypeCategory != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)ItemTypeCategory);
-            }
-            if (ExpireMs != 0L)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt64(ExpireMs);
-            }
-            if (AppliedMs != 0L)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt64(AppliedMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemType);
-            }
-            if (ItemTypeCategory != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemTypeCategory);
-            }
-            if (ExpireMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpireMs);
-            }
-            if (AppliedMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(AppliedMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(AppliedItem other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemType != 0)
-            {
-                ItemType = other.ItemType;
-            }
-            if (other.ItemTypeCategory != 0)
-            {
-                ItemTypeCategory = other.ItemTypeCategory;
-            }
-            if (other.ExpireMs != 0L)
-            {
-                ExpireMs = other.ExpireMs;
-            }
-            if (other.AppliedMs != 0L)
-            {
-                AppliedMs = other.AppliedMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            itemType_ = (global::AllEnum.ItemId)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            itemTypeCategory_ = (global::AllEnum.ItemType)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            ExpireMs = input.ReadInt64();
-                            break;
-                        }
-                    case 32:
-                        {
-                            AppliedMs = input.ReadInt64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as AppliedItem);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemType != 0) hash ^= ItemType.GetHashCode();
-            if (ItemTypeCategory != 0) hash ^= ItemTypeCategory.GetHashCode();
-            if (ExpireMs != 0L) hash ^= ExpireMs.GetHashCode();
-            if (AppliedMs != 0L) hash ^= AppliedMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EggIncubators : pb::IMessage<EggIncubators>
-    {
-        /// <summary>Field number for the "egg_incubator" field.</summary>
-        public const int EggIncubatorFieldNumber = 1;
-
-        private static readonly pb::MessageParser<EggIncubators> _parser =
-            new pb::MessageParser<EggIncubators>(() => new EggIncubators());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator eggIncubator_;
-
-        public EggIncubators()
-        {
-            OnConstruction();
-        }
-
-        public EggIncubators(EggIncubators other) : this()
-        {
-            EggIncubator = other.eggIncubator_ != null ? other.EggIncubator.Clone() : null;
-        }
-
-        public static pb::MessageParser<EggIncubators> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[20]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator EggIncubator
-        {
-            get { return eggIncubator_; }
-            set { eggIncubator_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EggIncubators Clone()
-        {
-            return new EggIncubators(this);
-        }
-
-        public bool Equals(EggIncubators other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!Equals(EggIncubator, other.EggIncubator)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (eggIncubator_ != null)
-            {
-                output.WriteRawTag(10);
-                output.WriteMessage(EggIncubator);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (eggIncubator_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubator);
-            }
-            return size;
-        }
-
-        public void MergeFrom(EggIncubators other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.eggIncubator_ != null)
-            {
-                if (eggIncubator_ == null)
-                {
-                    eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator();
-                }
-                EggIncubator.MergeFrom(other.EggIncubator);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            if (eggIncubator_ == null)
-                            {
-                                eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubator();
-                            }
-                            input.ReadMessage(eggIncubator_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EggIncubators);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (eggIncubator_ != null) hash ^= EggIncubator.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EggIncubator : pb::IMessage<EggIncubator>
-    {
-        /// <summary>Field number for the "item_id" field.</summary>
-        public const int ItemIdFieldNumber = 1;
-
-        /// <summary>Field number for the "item_type" field.</summary>
-        public const int ItemTypeFieldNumber = 2;
-
-        /// <summary>Field number for the "incubator_type" field.</summary>
-        public const int IncubatorTypeFieldNumber = 3;
-
-        /// <summary>Field number for the "uses_remaining" field.</summary>
-        public const int UsesRemainingFieldNumber = 4;
-
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 5;
-
-        /// <summary>Field number for the "start_km_walked" field.</summary>
-        public const int StartKmWalkedFieldNumber = 6;
-
-        /// <summary>Field number for the "target_km_walked" field.</summary>
-        public const int TargetKmWalkedFieldNumber = 7;
-
-        private static readonly pb::MessageParser<EggIncubator> _parser =
-            new pb::MessageParser<EggIncubator>(() => new EggIncubator());
-
-        private global::AllEnum.EggIncubatorType incubatorType_ = 0;
-        private string itemId_ = "";
-        private global::AllEnum.ItemType itemType_ = 0;
-        private long pokemonId_;
-        private double startKmWalked_;
-        private double targetKmWalked_;
-        private int usesRemaining_;
-
-        public EggIncubator()
-        {
-            OnConstruction();
-        }
-
-        public EggIncubator(EggIncubator other) : this()
-        {
-            itemId_ = other.itemId_;
-            itemType_ = other.itemType_;
-            incubatorType_ = other.incubatorType_;
-            usesRemaining_ = other.usesRemaining_;
-            pokemonId_ = other.pokemonId_;
-            startKmWalked_ = other.startKmWalked_;
-            targetKmWalked_ = other.targetKmWalked_;
-        }
-
-        public static pb::MessageParser<EggIncubator> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[21]; }
-        }
-
-        public string ItemId
-        {
-            get { return itemId_; }
-            set { itemId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::AllEnum.ItemType ItemType
-        {
-            get { return itemType_; }
-            set { itemType_ = value; }
-        }
-
-        public global::AllEnum.EggIncubatorType IncubatorType
-        {
-            get { return incubatorType_; }
-            set { incubatorType_ = value; }
-        }
-
-        public int UsesRemaining
-        {
-            get { return usesRemaining_; }
-            set { usesRemaining_ = value; }
-        }
-
-        /// <summary>
-        ///     TODO: Check if is PokemonType
-        /// </summary>
-        public long PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        public double StartKmWalked
-        {
-            get { return startKmWalked_; }
-            set { startKmWalked_ = value; }
-        }
-
-        public double TargetKmWalked
-        {
-            get { return targetKmWalked_; }
-            set { targetKmWalked_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EggIncubator Clone()
-        {
-            return new EggIncubator(this);
-        }
-
-        public bool Equals(EggIncubator other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemId != other.ItemId) return false;
-            if (ItemType != other.ItemType) return false;
-            if (IncubatorType != other.IncubatorType) return false;
-            if (UsesRemaining != other.UsesRemaining) return false;
-            if (PokemonId != other.PokemonId) return false;
-            if (StartKmWalked != other.StartKmWalked) return false;
-            if (TargetKmWalked != other.TargetKmWalked) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(ItemId);
-            }
-            if (ItemType != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)ItemType);
-            }
-            if (IncubatorType != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteEnum((int)IncubatorType);
-            }
-            if (UsesRemaining != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(UsesRemaining);
-            }
-            if (PokemonId != 0L)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt64(PokemonId);
-            }
-            if (StartKmWalked != 0D)
-            {
-                output.WriteRawTag(49);
-                output.WriteDouble(StartKmWalked);
-            }
-            if (TargetKmWalked != 0D)
-            {
-                output.WriteRawTag(57);
-                output.WriteDouble(TargetKmWalked);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemId);
-            }
-            if (ItemType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemType);
-            }
-            if (IncubatorType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)IncubatorType);
-            }
-            if (UsesRemaining != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(UsesRemaining);
-            }
-            if (PokemonId != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(PokemonId);
-            }
-            if (StartKmWalked != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (TargetKmWalked != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(EggIncubator other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemId.Length != 0)
-            {
-                ItemId = other.ItemId;
-            }
-            if (other.ItemType != 0)
-            {
-                ItemType = other.ItemType;
-            }
-            if (other.IncubatorType != 0)
-            {
-                IncubatorType = other.IncubatorType;
-            }
-            if (other.UsesRemaining != 0)
-            {
-                UsesRemaining = other.UsesRemaining;
-            }
-            if (other.PokemonId != 0L)
-            {
-                PokemonId = other.PokemonId;
-            }
-            if (other.StartKmWalked != 0D)
-            {
-                StartKmWalked = other.StartKmWalked;
-            }
-            if (other.TargetKmWalked != 0D)
-            {
-                TargetKmWalked = other.TargetKmWalked;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            ItemId = input.ReadString();
-                            break;
-                        }
-                    case 16:
-                        {
-                            itemType_ = (global::AllEnum.ItemType)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            incubatorType_ = (global::AllEnum.EggIncubatorType)input.ReadEnum();
-                            break;
-                        }
-                    case 32:
-                        {
-                            UsesRemaining = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            PokemonId = input.ReadInt64();
-                            break;
-                        }
-                    case 49:
-                        {
-                            StartKmWalked = input.ReadDouble();
-                            break;
-                        }
-                    case 57:
-                        {
-                            TargetKmWalked = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EggIncubator);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemId.Length != 0) hash ^= ItemId.GetHashCode();
-            if (ItemType != 0) hash ^= ItemType.GetHashCode();
-            if (IncubatorType != 0) hash ^= IncubatorType.GetHashCode();
-            if (UsesRemaining != 0) hash ^= UsesRemaining.GetHashCode();
-            if (PokemonId != 0L) hash ^= PokemonId.GetHashCode();
-            if (StartKmWalked != 0D) hash ^= StartKmWalked.GetHashCode();
-            if (TargetKmWalked != 0D) hash ^= TargetKmWalked.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PokemonFamily : pb::IMessage<PokemonFamily>
-    {
-        /// <summary>Field number for the "family_id" field.</summary>
-        public const int FamilyIdFieldNumber = 1;
-
-        /// <summary>Field number for the "candy" field.</summary>
-        public const int CandyFieldNumber = 2;
-
-        private static readonly pb::MessageParser<PokemonFamily> _parser =
-            new pb::MessageParser<PokemonFamily>(() => new PokemonFamily());
-
-        private int candy_;
-        private global::AllEnum.PokemonFamilyId familyId_ = 0;
-
-        public PokemonFamily()
-        {
-            OnConstruction();
-        }
-
-        public PokemonFamily(PokemonFamily other) : this()
-        {
-            familyId_ = other.familyId_;
-            candy_ = other.candy_;
-        }
-
-        public static pb::MessageParser<PokemonFamily> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[22]; }
-        }
-
-        public global::AllEnum.PokemonFamilyId FamilyId
-        {
-            get { return familyId_; }
-            set { familyId_ = value; }
-        }
-
-        public int Candy
-        {
-            get { return candy_; }
-            set { candy_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PokemonFamily Clone()
-        {
-            return new PokemonFamily(this);
-        }
-
-        public bool Equals(PokemonFamily other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (FamilyId != other.FamilyId) return false;
-            if (Candy != other.Candy) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (FamilyId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)FamilyId);
-            }
-            if (Candy != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(Candy);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (FamilyId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)FamilyId);
-            }
-            if (Candy != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Candy);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PokemonFamily other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.FamilyId != 0)
-            {
-                FamilyId = other.FamilyId;
-            }
-            if (other.Candy != 0)
-            {
-                Candy = other.Candy;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            familyId_ = (global::AllEnum.PokemonFamilyId)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            Candy = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PokemonFamily);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (FamilyId != 0) hash ^= FamilyId.GetHashCode();
-            if (Candy != 0) hash ^= Candy.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GetMapObjectsRequest : pb::IMessage<GetMapObjectsRequest>
-    {
-        /// <summary>Field number for the "cell_id" field.</summary>
-        public const int CellIdFieldNumber = 1;
-
-        /// <summary>Field number for the "since_timestamp_ms" field.</summary>
-        public const int SinceTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 4;
-
-        private static readonly pb::MessageParser<GetMapObjectsRequest> _parser =
-            new pb::MessageParser<GetMapObjectsRequest>(() => new GetMapObjectsRequest());
-
-        private pb::ByteString cellId_ = pb::ByteString.Empty;
-        private double latitude_;
-        private double longitude_;
-        private pb::ByteString sinceTimestampMs_ = pb::ByteString.Empty;
-
-        public GetMapObjectsRequest()
-        {
-            OnConstruction();
-        }
-
-        public GetMapObjectsRequest(GetMapObjectsRequest other) : this()
-        {
-            cellId_ = other.cellId_;
-            sinceTimestampMs_ = other.sinceTimestampMs_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-        }
-
-        public static pb::MessageParser<GetMapObjectsRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[23]; }
-        }
-
-        public pb::ByteString CellId
-        {
-            get { return cellId_; }
-            set { cellId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public pb::ByteString SinceTimestampMs
-        {
-            get { return sinceTimestampMs_; }
-            set { sinceTimestampMs_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GetMapObjectsRequest Clone()
-        {
-            return new GetMapObjectsRequest(this);
-        }
-
-        public bool Equals(GetMapObjectsRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (CellId != other.CellId) return false;
-            if (SinceTimestampMs != other.SinceTimestampMs) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (CellId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteBytes(CellId);
-            }
-            if (SinceTimestampMs.Length != 0)
-            {
-                output.WriteRawTag(18);
-                output.WriteBytes(SinceTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(Longitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (CellId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(CellId);
-            }
-            if (SinceTimestampMs.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(SinceTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(GetMapObjectsRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.CellId.Length != 0)
-            {
-                CellId = other.CellId;
-            }
-            if (other.SinceTimestampMs.Length != 0)
-            {
-                SinceTimestampMs = other.SinceTimestampMs;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            CellId = input.ReadBytes();
-                            break;
-                        }
-                    case 18:
-                        {
-                            SinceTimestampMs = input.ReadBytes();
-                            break;
-                        }
-                    case 25:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 33:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GetMapObjectsRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (CellId.Length != 0) hash ^= CellId.GetHashCode();
-            if (SinceTimestampMs.Length != 0) hash ^= SinceTimestampMs.GetHashCode();
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GetMapObjectsResponse : pb::IMessage<GetMapObjectsResponse>
-    {
-        /// <summary>Field number for the "map_cells" field.</summary>
-        public const int MapCellsFieldNumber = 1;
-
-        /// <summary>Field number for the "status" field.</summary>
-        public const int StatusFieldNumber = 2;
-
-        private static readonly pb::MessageParser<GetMapObjectsResponse> _parser =
-            new pb::MessageParser<GetMapObjectsResponse>(() => new GetMapObjectsResponse());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapCell>
-            _repeated_mapCells_codec
-                = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.MapCell.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapCell> mapCells_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapCell>();
-
-        private global::AllEnum.MapObjectsStatus status_ = 0;
-
-        public GetMapObjectsResponse()
-        {
-            OnConstruction();
-        }
-
-        public GetMapObjectsResponse(GetMapObjectsResponse other) : this()
-        {
-            mapCells_ = other.mapCells_.Clone();
-            status_ = other.status_;
-        }
-
-        public static pb::MessageParser<GetMapObjectsResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[24]; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapCell> MapCells
-        {
-            get { return mapCells_; }
-        }
-
-        public global::AllEnum.MapObjectsStatus Status
-        {
-            get { return status_; }
-            set { status_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GetMapObjectsResponse Clone()
-        {
-            return new GetMapObjectsResponse(this);
-        }
-
-        public bool Equals(GetMapObjectsResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!mapCells_.Equals(other.mapCells_)) return false;
-            if (Status != other.Status) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            mapCells_.WriteTo(output, _repeated_mapCells_codec);
-            if (Status != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)Status);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += mapCells_.CalculateSize(_repeated_mapCells_codec);
-            if (Status != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Status);
-            }
-            return size;
-        }
-
-        public void MergeFrom(GetMapObjectsResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            mapCells_.Add(other.mapCells_);
-            if (other.Status != 0)
-            {
-                Status = other.Status;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            mapCells_.AddEntriesFrom(input, _repeated_mapCells_codec);
-                            break;
-                        }
-                    case 16:
-                        {
-                            status_ = (global::AllEnum.MapObjectsStatus)input.ReadEnum();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GetMapObjectsResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= mapCells_.GetHashCode();
-            if (Status != 0) hash ^= Status.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class MapCell : pb::IMessage<MapCell>
-    {
-        /// <summary>Field number for the "s2_cell_id" field.</summary>
-        public const int S2CellIdFieldNumber = 1;
-
-        /// <summary>Field number for the "current_timestamp_ms" field.</summary>
-        public const int CurrentTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "forts" field.</summary>
-        public const int FortsFieldNumber = 3;
-
-        /// <summary>Field number for the "spawn_points" field.</summary>
-        public const int SpawnPointsFieldNumber = 4;
-
-        /// <summary>Field number for the "deleted_objects" field.</summary>
-        public const int DeletedObjectsFieldNumber = 6;
-
-        /// <summary>Field number for the "is_truncated_list" field.</summary>
-        public const int IsTruncatedListFieldNumber = 7;
-
-        /// <summary>Field number for the "fort_summaries" field.</summary>
-        public const int FortSummariesFieldNumber = 8;
-
-        /// <summary>Field number for the "decimated_spawn_points" field.</summary>
-        public const int DecimatedSpawnPointsFieldNumber = 9;
-
-        /// <summary>Field number for the "wild_pokemons" field.</summary>
-        public const int WildPokemonsFieldNumber = 5;
-
-        /// <summary>Field number for the "catchable_pokemons" field.</summary>
-        public const int CatchablePokemonsFieldNumber = 10;
-
-        /// <summary>Field number for the "nearby_pokemons" field.</summary>
-        public const int NearbyPokemonsFieldNumber = 11;
-
-        private static readonly pb::MessageParser<MapCell> _parser = new pb::MessageParser<MapCell>(() => new MapCell());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortData> _repeated_forts_codec
-            = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.FortData.Parser);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint>
-            _repeated_spawnPoints_codec
-                = pb::FieldCodec.ForMessage(34, global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint.Parser);
-
-        private static readonly pb::FieldCodec<string> _repeated_deletedObjects_codec
-            = pb::FieldCodec.ForString(50);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary>
-            _repeated_fortSummaries_codec
-                = pb::FieldCodec.ForMessage(66, global::PokemonGo.RocketAPI.GeneratedCode.FortSummary.Parser);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint>
-            _repeated_decimatedSpawnPoints_codec
-                = pb::FieldCodec.ForMessage(74, global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint.Parser);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon>
-            _repeated_wildPokemons_codec
-                = pb::FieldCodec.ForMessage(42, global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon.Parser);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon>
-            _repeated_catchablePokemons_codec
-                = pb::FieldCodec.ForMessage(82, global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon.Parser);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon>
-            _repeated_nearbyPokemons_codec
-                = pb::FieldCodec.ForMessage(90, global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon> catchablePokemons_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> decimatedSpawnPoints_
-            = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint>();
-
-        private readonly pbc::RepeatedField<string> deletedObjects_ = new pbc::RepeatedField<string>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> forts_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary> fortSummaries_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon> nearbyPokemons_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> spawnPoints_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> wildPokemons_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon>();
-
-        private long currentTimestampMs_;
-        private bool isTruncatedList_;
-        private ulong s2CellId_;
-
-        public MapCell()
-        {
-            OnConstruction();
-        }
-
-        public MapCell(MapCell other) : this()
-        {
-            s2CellId_ = other.s2CellId_;
-            currentTimestampMs_ = other.currentTimestampMs_;
-            forts_ = other.forts_.Clone();
-            spawnPoints_ = other.spawnPoints_.Clone();
-            deletedObjects_ = other.deletedObjects_.Clone();
-            isTruncatedList_ = other.isTruncatedList_;
-            fortSummaries_ = other.fortSummaries_.Clone();
-            decimatedSpawnPoints_ = other.decimatedSpawnPoints_.Clone();
-            wildPokemons_ = other.wildPokemons_.Clone();
-            catchablePokemons_ = other.catchablePokemons_.Clone();
-            nearbyPokemons_ = other.nearbyPokemons_.Clone();
-        }
-
-        public static pb::MessageParser<MapCell> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[25]; }
-        }
-
-        /// <summary>
-        ///     S2 geographic area that the cell covers (http://s2map.com/)
-        ///     (https://code.google.com/archive/p/s2-geometry-library/)
-        /// </summary>
-        public ulong S2CellId
-        {
-            get { return s2CellId_; }
-            set { s2CellId_ = value; }
-        }
-
-        public long CurrentTimestampMs
-        {
-            get { return currentTimestampMs_; }
-            set { currentTimestampMs_ = value; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> Forts
-        {
-            get { return forts_; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> SpawnPoints
-        {
-            get { return spawnPoints_; }
-        }
-
-        public pbc::RepeatedField<string> DeletedObjects
-        {
-            get { return deletedObjects_; }
-        }
-
-        public bool IsTruncatedList
-        {
-            get { return isTruncatedList_; }
-            set { isTruncatedList_ = value; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSummary> FortSummaries
-        {
-            get { return fortSummaries_; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.SpawnPoint> DecimatedSpawnPoints
-        {
-            get { return decimatedSpawnPoints_; }
-        }
-
-        /// <summary>
-        ///     Pokemon within 2 steps or less.
-        /// </summary>
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> WildPokemons
-        {
-            get { return wildPokemons_; }
-        }
-
-        /// <summary>
-        ///     Pokemon within 1 step or none.
-        /// </summary>
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.MapPokemon> CatchablePokemons
-        {
-            get { return catchablePokemons_; }
-        }
-
-        /// <summary>
-        ///     Pokemon farther away than 2 steps, but still in the area.
-        /// </summary>
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.NearbyPokemon> NearbyPokemons
-        {
-            get { return nearbyPokemons_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public MapCell Clone()
-        {
-            return new MapCell(this);
-        }
-
-        public bool Equals(MapCell other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (S2CellId != other.S2CellId) return false;
-            if (CurrentTimestampMs != other.CurrentTimestampMs) return false;
-            if (!forts_.Equals(other.forts_)) return false;
-            if (!spawnPoints_.Equals(other.spawnPoints_)) return false;
-            if (!deletedObjects_.Equals(other.deletedObjects_)) return false;
-            if (IsTruncatedList != other.IsTruncatedList) return false;
-            if (!fortSummaries_.Equals(other.fortSummaries_)) return false;
-            if (!decimatedSpawnPoints_.Equals(other.decimatedSpawnPoints_)) return false;
-            if (!wildPokemons_.Equals(other.wildPokemons_)) return false;
-            if (!catchablePokemons_.Equals(other.catchablePokemons_)) return false;
-            if (!nearbyPokemons_.Equals(other.nearbyPokemons_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (S2CellId != 0UL)
-            {
-                output.WriteRawTag(8);
-                output.WriteUInt64(S2CellId);
-            }
-            if (CurrentTimestampMs != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(CurrentTimestampMs);
-            }
-            forts_.WriteTo(output, _repeated_forts_codec);
-            spawnPoints_.WriteTo(output, _repeated_spawnPoints_codec);
-            wildPokemons_.WriteTo(output, _repeated_wildPokemons_codec);
-            deletedObjects_.WriteTo(output, _repeated_deletedObjects_codec);
-            if (IsTruncatedList != false)
-            {
-                output.WriteRawTag(56);
-                output.WriteBool(IsTruncatedList);
-            }
-            fortSummaries_.WriteTo(output, _repeated_fortSummaries_codec);
-            decimatedSpawnPoints_.WriteTo(output, _repeated_decimatedSpawnPoints_codec);
-            catchablePokemons_.WriteTo(output, _repeated_catchablePokemons_codec);
-            nearbyPokemons_.WriteTo(output, _repeated_nearbyPokemons_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (S2CellId != 0UL)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(S2CellId);
-            }
-            if (CurrentTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(CurrentTimestampMs);
-            }
-            size += forts_.CalculateSize(_repeated_forts_codec);
-            size += spawnPoints_.CalculateSize(_repeated_spawnPoints_codec);
-            size += deletedObjects_.CalculateSize(_repeated_deletedObjects_codec);
-            if (IsTruncatedList != false)
-            {
-                size += 1 + 1;
-            }
-            size += fortSummaries_.CalculateSize(_repeated_fortSummaries_codec);
-            size += decimatedSpawnPoints_.CalculateSize(_repeated_decimatedSpawnPoints_codec);
-            size += wildPokemons_.CalculateSize(_repeated_wildPokemons_codec);
-            size += catchablePokemons_.CalculateSize(_repeated_catchablePokemons_codec);
-            size += nearbyPokemons_.CalculateSize(_repeated_nearbyPokemons_codec);
-            return size;
-        }
-
-        public void MergeFrom(MapCell other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.S2CellId != 0UL)
-            {
-                S2CellId = other.S2CellId;
-            }
-            if (other.CurrentTimestampMs != 0L)
-            {
-                CurrentTimestampMs = other.CurrentTimestampMs;
-            }
-            forts_.Add(other.forts_);
-            spawnPoints_.Add(other.spawnPoints_);
-            deletedObjects_.Add(other.deletedObjects_);
-            if (other.IsTruncatedList != false)
-            {
-                IsTruncatedList = other.IsTruncatedList;
-            }
-            fortSummaries_.Add(other.fortSummaries_);
-            decimatedSpawnPoints_.Add(other.decimatedSpawnPoints_);
-            wildPokemons_.Add(other.wildPokemons_);
-            catchablePokemons_.Add(other.catchablePokemons_);
-            nearbyPokemons_.Add(other.nearbyPokemons_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            S2CellId = input.ReadUInt64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            CurrentTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 26:
-                        {
-                            forts_.AddEntriesFrom(input, _repeated_forts_codec);
-                            break;
-                        }
-                    case 34:
-                        {
-                            spawnPoints_.AddEntriesFrom(input, _repeated_spawnPoints_codec);
-                            break;
-                        }
-                    case 42:
-                        {
-                            wildPokemons_.AddEntriesFrom(input, _repeated_wildPokemons_codec);
-                            break;
-                        }
-                    case 50:
-                        {
-                            deletedObjects_.AddEntriesFrom(input, _repeated_deletedObjects_codec);
-                            break;
-                        }
-                    case 56:
-                        {
-                            IsTruncatedList = input.ReadBool();
-                            break;
-                        }
-                    case 66:
-                        {
-                            fortSummaries_.AddEntriesFrom(input, _repeated_fortSummaries_codec);
-                            break;
-                        }
-                    case 74:
-                        {
-                            decimatedSpawnPoints_.AddEntriesFrom(input, _repeated_decimatedSpawnPoints_codec);
-                            break;
-                        }
-                    case 82:
-                        {
-                            catchablePokemons_.AddEntriesFrom(input, _repeated_catchablePokemons_codec);
-                            break;
-                        }
-                    case 90:
-                        {
-                            nearbyPokemons_.AddEntriesFrom(input, _repeated_nearbyPokemons_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as MapCell);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (S2CellId != 0UL) hash ^= S2CellId.GetHashCode();
-            if (CurrentTimestampMs != 0L) hash ^= CurrentTimestampMs.GetHashCode();
-            hash ^= forts_.GetHashCode();
-            hash ^= spawnPoints_.GetHashCode();
-            hash ^= deletedObjects_.GetHashCode();
-            if (IsTruncatedList != false) hash ^= IsTruncatedList.GetHashCode();
-            hash ^= fortSummaries_.GetHashCode();
-            hash ^= decimatedSpawnPoints_.GetHashCode();
-            hash ^= wildPokemons_.GetHashCode();
-            hash ^= catchablePokemons_.GetHashCode();
-            hash ^= nearbyPokemons_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortData : pb::IMessage<FortData>
-    {
-        /// <summary>Field number for the "id" field.</summary>
-        public const int IdFieldNumber = 1;
-
-        /// <summary>Field number for the "last_modified_timestamp_ms" field.</summary>
-        public const int LastModifiedTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 4;
-
-        /// <summary>Field number for the "enabled" field.</summary>
-        public const int EnabledFieldNumber = 8;
-
-        /// <summary>Field number for the "type" field.</summary>
-        public const int TypeFieldNumber = 9;
-
-        /// <summary>Field number for the "owned_by_team" field.</summary>
-        public const int OwnedByTeamFieldNumber = 5;
-
-        /// <summary>Field number for the "guard_pokemon_id" field.</summary>
-        public const int GuardPokemonIdFieldNumber = 6;
-
-        /// <summary>Field number for the "guard_pokemon_cp" field.</summary>
-        public const int GuardPokemonCpFieldNumber = 7;
-
-        /// <summary>Field number for the "gym_points" field.</summary>
-        public const int GymPointsFieldNumber = 10;
-
-        /// <summary>Field number for the "is_in_battle" field.</summary>
-        public const int IsInBattleFieldNumber = 11;
-
-        /// <summary>Field number for the "cooldown_complete_timestamp_ms" field.</summary>
-        public const int CooldownCompleteTimestampMsFieldNumber = 14;
-
-        /// <summary>Field number for the "sponsor" field.</summary>
-        public const int SponsorFieldNumber = 15;
-
-        /// <summary>Field number for the "rendering_type" field.</summary>
-        public const int RenderingTypeFieldNumber = 16;
-
-        /// <summary>Field number for the "active_fort_modifier" field.</summary>
-        public const int ActiveFortModifierFieldNumber = 12;
-
-        /// <summary>Field number for the "lure_info" field.</summary>
-        public const int LureInfoFieldNumber = 13;
-
-        private static readonly pb::MessageParser<FortData> _parser =
-            new pb::MessageParser<FortData>(() => new FortData());
-
-        private pb::ByteString activeFortModifier_ = pb::ByteString.Empty;
-        private long cooldownCompleteTimestampMs_;
-        private bool enabled_;
-        private int guardPokemonCp_;
-        private global::AllEnum.PokemonId guardPokemonId_ = 0;
-        private long gymPoints_;
-        private string id_ = "";
-        private bool isInBattle_;
-        private long lastModifiedTimestampMs_;
-        private double latitude_;
-        private double longitude_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo lureInfo_;
-        private global::AllEnum.TeamColor ownedByTeam_ = 0;
-        private global::AllEnum.FortRenderingType renderingType_ = 0;
-        private global::AllEnum.FortSponsor sponsor_ = 0;
-        private global::AllEnum.FortType type_ = 0;
-
-        public FortData()
-        {
-            OnConstruction();
-        }
-
-        public FortData(FortData other) : this()
-        {
-            id_ = other.id_;
-            lastModifiedTimestampMs_ = other.lastModifiedTimestampMs_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-            enabled_ = other.enabled_;
-            type_ = other.type_;
-            ownedByTeam_ = other.ownedByTeam_;
-            guardPokemonId_ = other.guardPokemonId_;
-            guardPokemonCp_ = other.guardPokemonCp_;
-            gymPoints_ = other.gymPoints_;
-            isInBattle_ = other.isInBattle_;
-            cooldownCompleteTimestampMs_ = other.cooldownCompleteTimestampMs_;
-            sponsor_ = other.sponsor_;
-            renderingType_ = other.renderingType_;
-            activeFortModifier_ = other.activeFortModifier_;
-            LureInfo = other.lureInfo_ != null ? other.LureInfo.Clone() : null;
-        }
-
-        public static pb::MessageParser<FortData> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[26]; }
-        }
-
-        public string Id
-        {
-            get { return id_; }
-            set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public long LastModifiedTimestampMs
-        {
-            get { return lastModifiedTimestampMs_; }
-            set { lastModifiedTimestampMs_ = value; }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        public bool Enabled
-        {
-            get { return enabled_; }
-            set { enabled_ = value; }
-        }
-
-        public global::AllEnum.FortType Type
-        {
-            get { return type_; }
-            set { type_ = value; }
-        }
-
-        /// <summary>
-        ///     Team that owns the gym
-        /// </summary>
-        public global::AllEnum.TeamColor OwnedByTeam
-        {
-            get { return ownedByTeam_; }
-            set { ownedByTeam_ = value; }
-        }
-
-        /// <summary>
-        ///     Highest CP Pokemon at the gym
-        /// </summary>
-        public global::AllEnum.PokemonId GuardPokemonId
-        {
-            get { return guardPokemonId_; }
-            set { guardPokemonId_ = value; }
-        }
-
-        public int GuardPokemonCp
-        {
-            get { return guardPokemonCp_; }
-            set { guardPokemonCp_ = value; }
-        }
-
-        /// <summary>
-        ///     Prestigate / experience of the gym
-        /// </summary>
-        public long GymPoints
-        {
-            get { return gymPoints_; }
-            set { gymPoints_ = value; }
-        }
-
-        /// <summary>
-        ///     Whether someone is battling at the gym currently
-        /// </summary>
-        public bool IsInBattle
-        {
-            get { return isInBattle_; }
-            set { isInBattle_ = value; }
-        }
-
-        /// <summary>
-        ///     Timestamp when the pokestop can be activated again to get items / xp
-        /// </summary>
-        public long CooldownCompleteTimestampMs
-        {
-            get { return cooldownCompleteTimestampMs_; }
-            set { cooldownCompleteTimestampMs_ = value; }
-        }
-
-        public global::AllEnum.FortSponsor Sponsor
-        {
-            get { return sponsor_; }
-            set { sponsor_ = value; }
-        }
-
-        public global::AllEnum.FortRenderingType RenderingType
-        {
-            get { return renderingType_; }
-            set { renderingType_ = value; }
-        }
-
-        /// <summary>
-        ///     Might represent the type of item applied to the pokestop, right now only lures can be applied
-        /// </summary>
-        public pb::ByteString ActiveFortModifier
-        {
-            get { return activeFortModifier_; }
-            set { activeFortModifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo LureInfo
-        {
-            get { return lureInfo_; }
-            set { lureInfo_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortData Clone()
-        {
-            return new FortData(this);
-        }
-
-        public bool Equals(FortData other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Id != other.Id) return false;
-            if (LastModifiedTimestampMs != other.LastModifiedTimestampMs) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            if (Enabled != other.Enabled) return false;
-            if (Type != other.Type) return false;
-            if (OwnedByTeam != other.OwnedByTeam) return false;
-            if (GuardPokemonId != other.GuardPokemonId) return false;
-            if (GuardPokemonCp != other.GuardPokemonCp) return false;
-            if (GymPoints != other.GymPoints) return false;
-            if (IsInBattle != other.IsInBattle) return false;
-            if (CooldownCompleteTimestampMs != other.CooldownCompleteTimestampMs) return false;
-            if (Sponsor != other.Sponsor) return false;
-            if (RenderingType != other.RenderingType) return false;
-            if (ActiveFortModifier != other.ActiveFortModifier) return false;
-            if (!Equals(LureInfo, other.LureInfo)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Id.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(Id);
-            }
-            if (LastModifiedTimestampMs != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(LastModifiedTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(Longitude);
-            }
-            if (OwnedByTeam != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteEnum((int)OwnedByTeam);
-            }
-            if (GuardPokemonId != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteEnum((int)GuardPokemonId);
-            }
-            if (GuardPokemonCp != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteInt32(GuardPokemonCp);
-            }
-            if (Enabled != false)
-            {
-                output.WriteRawTag(64);
-                output.WriteBool(Enabled);
-            }
-            if (Type != 0)
-            {
-                output.WriteRawTag(72);
-                output.WriteEnum((int)Type);
-            }
-            if (GymPoints != 0L)
-            {
-                output.WriteRawTag(80);
-                output.WriteInt64(GymPoints);
-            }
-            if (IsInBattle != false)
-            {
-                output.WriteRawTag(88);
-                output.WriteBool(IsInBattle);
-            }
-            if (ActiveFortModifier.Length != 0)
-            {
-                output.WriteRawTag(98);
-                output.WriteBytes(ActiveFortModifier);
-            }
-            if (lureInfo_ != null)
-            {
-                output.WriteRawTag(106);
-                output.WriteMessage(LureInfo);
-            }
-            if (CooldownCompleteTimestampMs != 0L)
-            {
-                output.WriteRawTag(112);
-                output.WriteInt64(CooldownCompleteTimestampMs);
-            }
-            if (Sponsor != 0)
-            {
-                output.WriteRawTag(120);
-                output.WriteEnum((int)Sponsor);
-            }
-            if (RenderingType != 0)
-            {
-                output.WriteRawTag(128, 1);
-                output.WriteEnum((int)RenderingType);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Id.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
-            }
-            if (LastModifiedTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Enabled != false)
-            {
-                size += 1 + 1;
-            }
-            if (Type != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Type);
-            }
-            if (OwnedByTeam != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)OwnedByTeam);
-            }
-            if (GuardPokemonId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)GuardPokemonId);
-            }
-            if (GuardPokemonCp != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(GuardPokemonCp);
-            }
-            if (GymPoints != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(GymPoints);
-            }
-            if (IsInBattle != false)
-            {
-                size += 1 + 1;
-            }
-            if (CooldownCompleteTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(CooldownCompleteTimestampMs);
-            }
-            if (Sponsor != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Sponsor);
-            }
-            if (RenderingType != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeEnumSize((int)RenderingType);
-            }
-            if (ActiveFortModifier.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeBytesSize(ActiveFortModifier);
-            }
-            if (lureInfo_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(LureInfo);
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortData other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Id.Length != 0)
-            {
-                Id = other.Id;
-            }
-            if (other.LastModifiedTimestampMs != 0L)
-            {
-                LastModifiedTimestampMs = other.LastModifiedTimestampMs;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-            if (other.Enabled != false)
-            {
-                Enabled = other.Enabled;
-            }
-            if (other.Type != 0)
-            {
-                Type = other.Type;
-            }
-            if (other.OwnedByTeam != 0)
-            {
-                OwnedByTeam = other.OwnedByTeam;
-            }
-            if (other.GuardPokemonId != 0)
-            {
-                GuardPokemonId = other.GuardPokemonId;
-            }
-            if (other.GuardPokemonCp != 0)
-            {
-                GuardPokemonCp = other.GuardPokemonCp;
-            }
-            if (other.GymPoints != 0L)
-            {
-                GymPoints = other.GymPoints;
-            }
-            if (other.IsInBattle != false)
-            {
-                IsInBattle = other.IsInBattle;
-            }
-            if (other.CooldownCompleteTimestampMs != 0L)
-            {
-                CooldownCompleteTimestampMs = other.CooldownCompleteTimestampMs;
-            }
-            if (other.Sponsor != 0)
-            {
-                Sponsor = other.Sponsor;
-            }
-            if (other.RenderingType != 0)
-            {
-                RenderingType = other.RenderingType;
-            }
-            if (other.ActiveFortModifier.Length != 0)
-            {
-                ActiveFortModifier = other.ActiveFortModifier;
-            }
-            if (other.lureInfo_ != null)
-            {
-                if (lureInfo_ == null)
-                {
-                    lureInfo_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo();
-                }
-                LureInfo.MergeFrom(other.LureInfo);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            Id = input.ReadString();
-                            break;
-                        }
-                    case 16:
-                        {
-                            LastModifiedTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 25:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 33:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                    case 40:
-                        {
-                            ownedByTeam_ = (global::AllEnum.TeamColor)input.ReadEnum();
-                            break;
-                        }
-                    case 48:
-                        {
-                            guardPokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 56:
-                        {
-                            GuardPokemonCp = input.ReadInt32();
-                            break;
-                        }
-                    case 64:
-                        {
-                            Enabled = input.ReadBool();
-                            break;
-                        }
-                    case 72:
-                        {
-                            type_ = (global::AllEnum.FortType)input.ReadEnum();
-                            break;
-                        }
-                    case 80:
-                        {
-                            GymPoints = input.ReadInt64();
-                            break;
-                        }
-                    case 88:
-                        {
-                            IsInBattle = input.ReadBool();
-                            break;
-                        }
-                    case 98:
-                        {
-                            ActiveFortModifier = input.ReadBytes();
-                            break;
-                        }
-                    case 106:
-                        {
-                            if (lureInfo_ == null)
-                            {
-                                lureInfo_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortLureInfo();
-                            }
-                            input.ReadMessage(lureInfo_);
-                            break;
-                        }
-                    case 112:
-                        {
-                            CooldownCompleteTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 120:
-                        {
-                            sponsor_ = (global::AllEnum.FortSponsor)input.ReadEnum();
-                            break;
-                        }
-                    case 128:
-                        {
-                            renderingType_ = (global::AllEnum.FortRenderingType)input.ReadEnum();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortData);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Id.Length != 0) hash ^= Id.GetHashCode();
-            if (LastModifiedTimestampMs != 0L) hash ^= LastModifiedTimestampMs.GetHashCode();
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            if (Enabled != false) hash ^= Enabled.GetHashCode();
-            if (Type != 0) hash ^= Type.GetHashCode();
-            if (OwnedByTeam != 0) hash ^= OwnedByTeam.GetHashCode();
-            if (GuardPokemonId != 0) hash ^= GuardPokemonId.GetHashCode();
-            if (GuardPokemonCp != 0) hash ^= GuardPokemonCp.GetHashCode();
-            if (GymPoints != 0L) hash ^= GymPoints.GetHashCode();
-            if (IsInBattle != false) hash ^= IsInBattle.GetHashCode();
-            if (CooldownCompleteTimestampMs != 0L) hash ^= CooldownCompleteTimestampMs.GetHashCode();
-            if (Sponsor != 0) hash ^= Sponsor.GetHashCode();
-            if (RenderingType != 0) hash ^= RenderingType.GetHashCode();
-            if (ActiveFortModifier.Length != 0) hash ^= ActiveFortModifier.GetHashCode();
-            if (lureInfo_ != null) hash ^= LureInfo.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortLureInfo : pb::IMessage<FortLureInfo>
-    {
-        /// <summary>Field number for the "fort_id" field.</summary>
-        public const int FortIdFieldNumber = 1;
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-
-        /// <summary>Field number for the "active_pokemon_id" field.</summary>
-        public const int ActivePokemonIdFieldNumber = 3;
-
-        /// <summary>Field number for the "lure_expires_timestamp_ms" field.</summary>
-        public const int LureExpiresTimestampMsFieldNumber = 4;
-
-        private static readonly pb::MessageParser<FortLureInfo> _parser =
-            new pb::MessageParser<FortLureInfo>(() => new FortLureInfo());
-
-        private global::AllEnum.PokemonId activePokemonId_ = 0;
-        private string fortId_ = "";
-        private long lureExpiresTimestampMs_;
-        private double unknown2_;
-
-        public FortLureInfo()
-        {
-            OnConstruction();
-        }
-
-        public FortLureInfo(FortLureInfo other) : this()
-        {
-            fortId_ = other.fortId_;
-            unknown2_ = other.unknown2_;
-            activePokemonId_ = other.activePokemonId_;
-            lureExpiresTimestampMs_ = other.lureExpiresTimestampMs_;
-        }
-
-        public static pb::MessageParser<FortLureInfo> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[27]; }
-        }
-
-        public string FortId
-        {
-            get { return fortId_; }
-            set { fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public double Unknown2
-        {
-            get { return unknown2_; }
-            set { unknown2_ = value; }
-        }
-
-        public global::AllEnum.PokemonId ActivePokemonId
-        {
-            get { return activePokemonId_; }
-            set { activePokemonId_ = value; }
-        }
-
-        public long LureExpiresTimestampMs
-        {
-            get { return lureExpiresTimestampMs_; }
-            set { lureExpiresTimestampMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortLureInfo Clone()
-        {
-            return new FortLureInfo(this);
-        }
-
-        public bool Equals(FortLureInfo other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (FortId != other.FortId) return false;
-            if (Unknown2 != other.Unknown2) return false;
-            if (ActivePokemonId != other.ActivePokemonId) return false;
-            if (LureExpiresTimestampMs != other.LureExpiresTimestampMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (FortId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(FortId);
-            }
-            if (Unknown2 != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(Unknown2);
-            }
-            if (ActivePokemonId != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteEnum((int)ActivePokemonId);
-            }
-            if (LureExpiresTimestampMs != 0L)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt64(LureExpiresTimestampMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (FortId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
-            }
-            if (Unknown2 != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (ActivePokemonId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ActivePokemonId);
-            }
-            if (LureExpiresTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(LureExpiresTimestampMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortLureInfo other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.FortId.Length != 0)
-            {
-                FortId = other.FortId;
-            }
-            if (other.Unknown2 != 0D)
-            {
-                Unknown2 = other.Unknown2;
-            }
-            if (other.ActivePokemonId != 0)
-            {
-                ActivePokemonId = other.ActivePokemonId;
-            }
-            if (other.LureExpiresTimestampMs != 0L)
-            {
-                LureExpiresTimestampMs = other.LureExpiresTimestampMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            FortId = input.ReadString();
-                            break;
-                        }
-                    case 17:
-                        {
-                            Unknown2 = input.ReadDouble();
-                            break;
-                        }
-                    case 24:
-                        {
-                            activePokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 32:
-                        {
-                            LureExpiresTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortLureInfo);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (FortId.Length != 0) hash ^= FortId.GetHashCode();
-            if (Unknown2 != 0D) hash ^= Unknown2.GetHashCode();
-            if (ActivePokemonId != 0) hash ^= ActivePokemonId.GetHashCode();
-            if (LureExpiresTimestampMs != 0L) hash ^= LureExpiresTimestampMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class SpawnPoint : pb::IMessage<SpawnPoint>
-    {
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 2;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 3;
-
-        private static readonly pb::MessageParser<SpawnPoint> _parser =
-            new pb::MessageParser<SpawnPoint>(() => new SpawnPoint());
-
-        private double latitude_;
-        private double longitude_;
-
-        public SpawnPoint()
-        {
-            OnConstruction();
-        }
-
-        public SpawnPoint(SpawnPoint other) : this()
-        {
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-        }
-
-        public static pb::MessageParser<SpawnPoint> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[28]; }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public SpawnPoint Clone()
-        {
-            return new SpawnPoint(this);
-        }
-
-        public bool Equals(SpawnPoint other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(Longitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(SpawnPoint other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 17:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 25:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as SpawnPoint);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortSummary : pb::IMessage<FortSummary>
-    {
-        /// <summary>Field number for the "fort_summary_id" field.</summary>
-        public const int FortSummaryIdFieldNumber = 1;
-
-        /// <summary>Field number for the "last_modified_timestamp_ms" field.</summary>
-        public const int LastModifiedTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 4;
-
-        private static readonly pb::MessageParser<FortSummary> _parser =
-            new pb::MessageParser<FortSummary>(() => new FortSummary());
-
-        private int fortSummaryId_;
-        private int lastModifiedTimestampMs_;
-        private int latitude_;
-        private int longitude_;
-
-        public FortSummary()
-        {
-            OnConstruction();
-        }
-
-        public FortSummary(FortSummary other) : this()
-        {
-            fortSummaryId_ = other.fortSummaryId_;
-            lastModifiedTimestampMs_ = other.lastModifiedTimestampMs_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-        }
-
-        public static pb::MessageParser<FortSummary> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[29]; }
-        }
-
-        public int FortSummaryId
-        {
-            get { return fortSummaryId_; }
-            set { fortSummaryId_ = value; }
-        }
-
-        public int LastModifiedTimestampMs
-        {
-            get { return lastModifiedTimestampMs_; }
-            set { lastModifiedTimestampMs_ = value; }
-        }
-
-        public int Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public int Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortSummary Clone()
-        {
-            return new FortSummary(this);
-        }
-
-        public bool Equals(FortSummary other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (FortSummaryId != other.FortSummaryId) return false;
-            if (LastModifiedTimestampMs != other.LastModifiedTimestampMs) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (FortSummaryId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(FortSummaryId);
-            }
-            if (LastModifiedTimestampMs != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(LastModifiedTimestampMs);
-            }
-            if (Latitude != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(Latitude);
-            }
-            if (Longitude != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(Longitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (FortSummaryId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortSummaryId);
-            }
-            if (LastModifiedTimestampMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(LastModifiedTimestampMs);
-            }
-            if (Latitude != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Latitude);
-            }
-            if (Longitude != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Longitude);
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortSummary other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.FortSummaryId != 0)
-            {
-                FortSummaryId = other.FortSummaryId;
-            }
-            if (other.LastModifiedTimestampMs != 0)
-            {
-                LastModifiedTimestampMs = other.LastModifiedTimestampMs;
-            }
-            if (other.Latitude != 0)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0)
-            {
-                Longitude = other.Longitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            FortSummaryId = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            LastModifiedTimestampMs = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            Latitude = input.ReadInt32();
-                            break;
-                        }
-                    case 32:
-                        {
-                            Longitude = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortSummary);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (FortSummaryId != 0) hash ^= FortSummaryId.GetHashCode();
-            if (LastModifiedTimestampMs != 0) hash ^= LastModifiedTimestampMs.GetHashCode();
-            if (Latitude != 0) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0) hash ^= Longitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class WildPokemon : pb::IMessage<WildPokemon>
-    {
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 1;
-
-        /// <summary>Field number for the "last_modified_timestamp_ms" field.</summary>
-        public const int LastModifiedTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 4;
-
-        /// <summary>Field number for the "spawnpoint_id" field.</summary>
-        public const int SpawnpointIdFieldNumber = 5;
-
-        /// <summary>Field number for the "pokemon_data" field.</summary>
-        public const int PokemonDataFieldNumber = 7;
-
-        /// <summary>Field number for the "time_till_hidden_ms" field.</summary>
-        public const int TimeTillHiddenMsFieldNumber = 11;
-
-        private static readonly pb::MessageParser<WildPokemon> _parser =
-            new pb::MessageParser<WildPokemon>(() => new WildPokemon());
-
-        private ulong encounterId_;
-        private long lastModifiedTimestampMs_;
-        private double latitude_;
-        private double longitude_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonData_;
-        private string spawnpointId_ = "";
-        private int timeTillHiddenMs_;
-
-        public WildPokemon()
-        {
-            OnConstruction();
-        }
-
-        public WildPokemon(WildPokemon other) : this()
-        {
-            encounterId_ = other.encounterId_;
-            lastModifiedTimestampMs_ = other.lastModifiedTimestampMs_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-            spawnpointId_ = other.spawnpointId_;
-            PokemonData = other.pokemonData_ != null ? other.PokemonData.Clone() : null;
-            timeTillHiddenMs_ = other.timeTillHiddenMs_;
-        }
-
-        public static pb::MessageParser<WildPokemon> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[30]; }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        public long LastModifiedTimestampMs
-        {
-            get { return lastModifiedTimestampMs_; }
-            set { lastModifiedTimestampMs_ = value; }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        public string SpawnpointId
-        {
-            get { return spawnpointId_; }
-            set { spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonData
-        {
-            get { return pokemonData_; }
-            set { pokemonData_ = value; }
-        }
-
-        public int TimeTillHiddenMs
-        {
-            get { return timeTillHiddenMs_; }
-            set { timeTillHiddenMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public WildPokemon Clone()
-        {
-            return new WildPokemon(this);
-        }
-
-        public bool Equals(WildPokemon other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (EncounterId != other.EncounterId) return false;
-            if (LastModifiedTimestampMs != other.LastModifiedTimestampMs) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            if (SpawnpointId != other.SpawnpointId) return false;
-            if (!Equals(PokemonData, other.PokemonData)) return false;
-            if (TimeTillHiddenMs != other.TimeTillHiddenMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(EncounterId);
-            }
-            if (LastModifiedTimestampMs != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(LastModifiedTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(Longitude);
-            }
-            if (SpawnpointId.Length != 0)
-            {
-                output.WriteRawTag(42);
-                output.WriteString(SpawnpointId);
-            }
-            if (pokemonData_ != null)
-            {
-                output.WriteRawTag(58);
-                output.WriteMessage(PokemonData);
-            }
-            if (TimeTillHiddenMs != 0)
-            {
-                output.WriteRawTag(88);
-                output.WriteInt32(TimeTillHiddenMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (LastModifiedTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastModifiedTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (SpawnpointId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
-            }
-            if (pokemonData_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonData);
-            }
-            if (TimeTillHiddenMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimeTillHiddenMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(WildPokemon other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-            if (other.LastModifiedTimestampMs != 0L)
-            {
-                LastModifiedTimestampMs = other.LastModifiedTimestampMs;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-            if (other.SpawnpointId.Length != 0)
-            {
-                SpawnpointId = other.SpawnpointId;
-            }
-            if (other.pokemonData_ != null)
-            {
-                if (pokemonData_ == null)
-                {
-                    pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                }
-                PokemonData.MergeFrom(other.PokemonData);
-            }
-            if (other.TimeTillHiddenMs != 0)
-            {
-                TimeTillHiddenMs = other.TimeTillHiddenMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            LastModifiedTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 25:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 33:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                    case 42:
-                        {
-                            SpawnpointId = input.ReadString();
-                            break;
-                        }
-                    case 58:
-                        {
-                            if (pokemonData_ == null)
-                            {
-                                pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                            }
-                            input.ReadMessage(pokemonData_);
-                            break;
-                        }
-                    case 88:
-                        {
-                            TimeTillHiddenMs = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as WildPokemon);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            if (LastModifiedTimestampMs != 0L) hash ^= LastModifiedTimestampMs.GetHashCode();
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
-            if (pokemonData_ != null) hash ^= PokemonData.GetHashCode();
-            if (TimeTillHiddenMs != 0) hash ^= TimeTillHiddenMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PokemonData : pb::IMessage<PokemonData>
-    {
-        /// <summary>Field number for the "id" field.</summary>
-        public const int IdFieldNumber = 1;
-
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 2;
-
-        /// <summary>Field number for the "cp" field.</summary>
-        public const int CpFieldNumber = 3;
-
-        /// <summary>Field number for the "stamina" field.</summary>
-        public const int StaminaFieldNumber = 4;
-
-        /// <summary>Field number for the "stamina_max" field.</summary>
-        public const int StaminaMaxFieldNumber = 5;
-
-        /// <summary>Field number for the "move_1" field.</summary>
-        public const int Move1FieldNumber = 6;
-
-        /// <summary>Field number for the "move_2" field.</summary>
-        public const int Move2FieldNumber = 7;
-
-        /// <summary>Field number for the "deployed_fort_id" field.</summary>
-        public const int DeployedFortIdFieldNumber = 8;
-
-        /// <summary>Field number for the "owner_name" field.</summary>
-        public const int OwnerNameFieldNumber = 9;
-
-        /// <summary>Field number for the "is_egg" field.</summary>
-        public const int IsEggFieldNumber = 10;
-
-        /// <summary>Field number for the "egg_km_walked_target" field.</summary>
-        public const int EggKmWalkedTargetFieldNumber = 11;
-
-        /// <summary>Field number for the "egg_km_walked_start" field.</summary>
-        public const int EggKmWalkedStartFieldNumber = 12;
-
-        /// <summary>Field number for the "origin" field.</summary>
-        public const int OriginFieldNumber = 14;
-
-        /// <summary>Field number for the "height_m" field.</summary>
-        public const int HeightMFieldNumber = 15;
-
-        /// <summary>Field number for the "weight_kg" field.</summary>
-        public const int WeightKgFieldNumber = 16;
-
-        /// <summary>Field number for the "individual_attack" field.</summary>
-        public const int IndividualAttackFieldNumber = 17;
-
-        /// <summary>Field number for the "individual_defense" field.</summary>
-        public const int IndividualDefenseFieldNumber = 18;
-
-        /// <summary>Field number for the "individual_stamina" field.</summary>
-        public const int IndividualStaminaFieldNumber = 19;
-
-        /// <summary>Field number for the "cp_multiplier" field.</summary>
-        public const int CpMultiplierFieldNumber = 20;
-
-        /// <summary>Field number for the "pokeball" field.</summary>
-        public const int PokeballFieldNumber = 21;
-
-        /// <summary>Field number for the "captured_cell_id" field.</summary>
-        public const int CapturedCellIdFieldNumber = 22;
-
-        /// <summary>Field number for the "battles_attacked" field.</summary>
-        public const int BattlesAttackedFieldNumber = 23;
-
-        /// <summary>Field number for the "battles_defended" field.</summary>
-        public const int BattlesDefendedFieldNumber = 24;
-
-        /// <summary>Field number for the "egg_incubator_id" field.</summary>
-        public const int EggIncubatorIdFieldNumber = 25;
-
-        /// <summary>Field number for the "creation_time_ms" field.</summary>
-        public const int CreationTimeMsFieldNumber = 26;
-
-        /// <summary>Field number for the "num_upgrades" field.</summary>
-        public const int NumUpgradesFieldNumber = 27;
-
-        /// <summary>Field number for the "additional_cp_multiplier" field.</summary>
-        public const int AdditionalCpMultiplierFieldNumber = 28;
-
-        /// <summary>Field number for the "favorite" field.</summary>
-        public const int FavoriteFieldNumber = 29;
-
-        /// <summary>Field number for the "nickname" field.</summary>
-        public const int NicknameFieldNumber = 30;
-
-        /// <summary>Field number for the "from_fort" field.</summary>
-        public const int FromFortFieldNumber = 31;
-
-        private static readonly pb::MessageParser<PokemonData> _parser =
-            new pb::MessageParser<PokemonData>(() => new PokemonData());
-
-        private int additionalCpMultiplier_;
-        private int battlesAttacked_;
-        private int battlesDefended_;
-        private ulong capturedCellId_;
-        private int cp_;
-        private int cpMultiplier_;
-        private ulong creationTimeMs_;
-        private int deployedFortId_;
-        private int eggIncubatorId_;
-        private int eggKmWalkedStart_;
-        private int eggKmWalkedTarget_;
-        private int favorite_;
-        private int fromFort_;
-        private float heightM_;
-        private ulong id_;
-        private int individualAttack_;
-        private int individualDefense_;
-        private int individualStamina_;
-        private bool isEgg_;
-        private global::AllEnum.PokemonMove move1_ = 0;
-        private global::AllEnum.PokemonMove move2_ = 0;
-        private string nickname_ = "";
-        private int numUpgrades_;
-        private int origin_;
-        private string ownerName_ = "";
-        private int pokeball_;
-        private global::AllEnum.PokemonId pokemonId_ = 0;
-        private int stamina_;
-        private int staminaMax_;
-        private float weightKg_;
-
-        public PokemonData()
-        {
-            OnConstruction();
-        }
-
-        public PokemonData(PokemonData other) : this()
-        {
-            id_ = other.id_;
-            pokemonId_ = other.pokemonId_;
-            cp_ = other.cp_;
-            stamina_ = other.stamina_;
-            staminaMax_ = other.staminaMax_;
-            move1_ = other.move1_;
-            move2_ = other.move2_;
-            deployedFortId_ = other.deployedFortId_;
-            ownerName_ = other.ownerName_;
-            isEgg_ = other.isEgg_;
-            eggKmWalkedTarget_ = other.eggKmWalkedTarget_;
-            eggKmWalkedStart_ = other.eggKmWalkedStart_;
-            origin_ = other.origin_;
-            heightM_ = other.heightM_;
-            weightKg_ = other.weightKg_;
-            individualAttack_ = other.individualAttack_;
-            individualDefense_ = other.individualDefense_;
-            individualStamina_ = other.individualStamina_;
-            cpMultiplier_ = other.cpMultiplier_;
-            pokeball_ = other.pokeball_;
-            capturedCellId_ = other.capturedCellId_;
-            battlesAttacked_ = other.battlesAttacked_;
-            battlesDefended_ = other.battlesDefended_;
-            eggIncubatorId_ = other.eggIncubatorId_;
-            creationTimeMs_ = other.creationTimeMs_;
-            numUpgrades_ = other.numUpgrades_;
-            additionalCpMultiplier_ = other.additionalCpMultiplier_;
-            favorite_ = other.favorite_;
-            nickname_ = other.nickname_;
-            fromFort_ = other.fromFort_;
-        }
-
-        public static pb::MessageParser<PokemonData> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[31]; }
-        }
-
-        public ulong Id
-        {
-            get { return id_; }
-            set { id_ = value; }
-        }
-
-        public global::AllEnum.PokemonId PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        public int Cp
-        {
-            get { return cp_; }
-            set { cp_ = value; }
-        }
-
-        public int Stamina
-        {
-            get { return stamina_; }
-            set { stamina_ = value; }
-        }
-
-        public int StaminaMax
-        {
-            get { return staminaMax_; }
-            set { staminaMax_ = value; }
-        }
-
-        public global::AllEnum.PokemonMove Move1
-        {
-            get { return move1_; }
-            set { move1_ = value; }
-        }
-
-        public global::AllEnum.PokemonMove Move2
-        {
-            get { return move2_; }
-            set { move2_ = value; }
-        }
-
-        public int DeployedFortId
-        {
-            get { return deployedFortId_; }
-            set { deployedFortId_ = value; }
-        }
-
-        public string OwnerName
-        {
-            get { return ownerName_; }
-            set { ownerName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public bool IsEgg
-        {
-            get { return isEgg_; }
-            set { isEgg_ = value; }
-        }
-
-        public int EggKmWalkedTarget
-        {
-            get { return eggKmWalkedTarget_; }
-            set { eggKmWalkedTarget_ = value; }
-        }
-
-        public int EggKmWalkedStart
-        {
-            get { return eggKmWalkedStart_; }
-            set { eggKmWalkedStart_ = value; }
-        }
-
-        public int Origin
-        {
-            get { return origin_; }
-            set { origin_ = value; }
-        }
-
-        public float HeightM
-        {
-            get { return heightM_; }
-            set { heightM_ = value; }
-        }
-
-        public float WeightKg
-        {
-            get { return weightKg_; }
-            set { weightKg_ = value; }
-        }
-
-        public int IndividualAttack
-        {
-            get { return individualAttack_; }
-            set { individualAttack_ = value; }
-        }
-
-        public int IndividualDefense
-        {
-            get { return individualDefense_; }
-            set { individualDefense_ = value; }
-        }
-
-        public int IndividualStamina
-        {
-            get { return individualStamina_; }
-            set { individualStamina_ = value; }
-        }
-
-        public int CpMultiplier
-        {
-            get { return cpMultiplier_; }
-            set { cpMultiplier_ = value; }
-        }
-
-        public int Pokeball
-        {
-            get { return pokeball_; }
-            set { pokeball_ = value; }
-        }
-
-        public ulong CapturedCellId
-        {
-            get { return capturedCellId_; }
-            set { capturedCellId_ = value; }
-        }
-
-        public int BattlesAttacked
-        {
-            get { return battlesAttacked_; }
-            set { battlesAttacked_ = value; }
-        }
-
-        public int BattlesDefended
-        {
-            get { return battlesDefended_; }
-            set { battlesDefended_ = value; }
-        }
-
-        public int EggIncubatorId
-        {
-            get { return eggIncubatorId_; }
-            set { eggIncubatorId_ = value; }
-        }
-
-        public ulong CreationTimeMs
-        {
-            get { return creationTimeMs_; }
-            set { creationTimeMs_ = value; }
-        }
-
-        public int NumUpgrades
-        {
-            get { return numUpgrades_; }
-            set { numUpgrades_ = value; }
-        }
-
-        public int AdditionalCpMultiplier
-        {
-            get { return additionalCpMultiplier_; }
-            set { additionalCpMultiplier_ = value; }
-        }
-
-        public int Favorite
-        {
-            get { return favorite_; }
-            set { favorite_ = value; }
-        }
-
-        public string Nickname
-        {
-            get { return nickname_; }
-            set { nickname_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public int FromFort
-        {
-            get { return fromFort_; }
-            set { fromFort_ = value; }
-        }
-
-        public float GetIV()
-        {
-            return ((float)(IndividualAttack + IndividualDefense + IndividualStamina) / (45.0f));
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PokemonData Clone()
-        {
-            return new PokemonData(this);
-        }
-
-        public bool Equals(PokemonData other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Id != other.Id) return false;
-            if (PokemonId != other.PokemonId) return false;
-            if (Cp != other.Cp) return false;
-            if (Stamina != other.Stamina) return false;
-            if (StaminaMax != other.StaminaMax) return false;
-            if (Move1 != other.Move1) return false;
-            if (Move2 != other.Move2) return false;
-            if (DeployedFortId != other.DeployedFortId) return false;
-            if (OwnerName != other.OwnerName) return false;
-            if (IsEgg != other.IsEgg) return false;
-            if (EggKmWalkedTarget != other.EggKmWalkedTarget) return false;
-            if (EggKmWalkedStart != other.EggKmWalkedStart) return false;
-            if (Origin != other.Origin) return false;
-            if (HeightM != other.HeightM) return false;
-            if (WeightKg != other.WeightKg) return false;
-            if (IndividualAttack != other.IndividualAttack) return false;
-            if (IndividualDefense != other.IndividualDefense) return false;
-            if (IndividualStamina != other.IndividualStamina) return false;
-            if (CpMultiplier != other.CpMultiplier) return false;
-            if (Pokeball != other.Pokeball) return false;
-            if (CapturedCellId != other.CapturedCellId) return false;
-            if (BattlesAttacked != other.BattlesAttacked) return false;
-            if (BattlesDefended != other.BattlesDefended) return false;
-            if (EggIncubatorId != other.EggIncubatorId) return false;
-            if (CreationTimeMs != other.CreationTimeMs) return false;
-            if (NumUpgrades != other.NumUpgrades) return false;
-            if (AdditionalCpMultiplier != other.AdditionalCpMultiplier) return false;
-            if (Favorite != other.Favorite) return false;
-            if (Nickname != other.Nickname) return false;
-            if (FromFort != other.FromFort) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Id != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(Id);
-            }
-            if (PokemonId != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)PokemonId);
-            }
-            if (Cp != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(Cp);
-            }
-            if (Stamina != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(Stamina);
-            }
-            if (StaminaMax != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(StaminaMax);
-            }
-            if (Move1 != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteEnum((int)Move1);
-            }
-            if (Move2 != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteEnum((int)Move2);
-            }
-            if (DeployedFortId != 0)
-            {
-                output.WriteRawTag(64);
-                output.WriteInt32(DeployedFortId);
-            }
-            if (OwnerName.Length != 0)
-            {
-                output.WriteRawTag(74);
-                output.WriteString(OwnerName);
-            }
-            if (IsEgg != false)
-            {
-                output.WriteRawTag(80);
-                output.WriteBool(IsEgg);
-            }
-            if (EggKmWalkedTarget != 0)
-            {
-                output.WriteRawTag(88);
-                output.WriteInt32(EggKmWalkedTarget);
-            }
-            if (EggKmWalkedStart != 0)
-            {
-                output.WriteRawTag(96);
-                output.WriteInt32(EggKmWalkedStart);
-            }
-            if (Origin != 0)
-            {
-                output.WriteRawTag(112);
-                output.WriteInt32(Origin);
-            }
-            if (HeightM != 0F)
-            {
-                output.WriteRawTag(125);
-                output.WriteFloat(HeightM);
-            }
-            if (WeightKg != 0F)
-            {
-                output.WriteRawTag(133, 1);
-                output.WriteFloat(WeightKg);
-            }
-            if (IndividualAttack != 0)
-            {
-                output.WriteRawTag(136, 1);
-                output.WriteInt32(IndividualAttack);
-            }
-            if (IndividualDefense != 0)
-            {
-                output.WriteRawTag(144, 1);
-                output.WriteInt32(IndividualDefense);
-            }
-            if (IndividualStamina != 0)
-            {
-                output.WriteRawTag(152, 1);
-                output.WriteInt32(IndividualStamina);
-            }
-            if (CpMultiplier != 0)
-            {
-                output.WriteRawTag(160, 1);
-                output.WriteInt32(CpMultiplier);
-            }
-            if (Pokeball != 0)
-            {
-                output.WriteRawTag(168, 1);
-                output.WriteInt32(Pokeball);
-            }
-            if (CapturedCellId != 0UL)
-            {
-                output.WriteRawTag(176, 1);
-                output.WriteUInt64(CapturedCellId);
-            }
-            if (BattlesAttacked != 0)
-            {
-                output.WriteRawTag(184, 1);
-                output.WriteInt32(BattlesAttacked);
-            }
-            if (BattlesDefended != 0)
-            {
-                output.WriteRawTag(192, 1);
-                output.WriteInt32(BattlesDefended);
-            }
-            if (EggIncubatorId != 0)
-            {
-                output.WriteRawTag(200, 1);
-                output.WriteInt32(EggIncubatorId);
-            }
-            if (CreationTimeMs != 0UL)
-            {
-                output.WriteRawTag(208, 1);
-                output.WriteUInt64(CreationTimeMs);
-            }
-            if (NumUpgrades != 0)
-            {
-                output.WriteRawTag(216, 1);
-                output.WriteInt32(NumUpgrades);
-            }
-            if (AdditionalCpMultiplier != 0)
-            {
-                output.WriteRawTag(224, 1);
-                output.WriteInt32(AdditionalCpMultiplier);
-            }
-            if (Favorite != 0)
-            {
-                output.WriteRawTag(232, 1);
-                output.WriteInt32(Favorite);
-            }
-            if (Nickname.Length != 0)
-            {
-                output.WriteRawTag(242, 1);
-                output.WriteString(Nickname);
-            }
-            if (FromFort != 0)
-            {
-                output.WriteRawTag(248, 1);
-                output.WriteInt32(FromFort);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Id != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (PokemonId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)PokemonId);
-            }
-            if (Cp != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Cp);
-            }
-            if (Stamina != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
-            }
-            if (StaminaMax != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(StaminaMax);
-            }
-            if (Move1 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Move1);
-            }
-            if (Move2 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Move2);
-            }
-            if (DeployedFortId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeployedFortId);
-            }
-            if (OwnerName.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(OwnerName);
-            }
-            if (IsEgg != false)
-            {
-                size += 1 + 1;
-            }
-            if (EggKmWalkedTarget != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedTarget);
-            }
-            if (EggKmWalkedStart != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedStart);
-            }
-            if (Origin != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Origin);
-            }
-            if (HeightM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (WeightKg != 0F)
-            {
-                size += 2 + 4;
-            }
-            if (IndividualAttack != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualAttack);
-            }
-            if (IndividualDefense != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualDefense);
-            }
-            if (IndividualStamina != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualStamina);
-            }
-            if (CpMultiplier != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(CpMultiplier);
-            }
-            if (Pokeball != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
-            }
-            if (CapturedCellId != 0UL)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CapturedCellId);
-            }
-            if (BattlesAttacked != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesAttacked);
-            }
-            if (BattlesDefended != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesDefended);
-            }
-            if (EggIncubatorId != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(EggIncubatorId);
-            }
-            if (CreationTimeMs != 0UL)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeUInt64Size(CreationTimeMs);
-            }
-            if (NumUpgrades != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumUpgrades);
-            }
-            if (AdditionalCpMultiplier != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(AdditionalCpMultiplier);
-            }
-            if (Favorite != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(Favorite);
-            }
-            if (Nickname.Length != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeStringSize(Nickname);
-            }
-            if (FromFort != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(FromFort);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PokemonData other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Id != 0UL)
-            {
-                Id = other.Id;
-            }
-            if (other.PokemonId != 0)
-            {
-                PokemonId = other.PokemonId;
-            }
-            if (other.Cp != 0)
-            {
-                Cp = other.Cp;
-            }
-            if (other.Stamina != 0)
-            {
-                Stamina = other.Stamina;
-            }
-            if (other.StaminaMax != 0)
-            {
-                StaminaMax = other.StaminaMax;
-            }
-            if (other.Move1 != 0)
-            {
-                Move1 = other.Move1;
-            }
-            if (other.Move2 != 0)
-            {
-                Move2 = other.Move2;
-            }
-            if (other.DeployedFortId != 0)
-            {
-                DeployedFortId = other.DeployedFortId;
-            }
-            if (other.OwnerName.Length != 0)
-            {
-                OwnerName = other.OwnerName;
-            }
-            if (other.IsEgg != false)
-            {
-                IsEgg = other.IsEgg;
-            }
-            if (other.EggKmWalkedTarget != 0)
-            {
-                EggKmWalkedTarget = other.EggKmWalkedTarget;
-            }
-            if (other.EggKmWalkedStart != 0)
-            {
-                EggKmWalkedStart = other.EggKmWalkedStart;
-            }
-            if (other.Origin != 0)
-            {
-                Origin = other.Origin;
-            }
-            if (other.HeightM != 0F)
-            {
-                HeightM = other.HeightM;
-            }
-            if (other.WeightKg != 0F)
-            {
-                WeightKg = other.WeightKg;
-            }
-            if (other.IndividualAttack != 0)
-            {
-                IndividualAttack = other.IndividualAttack;
-            }
-            if (other.IndividualDefense != 0)
-            {
-                IndividualDefense = other.IndividualDefense;
-            }
-            if (other.IndividualStamina != 0)
-            {
-                IndividualStamina = other.IndividualStamina;
-            }
-            if (other.CpMultiplier != 0)
-            {
-                CpMultiplier = other.CpMultiplier;
-            }
-            if (other.Pokeball != 0)
-            {
-                Pokeball = other.Pokeball;
-            }
-            if (other.CapturedCellId != 0UL)
-            {
-                CapturedCellId = other.CapturedCellId;
-            }
-            if (other.BattlesAttacked != 0)
-            {
-                BattlesAttacked = other.BattlesAttacked;
-            }
-            if (other.BattlesDefended != 0)
-            {
-                BattlesDefended = other.BattlesDefended;
-            }
-            if (other.EggIncubatorId != 0)
-            {
-                EggIncubatorId = other.EggIncubatorId;
-            }
-            if (other.CreationTimeMs != 0UL)
-            {
-                CreationTimeMs = other.CreationTimeMs;
-            }
-            if (other.NumUpgrades != 0)
-            {
-                NumUpgrades = other.NumUpgrades;
-            }
-            if (other.AdditionalCpMultiplier != 0)
-            {
-                AdditionalCpMultiplier = other.AdditionalCpMultiplier;
-            }
-            if (other.Favorite != 0)
-            {
-                Favorite = other.Favorite;
-            }
-            if (other.Nickname.Length != 0)
-            {
-                Nickname = other.Nickname;
-            }
-            if (other.FromFort != 0)
-            {
-                FromFort = other.FromFort;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            Id = input.ReadFixed64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            pokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            Cp = input.ReadInt32();
-                            break;
-                        }
-                    case 32:
-                        {
-                            Stamina = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            StaminaMax = input.ReadInt32();
-                            break;
-                        }
-                    case 48:
-                        {
-                            move1_ = (global::AllEnum.PokemonMove)input.ReadEnum();
-                            break;
-                        }
-                    case 56:
-                        {
-                            move2_ = (global::AllEnum.PokemonMove)input.ReadEnum();
-                            break;
-                        }
-                    case 64:
-                        {
-                            DeployedFortId = input.ReadInt32();
-                            break;
-                        }
-                    case 74:
-                        {
-                            OwnerName = input.ReadString();
-                            break;
-                        }
-                    case 80:
-                        {
-                            IsEgg = input.ReadBool();
-                            break;
-                        }
-                    case 88:
-                        {
-                            EggKmWalkedTarget = input.ReadInt32();
-                            break;
-                        }
-                    case 96:
-                        {
-                            EggKmWalkedStart = input.ReadInt32();
-                            break;
-                        }
-                    case 112:
-                        {
-                            Origin = input.ReadInt32();
-                            break;
-                        }
-                    case 125:
-                        {
-                            HeightM = input.ReadFloat();
-                            break;
-                        }
-                    case 133:
-                        {
-                            WeightKg = input.ReadFloat();
-                            break;
-                        }
-                    case 136:
-                        {
-                            IndividualAttack = input.ReadInt32();
-                            break;
-                        }
-                    case 144:
-                        {
-                            IndividualDefense = input.ReadInt32();
-                            break;
-                        }
-                    case 152:
-                        {
-                            IndividualStamina = input.ReadInt32();
-                            break;
-                        }
-                    case 160:
-                        {
-                            CpMultiplier = input.ReadInt32();
-                            break;
-                        }
-                    case 168:
-                        {
-                            Pokeball = input.ReadInt32();
-                            break;
-                        }
-                    case 176:
-                        {
-                            CapturedCellId = input.ReadUInt64();
-                            break;
-                        }
-                    case 184:
-                        {
-                            BattlesAttacked = input.ReadInt32();
-                            break;
-                        }
-                    case 192:
-                        {
-                            BattlesDefended = input.ReadInt32();
-                            break;
-                        }
-                    case 200:
-                        {
-                            EggIncubatorId = input.ReadInt32();
-                            break;
-                        }
-                    case 208:
-                        {
-                            CreationTimeMs = input.ReadUInt64();
-                            break;
-                        }
-                    case 216:
-                        {
-                            NumUpgrades = input.ReadInt32();
-                            break;
-                        }
-                    case 224:
-                        {
-                            AdditionalCpMultiplier = input.ReadInt32();
-                            break;
-                        }
-                    case 232:
-                        {
-                            Favorite = input.ReadInt32();
-                            break;
-                        }
-                    case 242:
-                        {
-                            Nickname = input.ReadString();
-                            break;
-                        }
-                    case 248:
-                        {
-                            FromFort = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PokemonData);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Id != 0UL) hash ^= Id.GetHashCode();
-            if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
-            if (Cp != 0) hash ^= Cp.GetHashCode();
-            if (Stamina != 0) hash ^= Stamina.GetHashCode();
-            if (StaminaMax != 0) hash ^= StaminaMax.GetHashCode();
-            if (Move1 != 0) hash ^= Move1.GetHashCode();
-            if (Move2 != 0) hash ^= Move2.GetHashCode();
-            if (DeployedFortId != 0) hash ^= DeployedFortId.GetHashCode();
-            if (OwnerName.Length != 0) hash ^= OwnerName.GetHashCode();
-            if (IsEgg != false) hash ^= IsEgg.GetHashCode();
-            if (EggKmWalkedTarget != 0) hash ^= EggKmWalkedTarget.GetHashCode();
-            if (EggKmWalkedStart != 0) hash ^= EggKmWalkedStart.GetHashCode();
-            if (Origin != 0) hash ^= Origin.GetHashCode();
-            if (HeightM != 0F) hash ^= HeightM.GetHashCode();
-            if (WeightKg != 0F) hash ^= WeightKg.GetHashCode();
-            if (IndividualAttack != 0) hash ^= IndividualAttack.GetHashCode();
-            if (IndividualDefense != 0) hash ^= IndividualDefense.GetHashCode();
-            if (IndividualStamina != 0) hash ^= IndividualStamina.GetHashCode();
-            if (CpMultiplier != 0) hash ^= CpMultiplier.GetHashCode();
-            if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
-            if (CapturedCellId != 0UL) hash ^= CapturedCellId.GetHashCode();
-            if (BattlesAttacked != 0) hash ^= BattlesAttacked.GetHashCode();
-            if (BattlesDefended != 0) hash ^= BattlesDefended.GetHashCode();
-            if (EggIncubatorId != 0) hash ^= EggIncubatorId.GetHashCode();
-            if (CreationTimeMs != 0UL) hash ^= CreationTimeMs.GetHashCode();
-            if (NumUpgrades != 0) hash ^= NumUpgrades.GetHashCode();
-            if (AdditionalCpMultiplier != 0) hash ^= AdditionalCpMultiplier.GetHashCode();
-            if (Favorite != 0) hash ^= Favorite.GetHashCode();
-            if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
-            if (FromFort != 0) hash ^= FromFort.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class MapPokemon : pb::IMessage<MapPokemon>
-    {
-        /// <summary>Field number for the "spawnpoint_id" field.</summary>
-        public const int SpawnpointIdFieldNumber = 1;
-
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 2;
-
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 3;
-
-        /// <summary>Field number for the "expiration_timestamp_ms" field.</summary>
-        public const int ExpirationTimestampMsFieldNumber = 4;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 5;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 6;
-
-        private static readonly pb::MessageParser<MapPokemon> _parser =
-            new pb::MessageParser<MapPokemon>(() => new MapPokemon());
-
-        private ulong encounterId_;
-        private long expirationTimestampMs_;
-        private double latitude_;
-        private double longitude_;
-        private global::AllEnum.PokemonId pokemonId_ = 0;
-        private string spawnpointId_ = "";
-
-        public MapPokemon()
-        {
-            OnConstruction();
-        }
-
-        public MapPokemon(MapPokemon other) : this()
-        {
-            spawnpointId_ = other.spawnpointId_;
-            encounterId_ = other.encounterId_;
-            pokemonId_ = other.pokemonId_;
-            expirationTimestampMs_ = other.expirationTimestampMs_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-        }
-
-        public static pb::MessageParser<MapPokemon> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[32]; }
-        }
-
-        public string SpawnpointId
-        {
-            get { return spawnpointId_; }
-            set { spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        public global::AllEnum.PokemonId PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        /// <summary>
-        ///     After this timestamp, the pokemon will be gone.
-        /// </summary>
-        public long ExpirationTimestampMs
-        {
-            get { return expirationTimestampMs_; }
-            set { expirationTimestampMs_ = value; }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public MapPokemon Clone()
-        {
-            return new MapPokemon(this);
-        }
-
-        public bool Equals(MapPokemon other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (SpawnpointId != other.SpawnpointId) return false;
-            if (EncounterId != other.EncounterId) return false;
-            if (PokemonId != other.PokemonId) return false;
-            if (ExpirationTimestampMs != other.ExpirationTimestampMs) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (SpawnpointId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(SpawnpointId);
-            }
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(17);
-                output.WriteFixed64(EncounterId);
-            }
-            if (PokemonId != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteEnum((int)PokemonId);
-            }
-            if (ExpirationTimestampMs != 0L)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt64(ExpirationTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(41);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(49);
-                output.WriteDouble(Longitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (SpawnpointId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
-            }
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (PokemonId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)PokemonId);
-            }
-            if (ExpirationTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationTimestampMs);
-            }
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(MapPokemon other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.SpawnpointId.Length != 0)
-            {
-                SpawnpointId = other.SpawnpointId;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-            if (other.PokemonId != 0)
-            {
-                PokemonId = other.PokemonId;
-            }
-            if (other.ExpirationTimestampMs != 0L)
-            {
-                ExpirationTimestampMs = other.ExpirationTimestampMs;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            SpawnpointId = input.ReadString();
-                            break;
-                        }
-                    case 17:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                    case 24:
-                        {
-                            pokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 32:
-                        {
-                            ExpirationTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 41:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 49:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as MapPokemon);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
-            if (ExpirationTimestampMs != 0L) hash ^= ExpirationTimestampMs.GetHashCode();
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class NearbyPokemon : pb::IMessage<NearbyPokemon>
-    {
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-
-        /// <summary>Field number for the "distance_in_meters" field.</summary>
-        public const int DistanceInMetersFieldNumber = 2;
-
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 3;
-
-        private static readonly pb::MessageParser<NearbyPokemon> _parser =
-            new pb::MessageParser<NearbyPokemon>(() => new NearbyPokemon());
-
-        private float distanceInMeters_;
-        private ulong encounterId_;
-        private global::AllEnum.PokemonId pokemonId_ = 0;
-
-        public NearbyPokemon()
-        {
-            OnConstruction();
-        }
-
-        public NearbyPokemon(NearbyPokemon other) : this()
-        {
-            pokemonId_ = other.pokemonId_;
-            distanceInMeters_ = other.distanceInMeters_;
-            encounterId_ = other.encounterId_;
-        }
-
-        public static pb::MessageParser<NearbyPokemon> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[33]; }
-        }
-
-        public global::AllEnum.PokemonId PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        public float DistanceInMeters
-        {
-            get { return distanceInMeters_; }
-            set { distanceInMeters_ = value; }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public NearbyPokemon Clone()
-        {
-            return new NearbyPokemon(this);
-        }
-
-        public bool Equals(NearbyPokemon other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokemonId != other.PokemonId) return false;
-            if (DistanceInMeters != other.DistanceInMeters) return false;
-            if (EncounterId != other.EncounterId) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokemonId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)PokemonId);
-            }
-            if (DistanceInMeters != 0F)
-            {
-                output.WriteRawTag(21);
-                output.WriteFloat(DistanceInMeters);
-            }
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(25);
-                output.WriteFixed64(EncounterId);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokemonId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)PokemonId);
-            }
-            if (DistanceInMeters != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(NearbyPokemon other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokemonId != 0)
-            {
-                PokemonId = other.PokemonId;
-            }
-            if (other.DistanceInMeters != 0F)
-            {
-                DistanceInMeters = other.DistanceInMeters;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            pokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 21:
-                        {
-                            DistanceInMeters = input.ReadFloat();
-                            break;
-                        }
-                    case 25:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as NearbyPokemon);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
-            if (DistanceInMeters != 0F) hash ^= DistanceInMeters.GetHashCode();
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DownloadSettingsResponse : pb::IMessage<DownloadSettingsResponse>
-    {
-        /// <summary>Field number for the "error" field.</summary>
-        public const int ErrorFieldNumber = 1;
-
-        /// <summary>Field number for the "hash" field.</summary>
-        public const int HashFieldNumber = 2;
-
-        /// <summary>Field number for the "settings" field.</summary>
-        public const int SettingsFieldNumber = 3;
-
-        private static readonly pb::MessageParser<DownloadSettingsResponse> _parser =
-            new pb::MessageParser<DownloadSettingsResponse>(() => new DownloadSettingsResponse());
-
-        private string error_ = "";
-        private string hash_ = "";
-        private global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings settings_;
-
-        public DownloadSettingsResponse()
-        {
-            OnConstruction();
-        }
-
-        public DownloadSettingsResponse(DownloadSettingsResponse other) : this()
-        {
-            error_ = other.error_;
-            hash_ = other.hash_;
-            Settings = other.settings_ != null ? other.Settings.Clone() : null;
-        }
-
-        public static pb::MessageParser<DownloadSettingsResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[34]; }
-        }
-
-        public string Error
-        {
-            get { return error_; }
-            set { error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public string Hash
-        {
-            get { return hash_; }
-            set { hash_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings Settings
-        {
-            get { return settings_; }
-            set { settings_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DownloadSettingsResponse Clone()
-        {
-            return new DownloadSettingsResponse(this);
-        }
-
-        public bool Equals(DownloadSettingsResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Error != other.Error) return false;
-            if (Hash != other.Hash) return false;
-            if (!Equals(Settings, other.Settings)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Error.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(Error);
-            }
-            if (Hash.Length != 0)
-            {
-                output.WriteRawTag(18);
-                output.WriteString(Hash);
-            }
-            if (settings_ != null)
-            {
-                output.WriteRawTag(26);
-                output.WriteMessage(Settings);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Error.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Error);
-            }
-            if (Hash.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Hash);
-            }
-            if (settings_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Settings);
-            }
-            return size;
-        }
-
-        public void MergeFrom(DownloadSettingsResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Error.Length != 0)
-            {
-                Error = other.Error;
-            }
-            if (other.Hash.Length != 0)
-            {
-                Hash = other.Hash;
-            }
-            if (other.settings_ != null)
-            {
-                if (settings_ == null)
-                {
-                    settings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings();
-                }
-                Settings.MergeFrom(other.Settings);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            Error = input.ReadString();
-                            break;
-                        }
-                    case 18:
-                        {
-                            Hash = input.ReadString();
-                            break;
-                        }
-                    case 26:
-                        {
-                            if (settings_ == null)
-                            {
-                                settings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GlobalSettings();
-                            }
-                            input.ReadMessage(settings_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DownloadSettingsResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Error.Length != 0) hash ^= Error.GetHashCode();
-            if (Hash.Length != 0) hash ^= Hash.GetHashCode();
-            if (settings_ != null) hash ^= Settings.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GlobalSettings : pb::IMessage<GlobalSettings>
-    {
-        /// <summary>Field number for the "fort_settings" field.</summary>
-        public const int FortSettingsFieldNumber = 2;
-
-        /// <summary>Field number for the "map_settings" field.</summary>
-        public const int MapSettingsFieldNumber = 3;
-
-        /// <summary>Field number for the "level_settings" field.</summary>
-        public const int LevelSettingsFieldNumber = 4;
-
-        /// <summary>Field number for the "inventory_settings" field.</summary>
-        public const int InventorySettingsFieldNumber = 5;
-
-        /// <summary>Field number for the "minimum_client_version" field.</summary>
-        public const int MinimumClientVersionFieldNumber = 6;
-
-        private static readonly pb::MessageParser<GlobalSettings> _parser =
-            new pb::MessageParser<GlobalSettings>(() => new GlobalSettings());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.FortSettings fortSettings_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings inventorySettings_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings levelSettings_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.MapSettings mapSettings_;
-        private string minimumClientVersion_ = "";
-
-        public GlobalSettings()
-        {
-            OnConstruction();
-        }
-
-        public GlobalSettings(GlobalSettings other) : this()
-        {
-            FortSettings = other.fortSettings_ != null ? other.FortSettings.Clone() : null;
-            MapSettings = other.mapSettings_ != null ? other.MapSettings.Clone() : null;
-            LevelSettings = other.levelSettings_ != null ? other.LevelSettings.Clone() : null;
-            InventorySettings = other.inventorySettings_ != null ? other.InventorySettings.Clone() : null;
-            minimumClientVersion_ = other.minimumClientVersion_;
-        }
-
-        public static pb::MessageParser<GlobalSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[35]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.FortSettings FortSettings
-        {
-            get { return fortSettings_; }
-            set { fortSettings_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.MapSettings MapSettings
-        {
-            get { return mapSettings_; }
-            set { mapSettings_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings LevelSettings
-        {
-            get { return levelSettings_; }
-            set { levelSettings_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings InventorySettings
-        {
-            get { return inventorySettings_; }
-            set { inventorySettings_ = value; }
-        }
-
-        public string MinimumClientVersion
-        {
-            get { return minimumClientVersion_; }
-            set { minimumClientVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GlobalSettings Clone()
-        {
-            return new GlobalSettings(this);
-        }
-
-        public bool Equals(GlobalSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!Equals(FortSettings, other.FortSettings)) return false;
-            if (!Equals(MapSettings, other.MapSettings)) return false;
-            if (!Equals(LevelSettings, other.LevelSettings)) return false;
-            if (!Equals(InventorySettings, other.InventorySettings)) return false;
-            if (MinimumClientVersion != other.MinimumClientVersion) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (fortSettings_ != null)
-            {
-                output.WriteRawTag(18);
-                output.WriteMessage(FortSettings);
-            }
-            if (mapSettings_ != null)
-            {
-                output.WriteRawTag(26);
-                output.WriteMessage(MapSettings);
-            }
-            if (levelSettings_ != null)
-            {
-                output.WriteRawTag(34);
-                output.WriteMessage(LevelSettings);
-            }
-            if (inventorySettings_ != null)
-            {
-                output.WriteRawTag(42);
-                output.WriteMessage(InventorySettings);
-            }
-            if (MinimumClientVersion.Length != 0)
-            {
-                output.WriteRawTag(50);
-                output.WriteString(MinimumClientVersion);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (fortSettings_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(FortSettings);
-            }
-            if (mapSettings_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(MapSettings);
-            }
-            if (levelSettings_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(LevelSettings);
-            }
-            if (inventorySettings_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventorySettings);
-            }
-            if (MinimumClientVersion.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(MinimumClientVersion);
-            }
-            return size;
-        }
-
-        public void MergeFrom(GlobalSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.fortSettings_ != null)
-            {
-                if (fortSettings_ == null)
-                {
-                    fortSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSettings();
-                }
-                FortSettings.MergeFrom(other.FortSettings);
-            }
-            if (other.mapSettings_ != null)
-            {
-                if (mapSettings_ == null)
-                {
-                    mapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapSettings();
-                }
-                MapSettings.MergeFrom(other.MapSettings);
-            }
-            if (other.levelSettings_ != null)
-            {
-                if (levelSettings_ == null)
-                {
-                    levelSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings();
-                }
-                LevelSettings.MergeFrom(other.LevelSettings);
-            }
-            if (other.inventorySettings_ != null)
-            {
-                if (inventorySettings_ == null)
-                {
-                    inventorySettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings();
-                }
-                InventorySettings.MergeFrom(other.InventorySettings);
-            }
-            if (other.MinimumClientVersion.Length != 0)
-            {
-                MinimumClientVersion = other.MinimumClientVersion;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 18:
-                        {
-                            if (fortSettings_ == null)
-                            {
-                                fortSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortSettings();
-                            }
-                            input.ReadMessage(fortSettings_);
-                            break;
-                        }
-                    case 26:
-                        {
-                            if (mapSettings_ == null)
-                            {
-                                mapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MapSettings();
-                            }
-                            input.ReadMessage(mapSettings_);
-                            break;
-                        }
-                    case 34:
-                        {
-                            if (levelSettings_ == null)
-                            {
-                                levelSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.LevelSettings();
-                            }
-                            input.ReadMessage(levelSettings_);
-                            break;
-                        }
-                    case 42:
-                        {
-                            if (inventorySettings_ == null)
-                            {
-                                inventorySettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventorySettings();
-                            }
-                            input.ReadMessage(inventorySettings_);
-                            break;
-                        }
-                    case 50:
-                        {
-                            MinimumClientVersion = input.ReadString();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GlobalSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (fortSettings_ != null) hash ^= FortSettings.GetHashCode();
-            if (mapSettings_ != null) hash ^= MapSettings.GetHashCode();
-            if (levelSettings_ != null) hash ^= LevelSettings.GetHashCode();
-            if (inventorySettings_ != null) hash ^= InventorySettings.GetHashCode();
-            if (MinimumClientVersion.Length != 0) hash ^= MinimumClientVersion.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortSettings : pb::IMessage<FortSettings>
-    {
-        /// <summary>Field number for the "interaction_range_meters" field.</summary>
-        public const int InteractionRangeMetersFieldNumber = 1;
-
-        /// <summary>Field number for the "max_total_deployed_pokemon" field.</summary>
-        public const int MaxTotalDeployedPokemonFieldNumber = 2;
-
-        /// <summary>Field number for the "max_player_deployed_pokemon" field.</summary>
-        public const int MaxPlayerDeployedPokemonFieldNumber = 3;
-
-        /// <summary>Field number for the "deploy_stamina_multiplier" field.</summary>
-        public const int DeployStaminaMultiplierFieldNumber = 4;
-
-        /// <summary>Field number for the "deploy_attack_multiplier" field.</summary>
-        public const int DeployAttackMultiplierFieldNumber = 5;
-
-        /// <summary>Field number for the "far_interaction_range_meters" field.</summary>
-        public const int FarInteractionRangeMetersFieldNumber = 6;
-
-        private static readonly pb::MessageParser<FortSettings> _parser =
-            new pb::MessageParser<FortSettings>(() => new FortSettings());
-
-        private double deployAttackMultiplier_;
-        private double deployStaminaMultiplier_;
-        private double farInteractionRangeMeters_;
-        private double interactionRangeMeters_;
-        private int maxPlayerDeployedPokemon_;
-        private int maxTotalDeployedPokemon_;
-
-        public FortSettings()
-        {
-            OnConstruction();
-        }
-
-        public FortSettings(FortSettings other) : this()
-        {
-            interactionRangeMeters_ = other.interactionRangeMeters_;
-            maxTotalDeployedPokemon_ = other.maxTotalDeployedPokemon_;
-            maxPlayerDeployedPokemon_ = other.maxPlayerDeployedPokemon_;
-            deployStaminaMultiplier_ = other.deployStaminaMultiplier_;
-            deployAttackMultiplier_ = other.deployAttackMultiplier_;
-            farInteractionRangeMeters_ = other.farInteractionRangeMeters_;
-        }
-
-        public static pb::MessageParser<FortSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[36]; }
-        }
-
-        public double InteractionRangeMeters
-        {
-            get { return interactionRangeMeters_; }
-            set { interactionRangeMeters_ = value; }
-        }
-
-        public int MaxTotalDeployedPokemon
-        {
-            get { return maxTotalDeployedPokemon_; }
-            set { maxTotalDeployedPokemon_ = value; }
-        }
-
-        public int MaxPlayerDeployedPokemon
-        {
-            get { return maxPlayerDeployedPokemon_; }
-            set { maxPlayerDeployedPokemon_ = value; }
-        }
-
-        public double DeployStaminaMultiplier
-        {
-            get { return deployStaminaMultiplier_; }
-            set { deployStaminaMultiplier_ = value; }
-        }
-
-        public double DeployAttackMultiplier
-        {
-            get { return deployAttackMultiplier_; }
-            set { deployAttackMultiplier_ = value; }
-        }
-
-        public double FarInteractionRangeMeters
-        {
-            get { return farInteractionRangeMeters_; }
-            set { farInteractionRangeMeters_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortSettings Clone()
-        {
-            return new FortSettings(this);
-        }
-
-        public bool Equals(FortSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (InteractionRangeMeters != other.InteractionRangeMeters) return false;
-            if (MaxTotalDeployedPokemon != other.MaxTotalDeployedPokemon) return false;
-            if (MaxPlayerDeployedPokemon != other.MaxPlayerDeployedPokemon) return false;
-            if (DeployStaminaMultiplier != other.DeployStaminaMultiplier) return false;
-            if (DeployAttackMultiplier != other.DeployAttackMultiplier) return false;
-            if (FarInteractionRangeMeters != other.FarInteractionRangeMeters) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (InteractionRangeMeters != 0D)
-            {
-                output.WriteRawTag(9);
-                output.WriteDouble(InteractionRangeMeters);
-            }
-            if (MaxTotalDeployedPokemon != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(MaxTotalDeployedPokemon);
-            }
-            if (MaxPlayerDeployedPokemon != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(MaxPlayerDeployedPokemon);
-            }
-            if (DeployStaminaMultiplier != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(DeployStaminaMultiplier);
-            }
-            if (DeployAttackMultiplier != 0D)
-            {
-                output.WriteRawTag(41);
-                output.WriteDouble(DeployAttackMultiplier);
-            }
-            if (FarInteractionRangeMeters != 0D)
-            {
-                output.WriteRawTag(49);
-                output.WriteDouble(FarInteractionRangeMeters);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (InteractionRangeMeters != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (MaxTotalDeployedPokemon != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxTotalDeployedPokemon);
-            }
-            if (MaxPlayerDeployedPokemon != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPlayerDeployedPokemon);
-            }
-            if (DeployStaminaMultiplier != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (DeployAttackMultiplier != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (FarInteractionRangeMeters != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.InteractionRangeMeters != 0D)
-            {
-                InteractionRangeMeters = other.InteractionRangeMeters;
-            }
-            if (other.MaxTotalDeployedPokemon != 0)
-            {
-                MaxTotalDeployedPokemon = other.MaxTotalDeployedPokemon;
-            }
-            if (other.MaxPlayerDeployedPokemon != 0)
-            {
-                MaxPlayerDeployedPokemon = other.MaxPlayerDeployedPokemon;
-            }
-            if (other.DeployStaminaMultiplier != 0D)
-            {
-                DeployStaminaMultiplier = other.DeployStaminaMultiplier;
-            }
-            if (other.DeployAttackMultiplier != 0D)
-            {
-                DeployAttackMultiplier = other.DeployAttackMultiplier;
-            }
-            if (other.FarInteractionRangeMeters != 0D)
-            {
-                FarInteractionRangeMeters = other.FarInteractionRangeMeters;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            InteractionRangeMeters = input.ReadDouble();
-                            break;
-                        }
-                    case 16:
-                        {
-                            MaxTotalDeployedPokemon = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            MaxPlayerDeployedPokemon = input.ReadInt32();
-                            break;
-                        }
-                    case 33:
-                        {
-                            DeployStaminaMultiplier = input.ReadDouble();
-                            break;
-                        }
-                    case 41:
-                        {
-                            DeployAttackMultiplier = input.ReadDouble();
-                            break;
-                        }
-                    case 49:
-                        {
-                            FarInteractionRangeMeters = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (InteractionRangeMeters != 0D) hash ^= InteractionRangeMeters.GetHashCode();
-            if (MaxTotalDeployedPokemon != 0) hash ^= MaxTotalDeployedPokemon.GetHashCode();
-            if (MaxPlayerDeployedPokemon != 0) hash ^= MaxPlayerDeployedPokemon.GetHashCode();
-            if (DeployStaminaMultiplier != 0D) hash ^= DeployStaminaMultiplier.GetHashCode();
-            if (DeployAttackMultiplier != 0D) hash ^= DeployAttackMultiplier.GetHashCode();
-            if (FarInteractionRangeMeters != 0D) hash ^= FarInteractionRangeMeters.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class MapSettings : pb::IMessage<MapSettings>
-    {
-        /// <summary>Field number for the "pokemon_visible_range" field.</summary>
-        public const int PokemonVisibleRangeFieldNumber = 1;
-
-        /// <summary>Field number for the "poke_nav_range_meters" field.</summary>
-        public const int PokeNavRangeMetersFieldNumber = 2;
-
-        /// <summary>Field number for the "encounter_range_meters" field.</summary>
-        public const int EncounterRangeMetersFieldNumber = 3;
-
-        /// <summary>Field number for the "get_map_objects_min_refresh_seconds" field.</summary>
-        public const int GetMapObjectsMinRefreshSecondsFieldNumber = 4;
-
-        /// <summary>Field number for the "get_map_objects_max_refresh_seconds" field.</summary>
-        public const int GetMapObjectsMaxRefreshSecondsFieldNumber = 5;
-
-        /// <summary>Field number for the "get_map_objects_min_distance_meters" field.</summary>
-        public const int GetMapObjectsMinDistanceMetersFieldNumber = 6;
-
-        /// <summary>Field number for the "google_maps_api_key" field.</summary>
-        public const int GoogleMapsApiKeyFieldNumber = 7;
-
-        private static readonly pb::MessageParser<MapSettings> _parser =
-            new pb::MessageParser<MapSettings>(() => new MapSettings());
-
-        private double encounterRangeMeters_;
-        private float getMapObjectsMaxRefreshSeconds_;
-        private float getMapObjectsMinDistanceMeters_;
-        private float getMapObjectsMinRefreshSeconds_;
-        private string googleMapsApiKey_ = "";
-        private double pokemonVisibleRange_;
-        private double pokeNavRangeMeters_;
-
-        public MapSettings()
-        {
-            OnConstruction();
-        }
-
-        public MapSettings(MapSettings other) : this()
-        {
-            pokemonVisibleRange_ = other.pokemonVisibleRange_;
-            pokeNavRangeMeters_ = other.pokeNavRangeMeters_;
-            encounterRangeMeters_ = other.encounterRangeMeters_;
-            getMapObjectsMinRefreshSeconds_ = other.getMapObjectsMinRefreshSeconds_;
-            getMapObjectsMaxRefreshSeconds_ = other.getMapObjectsMaxRefreshSeconds_;
-            getMapObjectsMinDistanceMeters_ = other.getMapObjectsMinDistanceMeters_;
-            googleMapsApiKey_ = other.googleMapsApiKey_;
-        }
-
-        public static pb::MessageParser<MapSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[37]; }
-        }
-
-        public double PokemonVisibleRange
-        {
-            get { return pokemonVisibleRange_; }
-            set { pokemonVisibleRange_ = value; }
-        }
-
-        public double PokeNavRangeMeters
-        {
-            get { return pokeNavRangeMeters_; }
-            set { pokeNavRangeMeters_ = value; }
-        }
-
-        public double EncounterRangeMeters
-        {
-            get { return encounterRangeMeters_; }
-            set { encounterRangeMeters_ = value; }
-        }
-
-        public float GetMapObjectsMinRefreshSeconds
-        {
-            get { return getMapObjectsMinRefreshSeconds_; }
-            set { getMapObjectsMinRefreshSeconds_ = value; }
-        }
-
-        public float GetMapObjectsMaxRefreshSeconds
-        {
-            get { return getMapObjectsMaxRefreshSeconds_; }
-            set { getMapObjectsMaxRefreshSeconds_ = value; }
-        }
-
-        public float GetMapObjectsMinDistanceMeters
-        {
-            get { return getMapObjectsMinDistanceMeters_; }
-            set { getMapObjectsMinDistanceMeters_ = value; }
-        }
-
-        public string GoogleMapsApiKey
-        {
-            get { return googleMapsApiKey_; }
-            set { googleMapsApiKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public MapSettings Clone()
-        {
-            return new MapSettings(this);
-        }
-
-        public bool Equals(MapSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokemonVisibleRange != other.PokemonVisibleRange) return false;
-            if (PokeNavRangeMeters != other.PokeNavRangeMeters) return false;
-            if (EncounterRangeMeters != other.EncounterRangeMeters) return false;
-            if (GetMapObjectsMinRefreshSeconds != other.GetMapObjectsMinRefreshSeconds) return false;
-            if (GetMapObjectsMaxRefreshSeconds != other.GetMapObjectsMaxRefreshSeconds) return false;
-            if (GetMapObjectsMinDistanceMeters != other.GetMapObjectsMinDistanceMeters) return false;
-            if (GoogleMapsApiKey != other.GoogleMapsApiKey) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokemonVisibleRange != 0D)
-            {
-                output.WriteRawTag(9);
-                output.WriteDouble(PokemonVisibleRange);
-            }
-            if (PokeNavRangeMeters != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(PokeNavRangeMeters);
-            }
-            if (EncounterRangeMeters != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(EncounterRangeMeters);
-            }
-            if (GetMapObjectsMinRefreshSeconds != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(GetMapObjectsMinRefreshSeconds);
-            }
-            if (GetMapObjectsMaxRefreshSeconds != 0F)
-            {
-                output.WriteRawTag(45);
-                output.WriteFloat(GetMapObjectsMaxRefreshSeconds);
-            }
-            if (GetMapObjectsMinDistanceMeters != 0F)
-            {
-                output.WriteRawTag(53);
-                output.WriteFloat(GetMapObjectsMinDistanceMeters);
-            }
-            if (GoogleMapsApiKey.Length != 0)
-            {
-                output.WriteRawTag(58);
-                output.WriteString(GoogleMapsApiKey);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokemonVisibleRange != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (PokeNavRangeMeters != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (EncounterRangeMeters != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (GetMapObjectsMinRefreshSeconds != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (GetMapObjectsMaxRefreshSeconds != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (GetMapObjectsMinDistanceMeters != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (GoogleMapsApiKey.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(GoogleMapsApiKey);
-            }
-            return size;
-        }
-
-        public void MergeFrom(MapSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokemonVisibleRange != 0D)
-            {
-                PokemonVisibleRange = other.PokemonVisibleRange;
-            }
-            if (other.PokeNavRangeMeters != 0D)
-            {
-                PokeNavRangeMeters = other.PokeNavRangeMeters;
-            }
-            if (other.EncounterRangeMeters != 0D)
-            {
-                EncounterRangeMeters = other.EncounterRangeMeters;
-            }
-            if (other.GetMapObjectsMinRefreshSeconds != 0F)
-            {
-                GetMapObjectsMinRefreshSeconds = other.GetMapObjectsMinRefreshSeconds;
-            }
-            if (other.GetMapObjectsMaxRefreshSeconds != 0F)
-            {
-                GetMapObjectsMaxRefreshSeconds = other.GetMapObjectsMaxRefreshSeconds;
-            }
-            if (other.GetMapObjectsMinDistanceMeters != 0F)
-            {
-                GetMapObjectsMinDistanceMeters = other.GetMapObjectsMinDistanceMeters;
-            }
-            if (other.GoogleMapsApiKey.Length != 0)
-            {
-                GoogleMapsApiKey = other.GoogleMapsApiKey;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            PokemonVisibleRange = input.ReadDouble();
-                            break;
-                        }
-                    case 17:
-                        {
-                            PokeNavRangeMeters = input.ReadDouble();
-                            break;
-                        }
-                    case 25:
-                        {
-                            EncounterRangeMeters = input.ReadDouble();
-                            break;
-                        }
-                    case 37:
-                        {
-                            GetMapObjectsMinRefreshSeconds = input.ReadFloat();
-                            break;
-                        }
-                    case 45:
-                        {
-                            GetMapObjectsMaxRefreshSeconds = input.ReadFloat();
-                            break;
-                        }
-                    case 53:
-                        {
-                            GetMapObjectsMinDistanceMeters = input.ReadFloat();
-                            break;
-                        }
-                    case 58:
-                        {
-                            GoogleMapsApiKey = input.ReadString();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as MapSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokemonVisibleRange != 0D) hash ^= PokemonVisibleRange.GetHashCode();
-            if (PokeNavRangeMeters != 0D) hash ^= PokeNavRangeMeters.GetHashCode();
-            if (EncounterRangeMeters != 0D) hash ^= EncounterRangeMeters.GetHashCode();
-            if (GetMapObjectsMinRefreshSeconds != 0F) hash ^= GetMapObjectsMinRefreshSeconds.GetHashCode();
-            if (GetMapObjectsMaxRefreshSeconds != 0F) hash ^= GetMapObjectsMaxRefreshSeconds.GetHashCode();
-            if (GetMapObjectsMinDistanceMeters != 0F) hash ^= GetMapObjectsMinDistanceMeters.GetHashCode();
-            if (GoogleMapsApiKey.Length != 0) hash ^= GoogleMapsApiKey.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class LevelSettings : pb::IMessage<LevelSettings>
-    {
-        /// <summary>Field number for the "trainer_cp_modifier" field.</summary>
-        public const int TrainerCpModifierFieldNumber = 2;
-
-        /// <summary>Field number for the "trainer_difficulty_modifier" field.</summary>
-        public const int TrainerDifficultyModifierFieldNumber = 3;
-
-        private static readonly pb::MessageParser<LevelSettings> _parser =
-            new pb::MessageParser<LevelSettings>(() => new LevelSettings());
-
-        private double trainerCpModifier_;
-        private double trainerDifficultyModifier_;
-
-        public LevelSettings()
-        {
-            OnConstruction();
-        }
-
-        public LevelSettings(LevelSettings other) : this()
-        {
-            trainerCpModifier_ = other.trainerCpModifier_;
-            trainerDifficultyModifier_ = other.trainerDifficultyModifier_;
-        }
-
-        public static pb::MessageParser<LevelSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[38]; }
-        }
-
-        public double TrainerCpModifier
-        {
-            get { return trainerCpModifier_; }
-            set { trainerCpModifier_ = value; }
-        }
-
-        public double TrainerDifficultyModifier
-        {
-            get { return trainerDifficultyModifier_; }
-            set { trainerDifficultyModifier_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public LevelSettings Clone()
-        {
-            return new LevelSettings(this);
-        }
-
-        public bool Equals(LevelSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (TrainerCpModifier != other.TrainerCpModifier) return false;
-            if (TrainerDifficultyModifier != other.TrainerDifficultyModifier) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (TrainerCpModifier != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(TrainerCpModifier);
-            }
-            if (TrainerDifficultyModifier != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(TrainerDifficultyModifier);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (TrainerCpModifier != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (TrainerDifficultyModifier != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(LevelSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.TrainerCpModifier != 0D)
-            {
-                TrainerCpModifier = other.TrainerCpModifier;
-            }
-            if (other.TrainerDifficultyModifier != 0D)
-            {
-                TrainerDifficultyModifier = other.TrainerDifficultyModifier;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 17:
-                        {
-                            TrainerCpModifier = input.ReadDouble();
-                            break;
-                        }
-                    case 25:
-                        {
-                            TrainerDifficultyModifier = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as LevelSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (TrainerCpModifier != 0D) hash ^= TrainerCpModifier.GetHashCode();
-            if (TrainerDifficultyModifier != 0D) hash ^= TrainerDifficultyModifier.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventorySettings : pb::IMessage<InventorySettings>
-    {
-        /// <summary>Field number for the "max_pokemon" field.</summary>
-        public const int MaxPokemonFieldNumber = 1;
-
-        /// <summary>Field number for the "max_bag_items" field.</summary>
-        public const int MaxBagItemsFieldNumber = 2;
-
-        /// <summary>Field number for the "base_pokemon" field.</summary>
-        public const int BasePokemonFieldNumber = 3;
-
-        /// <summary>Field number for the "base_bag_items" field.</summary>
-        public const int BaseBagItemsFieldNumber = 4;
-
-        /// <summary>Field number for the "base_eggs" field.</summary>
-        public const int BaseEggsFieldNumber = 5;
-
-        private static readonly pb::MessageParser<InventorySettings> _parser =
-            new pb::MessageParser<InventorySettings>(() => new InventorySettings());
-
-        private int baseBagItems_;
-        private int baseEggs_;
-        private int basePokemon_;
-        private int maxBagItems_;
-        private int maxPokemon_;
-
-        public InventorySettings()
-        {
-            OnConstruction();
-        }
-
-        public InventorySettings(InventorySettings other) : this()
-        {
-            maxPokemon_ = other.maxPokemon_;
-            maxBagItems_ = other.maxBagItems_;
-            basePokemon_ = other.basePokemon_;
-            baseBagItems_ = other.baseBagItems_;
-            baseEggs_ = other.baseEggs_;
-        }
-
-        public static pb::MessageParser<InventorySettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[39]; }
-        }
-
-        public int MaxPokemon
-        {
-            get { return maxPokemon_; }
-            set { maxPokemon_ = value; }
-        }
-
-        public int MaxBagItems
-        {
-            get { return maxBagItems_; }
-            set { maxBagItems_ = value; }
-        }
-
-        public int BasePokemon
-        {
-            get { return basePokemon_; }
-            set { basePokemon_ = value; }
-        }
-
-        public int BaseBagItems
-        {
-            get { return baseBagItems_; }
-            set { baseBagItems_ = value; }
-        }
-
-        public int BaseEggs
-        {
-            get { return baseEggs_; }
-            set { baseEggs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventorySettings Clone()
-        {
-            return new InventorySettings(this);
-        }
-
-        public bool Equals(InventorySettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (MaxPokemon != other.MaxPokemon) return false;
-            if (MaxBagItems != other.MaxBagItems) return false;
-            if (BasePokemon != other.BasePokemon) return false;
-            if (BaseBagItems != other.BaseBagItems) return false;
-            if (BaseEggs != other.BaseEggs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (MaxPokemon != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(MaxPokemon);
-            }
-            if (MaxBagItems != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(MaxBagItems);
-            }
-            if (BasePokemon != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(BasePokemon);
-            }
-            if (BaseBagItems != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(BaseBagItems);
-            }
-            if (BaseEggs != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(BaseEggs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (MaxPokemon != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxPokemon);
-            }
-            if (MaxBagItems != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxBagItems);
-            }
-            if (BasePokemon != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BasePokemon);
-            }
-            if (BaseBagItems != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseBagItems);
-            }
-            if (BaseEggs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseEggs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(InventorySettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.MaxPokemon != 0)
-            {
-                MaxPokemon = other.MaxPokemon;
-            }
-            if (other.MaxBagItems != 0)
-            {
-                MaxBagItems = other.MaxBagItems;
-            }
-            if (other.BasePokemon != 0)
-            {
-                BasePokemon = other.BasePokemon;
-            }
-            if (other.BaseBagItems != 0)
-            {
-                BaseBagItems = other.BaseBagItems;
-            }
-            if (other.BaseEggs != 0)
-            {
-                BaseEggs = other.BaseEggs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            MaxPokemon = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            MaxBagItems = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            BasePokemon = input.ReadInt32();
-                            break;
-                        }
-                    case 32:
-                        {
-                            BaseBagItems = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            BaseEggs = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventorySettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (MaxPokemon != 0) hash ^= MaxPokemon.GetHashCode();
-            if (MaxBagItems != 0) hash ^= MaxBagItems.GetHashCode();
-            if (BasePokemon != 0) hash ^= BasePokemon.GetHashCode();
-            if (BaseBagItems != 0) hash ^= BaseBagItems.GetHashCode();
-            if (BaseEggs != 0) hash ^= BaseEggs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PlayerUpdateRequest : pb::IMessage<PlayerUpdateRequest>
-    {
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 1;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 2;
-
-        private static readonly pb::MessageParser<PlayerUpdateRequest> _parser =
-            new pb::MessageParser<PlayerUpdateRequest>(() => new PlayerUpdateRequest());
-
-        private double latitude_;
-        private double longitude_;
-
-        public PlayerUpdateRequest()
-        {
-            OnConstruction();
-        }
-
-        public PlayerUpdateRequest(PlayerUpdateRequest other) : this()
-        {
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-        }
-
-        public static pb::MessageParser<PlayerUpdateRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[40]; }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PlayerUpdateRequest Clone()
-        {
-            return new PlayerUpdateRequest(this);
-        }
-
-        public bool Equals(PlayerUpdateRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(9);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(Longitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(PlayerUpdateRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 17:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PlayerUpdateRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PlayerUpdateResponse : pb::IMessage<PlayerUpdateResponse>
-    {
-        /// <summary>Field number for the "wild_pokemons" field.</summary>
-        public const int WildPokemonsFieldNumber = 1;
-
-        /// <summary>Field number for the "forts" field.</summary>
-        public const int FortsFieldNumber = 2;
-
-        /// <summary>Field number for the "forts_nearby" field.</summary>
-        public const int FortsNearbyFieldNumber = 3;
-
-        private static readonly pb::MessageParser<PlayerUpdateResponse> _parser =
-            new pb::MessageParser<PlayerUpdateResponse>(() => new PlayerUpdateResponse());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon>
-            _repeated_wildPokemons_codec
-                = pb::FieldCodec.ForMessage(10, global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon.Parser);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortData> _repeated_forts_codec
-            = pb::FieldCodec.ForMessage(18, global::PokemonGo.RocketAPI.GeneratedCode.FortData.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> forts_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> wildPokemons_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon>();
-
-        private int fortsNearby_;
-
-        public PlayerUpdateResponse()
-        {
-            OnConstruction();
-        }
-
-        public PlayerUpdateResponse(PlayerUpdateResponse other) : this()
-        {
-            wildPokemons_ = other.wildPokemons_.Clone();
-            forts_ = other.forts_.Clone();
-            fortsNearby_ = other.fortsNearby_;
-        }
-
-        public static pb::MessageParser<PlayerUpdateResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[41]; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon> WildPokemons
-        {
-            get { return wildPokemons_; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortData> Forts
-        {
-            get { return forts_; }
-        }
-
-        public int FortsNearby
-        {
-            get { return fortsNearby_; }
-            set { fortsNearby_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PlayerUpdateResponse Clone()
-        {
-            return new PlayerUpdateResponse(this);
-        }
-
-        public bool Equals(PlayerUpdateResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!wildPokemons_.Equals(other.wildPokemons_)) return false;
-            if (!forts_.Equals(other.forts_)) return false;
-            if (FortsNearby != other.FortsNearby) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            wildPokemons_.WriteTo(output, _repeated_wildPokemons_codec);
-            forts_.WriteTo(output, _repeated_forts_codec);
-            if (FortsNearby != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(FortsNearby);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += wildPokemons_.CalculateSize(_repeated_wildPokemons_codec);
-            size += forts_.CalculateSize(_repeated_forts_codec);
-            if (FortsNearby != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(FortsNearby);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PlayerUpdateResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            wildPokemons_.Add(other.wildPokemons_);
-            forts_.Add(other.forts_);
-            if (other.FortsNearby != 0)
-            {
-                FortsNearby = other.FortsNearby;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            wildPokemons_.AddEntriesFrom(input, _repeated_wildPokemons_codec);
-                            break;
-                        }
-                    case 18:
-                        {
-                            forts_.AddEntriesFrom(input, _repeated_forts_codec);
-                            break;
-                        }
-                    case 24:
-                        {
-                            FortsNearby = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PlayerUpdateResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= wildPokemons_.GetHashCode();
-            hash ^= forts_.GetHashCode();
-            if (FortsNearby != 0) hash ^= FortsNearby.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    /// <summary>
-    ///     No message needed.
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DownloadItemTemplatesRequest : pb::IMessage<DownloadItemTemplatesRequest>
-    {
-        private static readonly pb::MessageParser<DownloadItemTemplatesRequest> _parser =
-            new pb::MessageParser<DownloadItemTemplatesRequest>(() => new DownloadItemTemplatesRequest());
-
-        public DownloadItemTemplatesRequest()
-        {
-            OnConstruction();
-        }
-
-        public DownloadItemTemplatesRequest(DownloadItemTemplatesRequest other) : this()
-        {
-        }
-
-        public static pb::MessageParser<DownloadItemTemplatesRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[42]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DownloadItemTemplatesRequest Clone()
-        {
-            return new DownloadItemTemplatesRequest(this);
-        }
-
-        public bool Equals(DownloadItemTemplatesRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            return size;
-        }
-
-        public void MergeFrom(DownloadItemTemplatesRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DownloadItemTemplatesRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DownloadItemTemplatesResponse : pb::IMessage<DownloadItemTemplatesResponse>
-    {
-        /// <summary>Field number for the "success" field.</summary>
-        public const int SuccessFieldNumber = 1;
-
-        /// <summary>Field number for the "item_templates" field.</summary>
-        public const int ItemTemplatesFieldNumber = 2;
-
-        /// <summary>Field number for the "timestamp_ms" field.</summary>
-        public const int TimestampMsFieldNumber = 3;
-
-        private static readonly pb::MessageParser<DownloadItemTemplatesResponse> _parser =
-            new pb::MessageParser<DownloadItemTemplatesResponse>(() => new DownloadItemTemplatesResponse());
-
-        private static readonly
-            pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate>
-            _repeated_itemTemplates_codec
-                = pb::FieldCodec.ForMessage(18,
-                    global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate.Parser);
-
-        private readonly
-            pbc::RepeatedField
-                <global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate>
-            itemTemplates_ =
-                new pbc::RepeatedField
-                    <global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate>();
-
-        private bool success_;
-        private ulong timestampMs_;
-
-        public DownloadItemTemplatesResponse()
-        {
-            OnConstruction();
-        }
-
-        public DownloadItemTemplatesResponse(DownloadItemTemplatesResponse other) : this()
-        {
-            success_ = other.success_;
-            itemTemplates_ = other.itemTemplates_.Clone();
-            timestampMs_ = other.timestampMs_;
-        }
-
-        public static pb::MessageParser<DownloadItemTemplatesResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[43]; }
-        }
-
-        public bool Success
-        {
-            get { return success_; }
-            set { success_ = value; }
-        }
-
-        public
-            pbc::RepeatedField
-                <global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Types.ItemTemplate>
-            ItemTemplates
-        {
-            get { return itemTemplates_; }
-        }
-
-        public ulong TimestampMs
-        {
-            get { return timestampMs_; }
-            set { timestampMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DownloadItemTemplatesResponse Clone()
-        {
-            return new DownloadItemTemplatesResponse(this);
-        }
-
-        public bool Equals(DownloadItemTemplatesResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Success != other.Success) return false;
-            if (!itemTemplates_.Equals(other.itemTemplates_)) return false;
-            if (TimestampMs != other.TimestampMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Success != false)
-            {
-                output.WriteRawTag(8);
-                output.WriteBool(Success);
-            }
-            itemTemplates_.WriteTo(output, _repeated_itemTemplates_codec);
-            if (TimestampMs != 0UL)
-            {
-                output.WriteRawTag(24);
-                output.WriteUInt64(TimestampMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Success != false)
-            {
-                size += 1 + 1;
-            }
-            size += itemTemplates_.CalculateSize(_repeated_itemTemplates_codec);
-            if (TimestampMs != 0UL)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(TimestampMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(DownloadItemTemplatesResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Success != false)
-            {
-                Success = other.Success;
-            }
-            itemTemplates_.Add(other.itemTemplates_);
-            if (other.TimestampMs != 0UL)
-            {
-                TimestampMs = other.TimestampMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Success = input.ReadBool();
-                            break;
-                        }
-                    case 18:
-                        {
-                            itemTemplates_.AddEntriesFrom(input, _repeated_itemTemplates_codec);
-                            break;
-                        }
-                    case 24:
-                        {
-                            TimestampMs = input.ReadUInt64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DownloadItemTemplatesResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Success != false) hash ^= Success.GetHashCode();
-            hash ^= itemTemplates_.GetHashCode();
-            if (TimestampMs != 0UL) hash ^= TimestampMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the DownloadItemTemplatesResponse message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class ItemTemplate : pb::IMessage<ItemTemplate>
-            {
-                /// <summary>Field number for the "template_id" field.</summary>
-                public const int TemplateIdFieldNumber = 1;
-
-                /// <summary>Field number for the "pokemon_settings" field.</summary>
-                public const int PokemonSettingsFieldNumber = 2;
-
-                /// <summary>Field number for the "item_settings" field.</summary>
-                public const int ItemSettingsFieldNumber = 3;
-
-                /// <summary>Field number for the "move_settings" field.</summary>
-                public const int MoveSettingsFieldNumber = 4;
-
-                /// <summary>Field number for the "move_sequence_settings" field.</summary>
-                public const int MoveSequenceSettingsFieldNumber = 5;
-
-                /// <summary>Field number for the "type_effective" field.</summary>
-                public const int TypeEffectiveFieldNumber = 8;
-
-                /// <summary>Field number for the "badge_settings" field.</summary>
-                public const int BadgeSettingsFieldNumber = 10;
-
-                /// <summary>Field number for the "camera" field.</summary>
-                public const int CameraFieldNumber = 11;
-
-                /// <summary>Field number for the "player_level" field.</summary>
-                public const int PlayerLevelFieldNumber = 12;
-
-                /// <summary>Field number for the "gym_level" field.</summary>
-                public const int GymLevelFieldNumber = 13;
-
-                /// <summary>Field number for the "battle_settings" field.</summary>
-                public const int BattleSettingsFieldNumber = 14;
-
-                /// <summary>Field number for the "encounter_settings" field.</summary>
-                public const int EncounterSettingsFieldNumber = 15;
-
-                /// <summary>Field number for the "iap_item_display" field.</summary>
-                public const int IapItemDisplayFieldNumber = 16;
-
-                /// <summary>Field number for the "iap_settings" field.</summary>
-                public const int IapSettingsFieldNumber = 17;
-
-                /// <summary>Field number for the "pokemon_upgrades" field.</summary>
-                public const int PokemonUpgradesFieldNumber = 18;
-
-                /// <summary>Field number for the "equipped_badges" field.</summary>
-                public const int EquippedBadgesFieldNumber = 19;
-
-                private static readonly pb::MessageParser<ItemTemplate> _parser =
-                    new pb::MessageParser<ItemTemplate>(() => new ItemTemplate());
-
-                private global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings badgeSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings battleSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings camera_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings encounterSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings equippedBadges_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings gymLevel_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay iapItemDisplay_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.IapSettings iapSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings itemSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings moveSequenceSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings moveSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings playerLevel_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings pokemonSettings_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings pokemonUpgrades_;
-                private string templateId_ = "";
-                private global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings typeEffective_;
-
-                public ItemTemplate()
-                {
-                    OnConstruction();
-                }
-
-                public ItemTemplate(ItemTemplate other) : this()
-                {
-                    templateId_ = other.templateId_;
-                    PokemonSettings = other.pokemonSettings_ != null ? other.PokemonSettings.Clone() : null;
-                    ItemSettings = other.itemSettings_ != null ? other.ItemSettings.Clone() : null;
-                    MoveSettings = other.moveSettings_ != null ? other.MoveSettings.Clone() : null;
-                    MoveSequenceSettings = other.moveSequenceSettings_ != null
-                        ? other.MoveSequenceSettings.Clone()
-                        : null;
-                    TypeEffective = other.typeEffective_ != null ? other.TypeEffective.Clone() : null;
-                    BadgeSettings = other.badgeSettings_ != null ? other.BadgeSettings.Clone() : null;
-                    Camera = other.camera_ != null ? other.Camera.Clone() : null;
-                    PlayerLevel = other.playerLevel_ != null ? other.PlayerLevel.Clone() : null;
-                    GymLevel = other.gymLevel_ != null ? other.GymLevel.Clone() : null;
-                    BattleSettings = other.battleSettings_ != null ? other.BattleSettings.Clone() : null;
-                    EncounterSettings = other.encounterSettings_ != null ? other.EncounterSettings.Clone() : null;
-                    IapItemDisplay = other.iapItemDisplay_ != null ? other.IapItemDisplay.Clone() : null;
-                    IapSettings = other.iapSettings_ != null ? other.IapSettings.Clone() : null;
-                    PokemonUpgrades = other.pokemonUpgrades_ != null ? other.PokemonUpgrades.Clone() : null;
-                    EquippedBadges = other.equippedBadges_ != null ? other.EquippedBadges.Clone() : null;
-                }
-
-                public static pb::MessageParser<ItemTemplate> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get
-                    {
-                        return
-                            global::PokemonGo.RocketAPI.GeneratedCode.DownloadItemTemplatesResponse.Descriptor
-                                .NestedTypes[0];
-                    }
-                }
-
-                public string TemplateId
-                {
-                    get { return templateId_; }
-                    set { templateId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings PokemonSettings
-                {
-                    get { return pokemonSettings_; }
-                    set { pokemonSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings ItemSettings
-                {
-                    get { return itemSettings_; }
-                    set { itemSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings MoveSettings
-                {
-                    get { return moveSettings_; }
-                    set { moveSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings MoveSequenceSettings
-                {
-                    get { return moveSequenceSettings_; }
-                    set { moveSequenceSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings TypeEffective
-                {
-                    get { return typeEffective_; }
-                    set { typeEffective_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings BadgeSettings
-                {
-                    get { return badgeSettings_; }
-                    set { badgeSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings Camera
-                {
-                    get { return camera_; }
-                    set { camera_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings PlayerLevel
-                {
-                    get { return playerLevel_; }
-                    set { playerLevel_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings GymLevel
-                {
-                    get { return gymLevel_; }
-                    set { gymLevel_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings BattleSettings
-                {
-                    get { return battleSettings_; }
-                    set { battleSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings EncounterSettings
-                {
-                    get { return encounterSettings_; }
-                    set { encounterSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay IapItemDisplay
-                {
-                    get { return iapItemDisplay_; }
-                    set { iapItemDisplay_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.IapSettings IapSettings
-                {
-                    get { return iapSettings_; }
-                    set { iapSettings_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings PokemonUpgrades
-                {
-                    get { return pokemonUpgrades_; }
-                    set { pokemonUpgrades_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings EquippedBadges
-                {
-                    get { return equippedBadges_; }
-                    set { equippedBadges_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public ItemTemplate Clone()
-                {
-                    return new ItemTemplate(this);
-                }
-
-                public bool Equals(ItemTemplate other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (TemplateId != other.TemplateId) return false;
-                    if (!Equals(PokemonSettings, other.PokemonSettings)) return false;
-                    if (!Equals(ItemSettings, other.ItemSettings)) return false;
-                    if (!Equals(MoveSettings, other.MoveSettings)) return false;
-                    if (!Equals(MoveSequenceSettings, other.MoveSequenceSettings)) return false;
-                    if (!Equals(TypeEffective, other.TypeEffective)) return false;
-                    if (!Equals(BadgeSettings, other.BadgeSettings)) return false;
-                    if (!Equals(Camera, other.Camera)) return false;
-                    if (!Equals(PlayerLevel, other.PlayerLevel)) return false;
-                    if (!Equals(GymLevel, other.GymLevel)) return false;
-                    if (!Equals(BattleSettings, other.BattleSettings)) return false;
-                    if (!Equals(EncounterSettings, other.EncounterSettings)) return false;
-                    if (!Equals(IapItemDisplay, other.IapItemDisplay)) return false;
-                    if (!Equals(IapSettings, other.IapSettings)) return false;
-                    if (!Equals(PokemonUpgrades, other.PokemonUpgrades)) return false;
-                    if (!Equals(EquippedBadges, other.EquippedBadges)) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (TemplateId.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteString(TemplateId);
-                    }
-                    if (pokemonSettings_ != null)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteMessage(PokemonSettings);
-                    }
-                    if (itemSettings_ != null)
-                    {
-                        output.WriteRawTag(26);
-                        output.WriteMessage(ItemSettings);
-                    }
-                    if (moveSettings_ != null)
-                    {
-                        output.WriteRawTag(34);
-                        output.WriteMessage(MoveSettings);
-                    }
-                    if (moveSequenceSettings_ != null)
-                    {
-                        output.WriteRawTag(42);
-                        output.WriteMessage(MoveSequenceSettings);
-                    }
-                    if (typeEffective_ != null)
-                    {
-                        output.WriteRawTag(66);
-                        output.WriteMessage(TypeEffective);
-                    }
-                    if (badgeSettings_ != null)
-                    {
-                        output.WriteRawTag(82);
-                        output.WriteMessage(BadgeSettings);
-                    }
-                    if (camera_ != null)
-                    {
-                        output.WriteRawTag(90);
-                        output.WriteMessage(Camera);
-                    }
-                    if (playerLevel_ != null)
-                    {
-                        output.WriteRawTag(98);
-                        output.WriteMessage(PlayerLevel);
-                    }
-                    if (gymLevel_ != null)
-                    {
-                        output.WriteRawTag(106);
-                        output.WriteMessage(GymLevel);
-                    }
-                    if (battleSettings_ != null)
-                    {
-                        output.WriteRawTag(114);
-                        output.WriteMessage(BattleSettings);
-                    }
-                    if (encounterSettings_ != null)
-                    {
-                        output.WriteRawTag(122);
-                        output.WriteMessage(EncounterSettings);
-                    }
-                    if (iapItemDisplay_ != null)
-                    {
-                        output.WriteRawTag(130, 1);
-                        output.WriteMessage(IapItemDisplay);
-                    }
-                    if (iapSettings_ != null)
-                    {
-                        output.WriteRawTag(138, 1);
-                        output.WriteMessage(IapSettings);
-                    }
-                    if (pokemonUpgrades_ != null)
-                    {
-                        output.WriteRawTag(146, 1);
-                        output.WriteMessage(PokemonUpgrades);
-                    }
-                    if (equippedBadges_ != null)
-                    {
-                        output.WriteRawTag(154, 1);
-                        output.WriteMessage(EquippedBadges);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (TemplateId.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeStringSize(TemplateId);
-                    }
-                    if (pokemonSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonSettings);
-                    }
-                    if (itemSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ItemSettings);
-                    }
-                    if (moveSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MoveSettings);
-                    }
-                    if (moveSequenceSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(MoveSequenceSettings);
-                    }
-                    if (typeEffective_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TypeEffective);
-                    }
-                    if (badgeSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BadgeSettings);
-                    }
-                    if (camera_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Camera);
-                    }
-                    if (playerLevel_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerLevel);
-                    }
-                    if (gymLevel_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GymLevel);
-                    }
-                    if (battleSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BattleSettings);
-                    }
-                    if (encounterSettings_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EncounterSettings);
-                    }
-                    if (iapItemDisplay_ != null)
-                    {
-                        size += 2 + pb::CodedOutputStream.ComputeMessageSize(IapItemDisplay);
-                    }
-                    if (iapSettings_ != null)
-                    {
-                        size += 2 + pb::CodedOutputStream.ComputeMessageSize(IapSettings);
-                    }
-                    if (pokemonUpgrades_ != null)
-                    {
-                        size += 2 + pb::CodedOutputStream.ComputeMessageSize(PokemonUpgrades);
-                    }
-                    if (equippedBadges_ != null)
-                    {
-                        size += 2 + pb::CodedOutputStream.ComputeMessageSize(EquippedBadges);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(ItemTemplate other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.TemplateId.Length != 0)
-                    {
-                        TemplateId = other.TemplateId;
-                    }
-                    if (other.pokemonSettings_ != null)
-                    {
-                        if (pokemonSettings_ == null)
-                        {
-                            pokemonSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings();
-                        }
-                        PokemonSettings.MergeFrom(other.PokemonSettings);
-                    }
-                    if (other.itemSettings_ != null)
-                    {
-                        if (itemSettings_ == null)
-                        {
-                            itemSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings();
-                        }
-                        ItemSettings.MergeFrom(other.ItemSettings);
-                    }
-                    if (other.moveSettings_ != null)
-                    {
-                        if (moveSettings_ == null)
-                        {
-                            moveSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings();
-                        }
-                        MoveSettings.MergeFrom(other.MoveSettings);
-                    }
-                    if (other.moveSequenceSettings_ != null)
-                    {
-                        if (moveSequenceSettings_ == null)
-                        {
-                            moveSequenceSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings();
-                        }
-                        MoveSequenceSettings.MergeFrom(other.MoveSequenceSettings);
-                    }
-                    if (other.typeEffective_ != null)
-                    {
-                        if (typeEffective_ == null)
-                        {
-                            typeEffective_ = new global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings();
-                        }
-                        TypeEffective.MergeFrom(other.TypeEffective);
-                    }
-                    if (other.badgeSettings_ != null)
-                    {
-                        if (badgeSettings_ == null)
-                        {
-                            badgeSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings();
-                        }
-                        BadgeSettings.MergeFrom(other.BadgeSettings);
-                    }
-                    if (other.camera_ != null)
-                    {
-                        if (camera_ == null)
-                        {
-                            camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings();
-                        }
-                        Camera.MergeFrom(other.Camera);
-                    }
-                    if (other.playerLevel_ != null)
-                    {
-                        if (playerLevel_ == null)
-                        {
-                            playerLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings();
-                        }
-                        PlayerLevel.MergeFrom(other.PlayerLevel);
-                    }
-                    if (other.gymLevel_ != null)
-                    {
-                        if (gymLevel_ == null)
-                        {
-                            gymLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings();
-                        }
-                        GymLevel.MergeFrom(other.GymLevel);
-                    }
-                    if (other.battleSettings_ != null)
-                    {
-                        if (battleSettings_ == null)
-                        {
-                            battleSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings();
-                        }
-                        BattleSettings.MergeFrom(other.BattleSettings);
-                    }
-                    if (other.encounterSettings_ != null)
-                    {
-                        if (encounterSettings_ == null)
-                        {
-                            encounterSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings();
-                        }
-                        EncounterSettings.MergeFrom(other.EncounterSettings);
-                    }
-                    if (other.iapItemDisplay_ != null)
-                    {
-                        if (iapItemDisplay_ == null)
-                        {
-                            iapItemDisplay_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay();
-                        }
-                        IapItemDisplay.MergeFrom(other.IapItemDisplay);
-                    }
-                    if (other.iapSettings_ != null)
-                    {
-                        if (iapSettings_ == null)
-                        {
-                            iapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapSettings();
-                        }
-                        IapSettings.MergeFrom(other.IapSettings);
-                    }
-                    if (other.pokemonUpgrades_ != null)
-                    {
-                        if (pokemonUpgrades_ == null)
-                        {
-                            pokemonUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings();
-                        }
-                        PokemonUpgrades.MergeFrom(other.PokemonUpgrades);
-                    }
-                    if (other.equippedBadges_ != null)
-                    {
-                        if (equippedBadges_ == null)
-                        {
-                            equippedBadges_ = new global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings();
-                        }
-                        EquippedBadges.MergeFrom(other.EquippedBadges);
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                                {
-                                    TemplateId = input.ReadString();
-                                    break;
-                                }
-                            case 18:
-                                {
-                                    if (pokemonSettings_ == null)
-                                    {
-                                        pokemonSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonSettings();
-                                    }
-                                    input.ReadMessage(pokemonSettings_);
-                                    break;
-                                }
-                            case 26:
-                                {
-                                    if (itemSettings_ == null)
-                                    {
-                                        itemSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.ItemSettings();
-                                    }
-                                    input.ReadMessage(itemSettings_);
-                                    break;
-                                }
-                            case 34:
-                                {
-                                    if (moveSettings_ == null)
-                                    {
-                                        moveSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.MoveSettings();
-                                    }
-                                    input.ReadMessage(moveSettings_);
-                                    break;
-                                }
-                            case 42:
-                                {
-                                    if (moveSequenceSettings_ == null)
-                                    {
-                                        moveSequenceSettings_ =
-                                            new global::PokemonGo.RocketAPI.GeneratedCode.MoveSequenceSettings();
-                                    }
-                                    input.ReadMessage(moveSequenceSettings_);
-                                    break;
-                                }
-                            case 66:
-                                {
-                                    if (typeEffective_ == null)
-                                    {
-                                        typeEffective_ =
-                                            new global::PokemonGo.RocketAPI.GeneratedCode.TypeEffectiveSettings();
-                                    }
-                                    input.ReadMessage(typeEffective_);
-                                    break;
-                                }
-                            case 82:
-                                {
-                                    if (badgeSettings_ == null)
-                                    {
-                                        badgeSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.BadgeSettings();
-                                    }
-                                    input.ReadMessage(badgeSettings_);
-                                    break;
-                                }
-                            case 90:
-                                {
-                                    if (camera_ == null)
-                                    {
-                                        camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraSettings();
-                                    }
-                                    input.ReadMessage(camera_);
-                                    break;
-                                }
-                            case 98:
-                                {
-                                    if (playerLevel_ == null)
-                                    {
-                                        playerLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.PlayerLevelSettings();
-                                    }
-                                    input.ReadMessage(playerLevel_);
-                                    break;
-                                }
-                            case 106:
-                                {
-                                    if (gymLevel_ == null)
-                                    {
-                                        gymLevel_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymLevelSettings();
-                                    }
-                                    input.ReadMessage(gymLevel_);
-                                    break;
-                                }
-                            case 114:
-                                {
-                                    if (battleSettings_ == null)
-                                    {
-                                        battleSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.GymBattleSettings();
-                                    }
-                                    input.ReadMessage(battleSettings_);
-                                    break;
-                                }
-                            case 122:
-                                {
-                                    if (encounterSettings_ == null)
-                                    {
-                                        encounterSettings_ =
-                                            new global::PokemonGo.RocketAPI.GeneratedCode.EncounterSettings();
-                                    }
-                                    input.ReadMessage(encounterSettings_);
-                                    break;
-                                }
-                            case 130:
-                                {
-                                    if (iapItemDisplay_ == null)
-                                    {
-                                        iapItemDisplay_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapItemDisplay();
-                                    }
-                                    input.ReadMessage(iapItemDisplay_);
-                                    break;
-                                }
-                            case 138:
-                                {
-                                    if (iapSettings_ == null)
-                                    {
-                                        iapSettings_ = new global::PokemonGo.RocketAPI.GeneratedCode.IapSettings();
-                                    }
-                                    input.ReadMessage(iapSettings_);
-                                    break;
-                                }
-                            case 146:
-                                {
-                                    if (pokemonUpgrades_ == null)
-                                    {
-                                        pokemonUpgrades_ =
-                                            new global::PokemonGo.RocketAPI.GeneratedCode.PokemonUpgradeSettings();
-                                    }
-                                    input.ReadMessage(pokemonUpgrades_);
-                                    break;
-                                }
-                            case 154:
-                                {
-                                    if (equippedBadges_ == null)
-                                    {
-                                        equippedBadges_ =
-                                            new global::PokemonGo.RocketAPI.GeneratedCode.EquippedBadgeSettings();
-                                    }
-                                    input.ReadMessage(equippedBadges_);
-                                    break;
-                                }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as ItemTemplate);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (TemplateId.Length != 0) hash ^= TemplateId.GetHashCode();
-                    if (pokemonSettings_ != null) hash ^= PokemonSettings.GetHashCode();
-                    if (itemSettings_ != null) hash ^= ItemSettings.GetHashCode();
-                    if (moveSettings_ != null) hash ^= MoveSettings.GetHashCode();
-                    if (moveSequenceSettings_ != null) hash ^= MoveSequenceSettings.GetHashCode();
-                    if (typeEffective_ != null) hash ^= TypeEffective.GetHashCode();
-                    if (badgeSettings_ != null) hash ^= BadgeSettings.GetHashCode();
-                    if (camera_ != null) hash ^= Camera.GetHashCode();
-                    if (playerLevel_ != null) hash ^= PlayerLevel.GetHashCode();
-                    if (gymLevel_ != null) hash ^= GymLevel.GetHashCode();
-                    if (battleSettings_ != null) hash ^= BattleSettings.GetHashCode();
-                    if (encounterSettings_ != null) hash ^= EncounterSettings.GetHashCode();
-                    if (iapItemDisplay_ != null) hash ^= IapItemDisplay.GetHashCode();
-                    if (iapSettings_ != null) hash ^= IapSettings.GetHashCode();
-                    if (pokemonUpgrades_ != null) hash ^= PokemonUpgrades.GetHashCode();
-                    if (equippedBadges_ != null) hash ^= EquippedBadges.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-        }
-
-        #endregion
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class UseItemCaptureRequest : pb::IMessage<UseItemCaptureRequest>
-    {
-        /// <summary>Field number for the "item_id" field.</summary>
-        public const int ItemIdFieldNumber = 1;
-
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 2;
-
-        /// <summary>Field number for the "spawn_point_guid" field.</summary>
-        public const int SpawnPointGuidFieldNumber = 3;
-
-        private static readonly pb::MessageParser<UseItemCaptureRequest> _parser =
-            new pb::MessageParser<UseItemCaptureRequest>(() => new UseItemCaptureRequest());
-
-        private ulong encounterId_;
-        private global::AllEnum.ItemId itemId_ = 0;
-        private string spawnPointGuid_ = "";
-
-        public UseItemCaptureRequest()
-        {
-            OnConstruction();
-        }
-
-        public UseItemCaptureRequest(UseItemCaptureRequest other) : this()
-        {
-            itemId_ = other.itemId_;
-            encounterId_ = other.encounterId_;
-            spawnPointGuid_ = other.spawnPointGuid_;
-        }
-
-        public static pb::MessageParser<UseItemCaptureRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[44]; }
-        }
-
-        public global::AllEnum.ItemId ItemId
-        {
-            get { return itemId_; }
-            set { itemId_ = value; }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        public string SpawnPointGuid
-        {
-            get { return spawnPointGuid_; }
-            set { spawnPointGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public UseItemCaptureRequest Clone()
-        {
-            return new UseItemCaptureRequest(this);
-        }
-
-        public bool Equals(UseItemCaptureRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemId != other.ItemId) return false;
-            if (EncounterId != other.EncounterId) return false;
-            if (SpawnPointGuid != other.SpawnPointGuid) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)ItemId);
-            }
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(17);
-                output.WriteFixed64(EncounterId);
-            }
-            if (SpawnPointGuid.Length != 0)
-            {
-                output.WriteRawTag(26);
-                output.WriteString(SpawnPointGuid);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
-            }
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (SpawnPointGuid.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointGuid);
-            }
-            return size;
-        }
-
-        public void MergeFrom(UseItemCaptureRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemId != 0)
-            {
-                ItemId = other.ItemId;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-            if (other.SpawnPointGuid.Length != 0)
-            {
-                SpawnPointGuid = other.SpawnPointGuid;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
-                            break;
-                        }
-                    case 17:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                    case 26:
-                        {
-                            SpawnPointGuid = input.ReadString();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as UseItemCaptureRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemId != 0) hash ^= ItemId.GetHashCode();
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            if (SpawnPointGuid.Length != 0) hash ^= SpawnPointGuid.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class UseItemRequest : pb::IMessage<UseItemRequest>
-    {
-        /// <summary>Field number for the "item_id" field.</summary>
-        public const int ItemIdFieldNumber = 1;
-
-        private static readonly pb::MessageParser<UseItemRequest> _parser =
-            new pb::MessageParser<UseItemRequest>(() => new UseItemRequest());
-
-        private global::AllEnum.ItemId itemId_ = 0;
-
-        public UseItemRequest()
-        {
-            OnConstruction();
-        }
-
-        public UseItemRequest(UseItemRequest other) : this()
-        {
-            itemId_ = other.itemId_;
-        }
-
-        public static pb::MessageParser<UseItemRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[44]; }
-        }
-
-        public global::AllEnum.ItemId ItemId
-        {
-            get { return itemId_; }
-            set { itemId_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public UseItemRequest Clone()
-        {
-            return new UseItemRequest(this);
-        }
-
-        public bool Equals(UseItemRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemId != other.ItemId) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)ItemId);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
-            }
-            return size;
-        }
-
-        public void MergeFrom(UseItemRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemId != 0)
-            {
-                ItemId = other.ItemId;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as UseItemRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemId != 0) hash ^= ItemId.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class UseItemCaptureResponse : pb::IMessage<UseItemCaptureResponse>
-    {
-        /// <summary>Field number for the "success" field.</summary>
-        public const int SuccessFieldNumber = 1;
-
-        /// <summary>Field number for the "item_capture_mult" field.</summary>
-        public const int ItemCaptureMultFieldNumber = 2;
-
-        /// <summary>Field number for the "item_flee_mult" field.</summary>
-        public const int ItemFleeMultFieldNumber = 3;
-
-        /// <summary>Field number for the "stop_movement" field.</summary>
-        public const int StopMovementFieldNumber = 4;
-
-        /// <summary>Field number for the "stop_attack" field.</summary>
-        public const int StopAttackFieldNumber = 5;
-
-        /// <summary>Field number for the "target_max" field.</summary>
-        public const int TargetMaxFieldNumber = 6;
-
-        /// <summary>Field number for the "target_slow" field.</summary>
-        public const int TargetSlowFieldNumber = 7;
-
-        private static readonly pb::MessageParser<UseItemCaptureResponse> _parser =
-            new pb::MessageParser<UseItemCaptureResponse>(() => new UseItemCaptureResponse());
-
-        private double itemCaptureMult_;
-        private double itemFleeMult_;
-        private bool stopAttack_;
-        private bool stopMovement_;
-        private bool success_;
-        private bool targetMax_;
-        private bool targetSlow_;
-
-        public UseItemCaptureResponse()
-        {
-            OnConstruction();
-        }
-
-        public UseItemCaptureResponse(UseItemCaptureResponse other) : this()
-        {
-            success_ = other.success_;
-            itemCaptureMult_ = other.itemCaptureMult_;
-            itemFleeMult_ = other.itemFleeMult_;
-            stopMovement_ = other.stopMovement_;
-            stopAttack_ = other.stopAttack_;
-            targetMax_ = other.targetMax_;
-            targetSlow_ = other.targetSlow_;
-        }
-
-        public static pb::MessageParser<UseItemCaptureResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[45]; }
-        }
-
-        public bool Success
-        {
-            get { return success_; }
-            set { success_ = value; }
-        }
-
-        public double ItemCaptureMult
-        {
-            get { return itemCaptureMult_; }
-            set { itemCaptureMult_ = value; }
-        }
-
-        public double ItemFleeMult
-        {
-            get { return itemFleeMult_; }
-            set { itemFleeMult_ = value; }
-        }
-
-        public bool StopMovement
-        {
-            get { return stopMovement_; }
-            set { stopMovement_ = value; }
-        }
-
-        public bool StopAttack
-        {
-            get { return stopAttack_; }
-            set { stopAttack_ = value; }
-        }
-
-        public bool TargetMax
-        {
-            get { return targetMax_; }
-            set { targetMax_ = value; }
-        }
-
-        public bool TargetSlow
-        {
-            get { return targetSlow_; }
-            set { targetSlow_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public UseItemCaptureResponse Clone()
-        {
-            return new UseItemCaptureResponse(this);
-        }
-
-        public bool Equals(UseItemCaptureResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Success != other.Success) return false;
-            if (ItemCaptureMult != other.ItemCaptureMult) return false;
-            if (ItemFleeMult != other.ItemFleeMult) return false;
-            if (StopMovement != other.StopMovement) return false;
-            if (StopAttack != other.StopAttack) return false;
-            if (TargetMax != other.TargetMax) return false;
-            if (TargetSlow != other.TargetSlow) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Success != false)
-            {
-                output.WriteRawTag(8);
-                output.WriteBool(Success);
-            }
-            if (ItemCaptureMult != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(ItemCaptureMult);
-            }
-            if (ItemFleeMult != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(ItemFleeMult);
-            }
-            if (StopMovement != false)
-            {
-                output.WriteRawTag(32);
-                output.WriteBool(StopMovement);
-            }
-            if (StopAttack != false)
-            {
-                output.WriteRawTag(40);
-                output.WriteBool(StopAttack);
-            }
-            if (TargetMax != false)
-            {
-                output.WriteRawTag(48);
-                output.WriteBool(TargetMax);
-            }
-            if (TargetSlow != false)
-            {
-                output.WriteRawTag(56);
-                output.WriteBool(TargetSlow);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Success != false)
-            {
-                size += 1 + 1;
-            }
-            if (ItemCaptureMult != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (ItemFleeMult != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (StopMovement != false)
-            {
-                size += 1 + 1;
-            }
-            if (StopAttack != false)
-            {
-                size += 1 + 1;
-            }
-            if (TargetMax != false)
-            {
-                size += 1 + 1;
-            }
-            if (TargetSlow != false)
-            {
-                size += 1 + 1;
-            }
-            return size;
-        }
-
-        public void MergeFrom(UseItemCaptureResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Success != false)
-            {
-                Success = other.Success;
-            }
-            if (other.ItemCaptureMult != 0D)
-            {
-                ItemCaptureMult = other.ItemCaptureMult;
-            }
-            if (other.ItemFleeMult != 0D)
-            {
-                ItemFleeMult = other.ItemFleeMult;
-            }
-            if (other.StopMovement != false)
-            {
-                StopMovement = other.StopMovement;
-            }
-            if (other.StopAttack != false)
-            {
-                StopAttack = other.StopAttack;
-            }
-            if (other.TargetMax != false)
-            {
-                TargetMax = other.TargetMax;
-            }
-            if (other.TargetSlow != false)
-            {
-                TargetSlow = other.TargetSlow;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Success = input.ReadBool();
-                            break;
-                        }
-                    case 17:
-                        {
-                            ItemCaptureMult = input.ReadDouble();
-                            break;
-                        }
-                    case 25:
-                        {
-                            ItemFleeMult = input.ReadDouble();
-                            break;
-                        }
-                    case 32:
-                        {
-                            StopMovement = input.ReadBool();
-                            break;
-                        }
-                    case 40:
-                        {
-                            StopAttack = input.ReadBool();
-                            break;
-                        }
-                    case 48:
-                        {
-                            TargetMax = input.ReadBool();
-                            break;
-                        }
-                    case 56:
-                        {
-                            TargetSlow = input.ReadBool();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as UseItemCaptureResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Success != false) hash ^= Success.GetHashCode();
-            if (ItemCaptureMult != 0D) hash ^= ItemCaptureMult.GetHashCode();
-            if (ItemFleeMult != 0D) hash ^= ItemFleeMult.GetHashCode();
-            if (StopMovement != false) hash ^= StopMovement.GetHashCode();
-            if (StopAttack != false) hash ^= StopAttack.GetHashCode();
-            if (TargetMax != false) hash ^= TargetMax.GetHashCode();
-            if (TargetSlow != false) hash ^= TargetSlow.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class ReleasePokemonRequest : pb::IMessage<ReleasePokemonRequest>
-    {
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-
-        private static readonly pb::MessageParser<ReleasePokemonRequest> _parser =
-            new pb::MessageParser<ReleasePokemonRequest>(() => new ReleasePokemonRequest());
-
-        private ulong pokemonId_;
-
-        public ReleasePokemonRequest()
-        {
-            OnConstruction();
-        }
-
-        public ReleasePokemonRequest(ReleasePokemonRequest other) : this()
-        {
-            pokemonId_ = other.pokemonId_;
-        }
-
-        public static pb::MessageParser<ReleasePokemonRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[46]; }
-        }
-
-        public ulong PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public ReleasePokemonRequest Clone()
-        {
-            return new ReleasePokemonRequest(this);
-        }
-
-        public bool Equals(ReleasePokemonRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokemonId != other.PokemonId) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokemonId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(PokemonId);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokemonId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(ReleasePokemonRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokemonId != 0UL)
-            {
-                PokemonId = other.PokemonId;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            PokemonId = input.ReadFixed64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as ReleasePokemonRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class ReleasePokemonResponse : pb::IMessage<ReleasePokemonResponse>
-    {
-        /// <summary>Field number for the "result" field.</summary>
-        public const int ResultFieldNumber = 1;
-
-        /// <summary>Field number for the "candy_awarded" field.</summary>
-        public const int CandyAwardedFieldNumber = 2;
-
-        private static readonly pb::MessageParser<ReleasePokemonResponse> _parser =
-            new pb::MessageParser<ReleasePokemonResponse>(() => new ReleasePokemonResponse());
-
-        private int candyAwarded_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result result_ = 0;
-
-        public ReleasePokemonResponse()
-        {
-            OnConstruction();
-        }
-
-        public ReleasePokemonResponse(ReleasePokemonResponse other) : this()
-        {
-            result_ = other.result_;
-            candyAwarded_ = other.candyAwarded_;
-        }
-
-        public static pb::MessageParser<ReleasePokemonResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[47]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result Result
-        {
-            get { return result_; }
-            set { result_ = value; }
-        }
-
-        public int CandyAwarded
-        {
-            get { return candyAwarded_; }
-            set { candyAwarded_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public ReleasePokemonResponse Clone()
-        {
-            return new ReleasePokemonResponse(this);
-        }
-
-        public bool Equals(ReleasePokemonResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Result != other.Result) return false;
-            if (CandyAwarded != other.CandyAwarded) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Result != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)Result);
-            }
-            if (CandyAwarded != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(CandyAwarded);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Result != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Result);
-            }
-            if (CandyAwarded != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
-            }
-            return size;
-        }
-
-        public void MergeFrom(ReleasePokemonResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Result != 0)
-            {
-                Result = other.Result;
-            }
-            if (other.CandyAwarded != 0)
-            {
-                CandyAwarded = other.CandyAwarded;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            result_ =
-                                (global::PokemonGo.RocketAPI.GeneratedCode.ReleasePokemonResponse.Types.Result)
-                                    input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            CandyAwarded = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as ReleasePokemonResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Result != 0) hash ^= Result.GetHashCode();
-            if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the ReleasePokemonResponse message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            public enum Result
-            {
-                [pbr::OriginalName("UNSET")]
-                Unset = 0,
-                [pbr::OriginalName("SUCCESS")]
-                Success = 1,
-                [pbr::OriginalName("POKEMON_DEPLOYED")]
-                PokemonDeployed = 2,
-                [pbr::OriginalName("FAILED")]
-                Failed = 3,
-                [pbr::OriginalName("ERROR_POKEMON_IS_EGG")]
-                ErrorPokemonIsEgg = 4,
-            }
-        }
-
-        #endregion
-    }
-
-    /// <summary>
-    ///     No message needed.
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GetHatchedEggsRequest : pb::IMessage<GetHatchedEggsRequest>
-    {
-        private static readonly pb::MessageParser<GetHatchedEggsRequest> _parser =
-            new pb::MessageParser<GetHatchedEggsRequest>(() => new GetHatchedEggsRequest());
-
-        public GetHatchedEggsRequest()
-        {
-            OnConstruction();
-        }
-
-        public GetHatchedEggsRequest(GetHatchedEggsRequest other) : this()
-        {
-        }
-
-        public static pb::MessageParser<GetHatchedEggsRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[48]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GetHatchedEggsRequest Clone()
-        {
-            return new GetHatchedEggsRequest(this);
-        }
-
-        public bool Equals(GetHatchedEggsRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            return size;
-        }
-
-        public void MergeFrom(GetHatchedEggsRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GetHatchedEggsRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    /// <summary>
-    ///     Confirm if this is correct, I think that it should be "repeated HatchedEgg hatched_eggs" or something like that.
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GetHatchedEggsResponse : pb::IMessage<GetHatchedEggsResponse>
-    {
-        /// <summary>Field number for the "success" field.</summary>
-        public const int SuccessFieldNumber = 1;
-
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 2;
-
-        /// <summary>Field number for the "experience_awarded" field.</summary>
-        public const int ExperienceAwardedFieldNumber = 3;
-
-        /// <summary>Field number for the "candy_awarded" field.</summary>
-        public const int CandyAwardedFieldNumber = 4;
-
-        /// <summary>Field number for the "stardust_awarded" field.</summary>
-        public const int StardustAwardedFieldNumber = 5;
-
-        private static readonly pb::MessageParser<GetHatchedEggsResponse> _parser =
-            new pb::MessageParser<GetHatchedEggsResponse>(() => new GetHatchedEggsResponse());
-
-        private static readonly pb::FieldCodec<ulong> _repeated_pokemonId_codec
-            = pb::FieldCodec.ForUInt64(18);
-
-        private static readonly pb::FieldCodec<int> _repeated_experienceAwarded_codec
-            = pb::FieldCodec.ForInt32(26);
-
-        private static readonly pb::FieldCodec<int> _repeated_candyAwarded_codec
-            = pb::FieldCodec.ForInt32(34);
-
-        private static readonly pb::FieldCodec<int> _repeated_stardustAwarded_codec
-            = pb::FieldCodec.ForInt32(42);
-
-        private readonly pbc::RepeatedField<int> candyAwarded_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> experienceAwarded_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<ulong> pokemonId_ = new pbc::RepeatedField<ulong>();
-        private readonly pbc::RepeatedField<int> stardustAwarded_ = new pbc::RepeatedField<int>();
-        private bool success_;
-
-        public GetHatchedEggsResponse()
-        {
-            OnConstruction();
-        }
-
-        public GetHatchedEggsResponse(GetHatchedEggsResponse other) : this()
-        {
-            success_ = other.success_;
-            pokemonId_ = other.pokemonId_.Clone();
-            experienceAwarded_ = other.experienceAwarded_.Clone();
-            candyAwarded_ = other.candyAwarded_.Clone();
-            stardustAwarded_ = other.stardustAwarded_.Clone();
-        }
-
-        public static pb::MessageParser<GetHatchedEggsResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[49]; }
-        }
-
-        public bool Success
-        {
-            get { return success_; }
-            set { success_ = value; }
-        }
-
-        /// <summary>
-        ///     Might be POGOProtos.Enums.Pokemon
-        /// </summary>
-        public pbc::RepeatedField<ulong> PokemonId
-        {
-            get { return pokemonId_; }
-        }
-
-        public pbc::RepeatedField<int> ExperienceAwarded
-        {
-            get { return experienceAwarded_; }
-        }
-
-        public pbc::RepeatedField<int> CandyAwarded
-        {
-            get { return candyAwarded_; }
-        }
-
-        public pbc::RepeatedField<int> StardustAwarded
-        {
-            get { return stardustAwarded_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GetHatchedEggsResponse Clone()
-        {
-            return new GetHatchedEggsResponse(this);
-        }
-
-        public bool Equals(GetHatchedEggsResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Success != other.Success) return false;
-            if (!pokemonId_.Equals(other.pokemonId_)) return false;
-            if (!experienceAwarded_.Equals(other.experienceAwarded_)) return false;
-            if (!candyAwarded_.Equals(other.candyAwarded_)) return false;
-            if (!stardustAwarded_.Equals(other.stardustAwarded_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Success != false)
-            {
-                output.WriteRawTag(8);
-                output.WriteBool(Success);
-            }
-            pokemonId_.WriteTo(output, _repeated_pokemonId_codec);
-            experienceAwarded_.WriteTo(output, _repeated_experienceAwarded_codec);
-            candyAwarded_.WriteTo(output, _repeated_candyAwarded_codec);
-            stardustAwarded_.WriteTo(output, _repeated_stardustAwarded_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Success != false)
-            {
-                size += 1 + 1;
-            }
-            size += pokemonId_.CalculateSize(_repeated_pokemonId_codec);
-            size += experienceAwarded_.CalculateSize(_repeated_experienceAwarded_codec);
-            size += candyAwarded_.CalculateSize(_repeated_candyAwarded_codec);
-            size += stardustAwarded_.CalculateSize(_repeated_stardustAwarded_codec);
-            return size;
-        }
-
-        public void MergeFrom(GetHatchedEggsResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Success != false)
-            {
-                Success = other.Success;
-            }
-            pokemonId_.Add(other.pokemonId_);
-            experienceAwarded_.Add(other.experienceAwarded_);
-            candyAwarded_.Add(other.candyAwarded_);
-            stardustAwarded_.Add(other.stardustAwarded_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Success = input.ReadBool();
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            pokemonId_.AddEntriesFrom(input, _repeated_pokemonId_codec);
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            experienceAwarded_.AddEntriesFrom(input, _repeated_experienceAwarded_codec);
-                            break;
-                        }
-                    case 34:
-                    case 32:
-                        {
-                            candyAwarded_.AddEntriesFrom(input, _repeated_candyAwarded_codec);
-                            break;
-                        }
-                    case 42:
-                    case 40:
-                        {
-                            stardustAwarded_.AddEntriesFrom(input, _repeated_stardustAwarded_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GetHatchedEggsResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Success != false) hash ^= Success.GetHashCode();
-            hash ^= pokemonId_.GetHashCode();
-            hash ^= experienceAwarded_.GetHashCode();
-            hash ^= candyAwarded_.GetHashCode();
-            hash ^= stardustAwarded_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortSearchRequest : pb::IMessage<FortSearchRequest>
-    {
-        /// <summary>Field number for the "fort_id" field.</summary>
-        public const int FortIdFieldNumber = 1;
-
-        /// <summary>Field number for the "player_latitude" field.</summary>
-        public const int PlayerLatitudeFieldNumber = 2;
-
-        /// <summary>Field number for the "player_longitude" field.</summary>
-        public const int PlayerLongitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "fort_latitude" field.</summary>
-        public const int FortLatitudeFieldNumber = 4;
-
-        /// <summary>Field number for the "fort_longitude" field.</summary>
-        public const int FortLongitudeFieldNumber = 5;
-
-        private static readonly pb::MessageParser<FortSearchRequest> _parser =
-            new pb::MessageParser<FortSearchRequest>(() => new FortSearchRequest());
-
-        private string fortId_ = "";
-        private double fortLatitude_;
-        private double fortLongitude_;
-        private double playerLatitude_;
-        private double playerLongitude_;
-
-        public FortSearchRequest()
-        {
-            OnConstruction();
-        }
-
-        public FortSearchRequest(FortSearchRequest other) : this()
-        {
-            fortId_ = other.fortId_;
-            playerLatitude_ = other.playerLatitude_;
-            playerLongitude_ = other.playerLongitude_;
-            fortLatitude_ = other.fortLatitude_;
-            fortLongitude_ = other.fortLongitude_;
-        }
-
-        public static pb::MessageParser<FortSearchRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[50]; }
-        }
-
-        public string FortId
-        {
-            get { return fortId_; }
-            set { fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public double PlayerLatitude
-        {
-            get { return playerLatitude_; }
-            set { playerLatitude_ = value; }
-        }
-
-        public double PlayerLongitude
-        {
-            get { return playerLongitude_; }
-            set { playerLongitude_ = value; }
-        }
-
-        public double FortLatitude
-        {
-            get { return fortLatitude_; }
-            set { fortLatitude_ = value; }
-        }
-
-        public double FortLongitude
-        {
-            get { return fortLongitude_; }
-            set { fortLongitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortSearchRequest Clone()
-        {
-            return new FortSearchRequest(this);
-        }
-
-        public bool Equals(FortSearchRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (FortId != other.FortId) return false;
-            if (PlayerLatitude != other.PlayerLatitude) return false;
-            if (PlayerLongitude != other.PlayerLongitude) return false;
-            if (FortLatitude != other.FortLatitude) return false;
-            if (FortLongitude != other.FortLongitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (FortId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(FortId);
-            }
-            if (PlayerLatitude != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(PlayerLatitude);
-            }
-            if (PlayerLongitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(PlayerLongitude);
-            }
-            if (FortLatitude != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(FortLatitude);
-            }
-            if (FortLongitude != 0D)
-            {
-                output.WriteRawTag(41);
-                output.WriteDouble(FortLongitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (FortId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
-            }
-            if (PlayerLatitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (PlayerLongitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (FortLatitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (FortLongitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortSearchRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.FortId.Length != 0)
-            {
-                FortId = other.FortId;
-            }
-            if (other.PlayerLatitude != 0D)
-            {
-                PlayerLatitude = other.PlayerLatitude;
-            }
-            if (other.PlayerLongitude != 0D)
-            {
-                PlayerLongitude = other.PlayerLongitude;
-            }
-            if (other.FortLatitude != 0D)
-            {
-                FortLatitude = other.FortLatitude;
-            }
-            if (other.FortLongitude != 0D)
-            {
-                FortLongitude = other.FortLongitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            FortId = input.ReadString();
-                            break;
-                        }
-                    case 17:
-                        {
-                            PlayerLatitude = input.ReadDouble();
-                            break;
-                        }
-                    case 25:
-                        {
-                            PlayerLongitude = input.ReadDouble();
-                            break;
-                        }
-                    case 33:
-                        {
-                            FortLatitude = input.ReadDouble();
-                            break;
-                        }
-                    case 41:
-                        {
-                            FortLongitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortSearchRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (FortId.Length != 0) hash ^= FortId.GetHashCode();
-            if (PlayerLatitude != 0D) hash ^= PlayerLatitude.GetHashCode();
-            if (PlayerLongitude != 0D) hash ^= PlayerLongitude.GetHashCode();
-            if (FortLatitude != 0D) hash ^= FortLatitude.GetHashCode();
-            if (FortLongitude != 0D) hash ^= FortLongitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortSearchResponse : pb::IMessage<FortSearchResponse>
-    {
-        /// <summary>Field number for the "result" field.</summary>
-        public const int ResultFieldNumber = 1;
-
-        /// <summary>Field number for the "items_awarded" field.</summary>
-        public const int ItemsAwardedFieldNumber = 2;
-
-        /// <summary>Field number for the "gems_awarded" field.</summary>
-        public const int GemsAwardedFieldNumber = 3;
-
-        /// <summary>Field number for the "pokemon_data_egg" field.</summary>
-        public const int PokemonDataEggFieldNumber = 4;
-
-        /// <summary>Field number for the "experience_awarded" field.</summary>
-        public const int ExperienceAwardedFieldNumber = 5;
-
-        /// <summary>Field number for the "cooldown_complete_timestamp_ms" field.</summary>
-        public const int CooldownCompleteTimestampMsFieldNumber = 6;
-
-        /// <summary>Field number for the "chain_hack_sequence_number" field.</summary>
-        public const int ChainHackSequenceNumberFieldNumber = 7;
-
-        private static readonly pb::MessageParser<FortSearchResponse> _parser =
-            new pb::MessageParser<FortSearchResponse>(() => new FortSearchResponse());
-
-        private static readonly
-            pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward>
-            _repeated_itemsAwarded_codec
-                = pb::FieldCodec.ForMessage(18,
-                    global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward.Parser);
-
-        private readonly
-            pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward>
-            itemsAwarded_ =
-                new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward>();
-
-        private int chainHackSequenceNumber_;
-        private long cooldownCompleteTimestampMs_;
-        private int experienceAwarded_;
-        private int gemsAwarded_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonDataEgg_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result result_ = 0;
-
-        public FortSearchResponse()
-        {
-            OnConstruction();
-        }
-
-        public FortSearchResponse(FortSearchResponse other) : this()
-        {
-            result_ = other.result_;
-            itemsAwarded_ = other.itemsAwarded_.Clone();
-            gemsAwarded_ = other.gemsAwarded_;
-            PokemonDataEgg = other.pokemonDataEgg_ != null ? other.PokemonDataEgg.Clone() : null;
-            experienceAwarded_ = other.experienceAwarded_;
-            cooldownCompleteTimestampMs_ = other.cooldownCompleteTimestampMs_;
-            chainHackSequenceNumber_ = other.chainHackSequenceNumber_;
-        }
-
-        public static pb::MessageParser<FortSearchResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[51]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result Result
-        {
-            get { return result_; }
-            set { result_ = value; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.ItemAward>
-            ItemsAwarded
-        {
-            get { return itemsAwarded_; }
-        }
-
-        public int GemsAwarded
-        {
-            get { return gemsAwarded_; }
-            set { gemsAwarded_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonDataEgg
-        {
-            get { return pokemonDataEgg_; }
-            set { pokemonDataEgg_ = value; }
-        }
-
-        public int ExperienceAwarded
-        {
-            get { return experienceAwarded_; }
-            set { experienceAwarded_ = value; }
-        }
-
-        public long CooldownCompleteTimestampMs
-        {
-            get { return cooldownCompleteTimestampMs_; }
-            set { cooldownCompleteTimestampMs_ = value; }
-        }
-
-        public int ChainHackSequenceNumber
-        {
-            get { return chainHackSequenceNumber_; }
-            set { chainHackSequenceNumber_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortSearchResponse Clone()
-        {
-            return new FortSearchResponse(this);
-        }
-
-        public bool Equals(FortSearchResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Result != other.Result) return false;
-            if (!itemsAwarded_.Equals(other.itemsAwarded_)) return false;
-            if (GemsAwarded != other.GemsAwarded) return false;
-            if (!Equals(PokemonDataEgg, other.PokemonDataEgg)) return false;
-            if (ExperienceAwarded != other.ExperienceAwarded) return false;
-            if (CooldownCompleteTimestampMs != other.CooldownCompleteTimestampMs) return false;
-            if (ChainHackSequenceNumber != other.ChainHackSequenceNumber) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Result != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)Result);
-            }
-            itemsAwarded_.WriteTo(output, _repeated_itemsAwarded_codec);
-            if (GemsAwarded != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(GemsAwarded);
-            }
-            if (pokemonDataEgg_ != null)
-            {
-                output.WriteRawTag(34);
-                output.WriteMessage(PokemonDataEgg);
-            }
-            if (ExperienceAwarded != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(ExperienceAwarded);
-            }
-            if (CooldownCompleteTimestampMs != 0L)
-            {
-                output.WriteRawTag(48);
-                output.WriteInt64(CooldownCompleteTimestampMs);
-            }
-            if (ChainHackSequenceNumber != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteInt32(ChainHackSequenceNumber);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Result != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Result);
-            }
-            size += itemsAwarded_.CalculateSize(_repeated_itemsAwarded_codec);
-            if (GemsAwarded != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(GemsAwarded);
-            }
-            if (pokemonDataEgg_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonDataEgg);
-            }
-            if (ExperienceAwarded != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExperienceAwarded);
-            }
-            if (CooldownCompleteTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(CooldownCompleteTimestampMs);
-            }
-            if (ChainHackSequenceNumber != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ChainHackSequenceNumber);
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortSearchResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Result != 0)
-            {
-                Result = other.Result;
-            }
-            itemsAwarded_.Add(other.itemsAwarded_);
-            if (other.GemsAwarded != 0)
-            {
-                GemsAwarded = other.GemsAwarded;
-            }
-            if (other.pokemonDataEgg_ != null)
-            {
-                if (pokemonDataEgg_ == null)
-                {
-                    pokemonDataEgg_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                }
-                PokemonDataEgg.MergeFrom(other.PokemonDataEgg);
-            }
-            if (other.ExperienceAwarded != 0)
-            {
-                ExperienceAwarded = other.ExperienceAwarded;
-            }
-            if (other.CooldownCompleteTimestampMs != 0L)
-            {
-                CooldownCompleteTimestampMs = other.CooldownCompleteTimestampMs;
-            }
-            if (other.ChainHackSequenceNumber != 0)
-            {
-                ChainHackSequenceNumber = other.ChainHackSequenceNumber;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            result_ =
-                                (global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Types.Result)input.ReadEnum();
-                            break;
-                        }
-                    case 18:
-                        {
-                            itemsAwarded_.AddEntriesFrom(input, _repeated_itemsAwarded_codec);
-                            break;
-                        }
-                    case 24:
-                        {
-                            GemsAwarded = input.ReadInt32();
-                            break;
-                        }
-                    case 34:
-                        {
-                            if (pokemonDataEgg_ == null)
-                            {
-                                pokemonDataEgg_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                            }
-                            input.ReadMessage(pokemonDataEgg_);
-                            break;
-                        }
-                    case 40:
-                        {
-                            ExperienceAwarded = input.ReadInt32();
-                            break;
-                        }
-                    case 48:
-                        {
-                            CooldownCompleteTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 56:
-                        {
-                            ChainHackSequenceNumber = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortSearchResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Result != 0) hash ^= Result.GetHashCode();
-            hash ^= itemsAwarded_.GetHashCode();
-            if (GemsAwarded != 0) hash ^= GemsAwarded.GetHashCode();
-            if (pokemonDataEgg_ != null) hash ^= PokemonDataEgg.GetHashCode();
-            if (ExperienceAwarded != 0) hash ^= ExperienceAwarded.GetHashCode();
-            if (CooldownCompleteTimestampMs != 0L) hash ^= CooldownCompleteTimestampMs.GetHashCode();
-            if (ChainHackSequenceNumber != 0) hash ^= ChainHackSequenceNumber.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the FortSearchResponse message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            public enum Result
-            {
-                [pbr::OriginalName("NO_RESULT_SET")]
-                NoResultSet = 0,
-                [pbr::OriginalName("SUCCESS")]
-                Success = 1,
-                [pbr::OriginalName("OUT_OF_RANGE")]
-                OutOfRange = 2,
-                [pbr::OriginalName("IN_COOLDOWN_PERIOD")]
-                InCooldownPeriod = 3,
-                [pbr::OriginalName("INVENTORY_FULL")]
-                InventoryFull = 4,
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class ItemAward : pb::IMessage<ItemAward>
-            {
-                /// <summary>Field number for the "item_id" field.</summary>
-                public const int ItemIdFieldNumber = 1;
-
-                /// <summary>Field number for the "item_count" field.</summary>
-                public const int ItemCountFieldNumber = 2;
-
-                private static readonly pb::MessageParser<ItemAward> _parser =
-                    new pb::MessageParser<ItemAward>(() => new ItemAward());
-
-                private int itemCount_;
-                private global::AllEnum.ItemId itemId_ = 0;
-
-                public ItemAward()
-                {
-                    OnConstruction();
-                }
-
-                public ItemAward(ItemAward other) : this()
-                {
-                    itemId_ = other.itemId_;
-                    itemCount_ = other.itemCount_;
-                }
-
-                public static pb::MessageParser<ItemAward> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get
-                    {
-                        return global::PokemonGo.RocketAPI.GeneratedCode.FortSearchResponse.Descriptor.NestedTypes[0];
-                    }
-                }
-
-                public global::AllEnum.ItemId ItemId
-                {
-                    get { return itemId_; }
-                    set { itemId_ = value; }
-                }
-
-                public int ItemCount
-                {
-                    get { return itemCount_; }
-                    set { itemCount_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public ItemAward Clone()
-                {
-                    return new ItemAward(this);
-                }
-
-                public bool Equals(ItemAward other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (ItemId != other.ItemId) return false;
-                    if (ItemCount != other.ItemCount) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (ItemId != 0)
-                    {
-                        output.WriteRawTag(8);
-                        output.WriteEnum((int)ItemId);
-                    }
-                    if (ItemCount != 0)
-                    {
-                        output.WriteRawTag(16);
-                        output.WriteInt32(ItemCount);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (ItemId != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
-                    }
-                    if (ItemCount != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemCount);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(ItemAward other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.ItemId != 0)
-                    {
-                        ItemId = other.ItemId;
-                    }
-                    if (other.ItemCount != 0)
-                    {
-                        ItemCount = other.ItemCount;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 8:
-                                {
-                                    itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
-                                    break;
-                                }
-                            case 16:
-                                {
-                                    ItemCount = input.ReadInt32();
-                                    break;
-                                }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as ItemAward);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (ItemId != 0) hash ^= ItemId.GetHashCode();
-                    if (ItemCount != 0) hash ^= ItemCount.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-        }
-
-        #endregion
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortDetailsRequest : pb::IMessage<FortDetailsRequest>
-    {
-        /// <summary>Field number for the "fort_id" field.</summary>
-        public const int FortIdFieldNumber = 1;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 2;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 3;
-
-        private static readonly pb::MessageParser<FortDetailsRequest> _parser =
-            new pb::MessageParser<FortDetailsRequest>(() => new FortDetailsRequest());
-
-        private string fortId_ = "";
-        private double latitude_;
-        private double longitude_;
-
-        public FortDetailsRequest()
-        {
-            OnConstruction();
-        }
-
-        public FortDetailsRequest(FortDetailsRequest other) : this()
-        {
-            fortId_ = other.fortId_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-        }
-
-        public static pb::MessageParser<FortDetailsRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[52]; }
-        }
-
-        public string FortId
-        {
-            get { return fortId_; }
-            set { fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortDetailsRequest Clone()
-        {
-            return new FortDetailsRequest(this);
-        }
-
-        public bool Equals(FortDetailsRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (FortId != other.FortId) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (FortId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(FortId);
-            }
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(Longitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (FortId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
-            }
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortDetailsRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.FortId.Length != 0)
-            {
-                FortId = other.FortId;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            FortId = input.ReadString();
-                            break;
-                        }
-                    case 17:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 25:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortDetailsRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (FortId.Length != 0) hash ^= FortId.GetHashCode();
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortDetailsResponse : pb::IMessage<FortDetailsResponse>
-    {
-        /// <summary>Field number for the "fort_id" field.</summary>
-        public const int FortIdFieldNumber = 1;
-
-        /// <summary>Field number for the "team_color" field.</summary>
-        public const int TeamColorFieldNumber = 2;
-
-        /// <summary>Field number for the "pokemon_data" field.</summary>
-        public const int PokemonDataFieldNumber = 3;
-
-        /// <summary>Field number for the "name" field.</summary>
-        public const int NameFieldNumber = 4;
-
-        /// <summary>Field number for the "image_urls" field.</summary>
-        public const int ImageUrlsFieldNumber = 5;
-
-        /// <summary>Field number for the "fp" field.</summary>
-        public const int FpFieldNumber = 6;
-
-        /// <summary>Field number for the "stamina" field.</summary>
-        public const int StaminaFieldNumber = 7;
-
-        /// <summary>Field number for the "max_stamina" field.</summary>
-        public const int MaxStaminaFieldNumber = 8;
-
-        /// <summary>Field number for the "type" field.</summary>
-        public const int TypeFieldNumber = 9;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 10;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 11;
-
-        /// <summary>Field number for the "description" field.</summary>
-        public const int DescriptionFieldNumber = 12;
-
-        /// <summary>Field number for the "modifiers" field.</summary>
-        public const int ModifiersFieldNumber = 13;
-
-        private static readonly pb::MessageParser<FortDetailsResponse> _parser =
-            new pb::MessageParser<FortDetailsResponse>(() => new FortDetailsResponse());
-
-        private static readonly pb::FieldCodec<string> _repeated_imageUrls_codec
-            = pb::FieldCodec.ForString(42);
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier>
-            _repeated_modifiers_codec
-                = pb::FieldCodec.ForMessage(106, global::PokemonGo.RocketAPI.GeneratedCode.FortModifier.Parser);
-
-        private readonly pbc::RepeatedField<string> imageUrls_ = new pbc::RepeatedField<string>();
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier> modifiers_ =
-            new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier>();
-
-        private string description_ = "";
-        private string fortId_ = "";
-        private int fp_;
-        private double latitude_;
-        private double longitude_;
-        private int maxStamina_;
-        private string name_ = "";
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonData_;
-        private int stamina_;
-        private global::AllEnum.TeamColor teamColor_ = 0;
-        private global::AllEnum.FortType type_ = 0;
-
-        public FortDetailsResponse()
-        {
-            OnConstruction();
-        }
-
-        public FortDetailsResponse(FortDetailsResponse other) : this()
-        {
-            fortId_ = other.fortId_;
-            teamColor_ = other.teamColor_;
-            PokemonData = other.pokemonData_ != null ? other.PokemonData.Clone() : null;
-            name_ = other.name_;
-            imageUrls_ = other.imageUrls_.Clone();
-            fp_ = other.fp_;
-            stamina_ = other.stamina_;
-            maxStamina_ = other.maxStamina_;
-            type_ = other.type_;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-            description_ = other.description_;
-            modifiers_ = other.modifiers_.Clone();
-        }
-
-        public static pb::MessageParser<FortDetailsResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[53]; }
-        }
-
-        public string FortId
-        {
-            get { return fortId_; }
-            set { fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::AllEnum.TeamColor TeamColor
-        {
-            get { return teamColor_; }
-            set { teamColor_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonData
-        {
-            get { return pokemonData_; }
-            set { pokemonData_ = value; }
-        }
-
-        public string Name
-        {
-            get { return name_; }
-            set { name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public pbc::RepeatedField<string> ImageUrls
-        {
-            get { return imageUrls_; }
-        }
-
-        public int Fp
-        {
-            get { return fp_; }
-            set { fp_ = value; }
-        }
-
-        public int Stamina
-        {
-            get { return stamina_; }
-            set { stamina_ = value; }
-        }
-
-        public int MaxStamina
-        {
-            get { return maxStamina_; }
-            set { maxStamina_ = value; }
-        }
-
-        public global::AllEnum.FortType Type
-        {
-            get { return type_; }
-            set { type_ = value; }
-        }
-
-        public double Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public double Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        public string Description
-        {
-            get { return description_; }
-            set { description_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.FortModifier> Modifiers
-        {
-            get { return modifiers_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortDetailsResponse Clone()
-        {
-            return new FortDetailsResponse(this);
-        }
-
-        public bool Equals(FortDetailsResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (FortId != other.FortId) return false;
-            if (TeamColor != other.TeamColor) return false;
-            if (!Equals(PokemonData, other.PokemonData)) return false;
-            if (Name != other.Name) return false;
-            if (!imageUrls_.Equals(other.imageUrls_)) return false;
-            if (Fp != other.Fp) return false;
-            if (Stamina != other.Stamina) return false;
-            if (MaxStamina != other.MaxStamina) return false;
-            if (Type != other.Type) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            if (Description != other.Description) return false;
-            if (!modifiers_.Equals(other.modifiers_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (FortId.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(FortId);
-            }
-            if (TeamColor != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)TeamColor);
-            }
-            if (pokemonData_ != null)
-            {
-                output.WriteRawTag(26);
-                output.WriteMessage(PokemonData);
-            }
-            if (Name.Length != 0)
-            {
-                output.WriteRawTag(34);
-                output.WriteString(Name);
-            }
-            imageUrls_.WriteTo(output, _repeated_imageUrls_codec);
-            if (Fp != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteInt32(Fp);
-            }
-            if (Stamina != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteInt32(Stamina);
-            }
-            if (MaxStamina != 0)
-            {
-                output.WriteRawTag(64);
-                output.WriteInt32(MaxStamina);
-            }
-            if (Type != 0)
-            {
-                output.WriteRawTag(72);
-                output.WriteEnum((int)Type);
-            }
-            if (Latitude != 0D)
-            {
-                output.WriteRawTag(81);
-                output.WriteDouble(Latitude);
-            }
-            if (Longitude != 0D)
-            {
-                output.WriteRawTag(89);
-                output.WriteDouble(Longitude);
-            }
-            if (Description.Length != 0)
-            {
-                output.WriteRawTag(98);
-                output.WriteString(Description);
-            }
-            modifiers_.WriteTo(output, _repeated_modifiers_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (FortId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
-            }
-            if (TeamColor != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)TeamColor);
-            }
-            if (pokemonData_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonData);
-            }
-            if (Name.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
-            }
-            size += imageUrls_.CalculateSize(_repeated_imageUrls_codec);
-            if (Fp != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Fp);
-            }
-            if (Stamina != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
-            }
-            if (MaxStamina != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxStamina);
-            }
-            if (Type != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Type);
-            }
-            if (Latitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (Description.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
-            }
-            size += modifiers_.CalculateSize(_repeated_modifiers_codec);
-            return size;
-        }
-
-        public void MergeFrom(FortDetailsResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.FortId.Length != 0)
-            {
-                FortId = other.FortId;
-            }
-            if (other.TeamColor != 0)
-            {
-                TeamColor = other.TeamColor;
-            }
-            if (other.pokemonData_ != null)
-            {
-                if (pokemonData_ == null)
-                {
-                    pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                }
-                PokemonData.MergeFrom(other.PokemonData);
-            }
-            if (other.Name.Length != 0)
-            {
-                Name = other.Name;
-            }
-            imageUrls_.Add(other.imageUrls_);
-            if (other.Fp != 0)
-            {
-                Fp = other.Fp;
-            }
-            if (other.Stamina != 0)
-            {
-                Stamina = other.Stamina;
-            }
-            if (other.MaxStamina != 0)
-            {
-                MaxStamina = other.MaxStamina;
-            }
-            if (other.Type != 0)
-            {
-                Type = other.Type;
-            }
-            if (other.Latitude != 0D)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0D)
-            {
-                Longitude = other.Longitude;
-            }
-            if (other.Description.Length != 0)
-            {
-                Description = other.Description;
-            }
-            modifiers_.Add(other.modifiers_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            FortId = input.ReadString();
-                            break;
-                        }
-                    case 16:
-                        {
-                            teamColor_ = (global::AllEnum.TeamColor)input.ReadEnum();
-                            break;
-                        }
-                    case 26:
-                        {
-                            if (pokemonData_ == null)
-                            {
-                                pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                            }
-                            input.ReadMessage(pokemonData_);
-                            break;
-                        }
-                    case 34:
-                        {
-                            Name = input.ReadString();
-                            break;
-                        }
-                    case 42:
-                        {
-                            imageUrls_.AddEntriesFrom(input, _repeated_imageUrls_codec);
-                            break;
-                        }
-                    case 48:
-                        {
-                            Fp = input.ReadInt32();
-                            break;
-                        }
-                    case 56:
-                        {
-                            Stamina = input.ReadInt32();
-                            break;
-                        }
-                    case 64:
-                        {
-                            MaxStamina = input.ReadInt32();
-                            break;
-                        }
-                    case 72:
-                        {
-                            type_ = (global::AllEnum.FortType)input.ReadEnum();
-                            break;
-                        }
-                    case 81:
-                        {
-                            Latitude = input.ReadDouble();
-                            break;
-                        }
-                    case 89:
-                        {
-                            Longitude = input.ReadDouble();
-                            break;
-                        }
-                    case 98:
-                        {
-                            Description = input.ReadString();
-                            break;
-                        }
-                    case 106:
-                        {
-                            modifiers_.AddEntriesFrom(input, _repeated_modifiers_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortDetailsResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (FortId.Length != 0) hash ^= FortId.GetHashCode();
-            if (TeamColor != 0) hash ^= TeamColor.GetHashCode();
-            if (pokemonData_ != null) hash ^= PokemonData.GetHashCode();
-            if (Name.Length != 0) hash ^= Name.GetHashCode();
-            hash ^= imageUrls_.GetHashCode();
-            if (Fp != 0) hash ^= Fp.GetHashCode();
-            if (Stamina != 0) hash ^= Stamina.GetHashCode();
-            if (MaxStamina != 0) hash ^= MaxStamina.GetHashCode();
-            if (Type != 0) hash ^= Type.GetHashCode();
-            if (Latitude != 0D) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0D) hash ^= Longitude.GetHashCode();
-            if (Description.Length != 0) hash ^= Description.GetHashCode();
-            hash ^= modifiers_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortModifier : pb::IMessage<FortModifier>
-    {
-        /// <summary>Field number for the "item_id" field.</summary>
-        public const int ItemIdFieldNumber = 1;
-
-        /// <summary>Field number for the "expiration_timestamp_ms" field.</summary>
-        public const int ExpirationTimestampMsFieldNumber = 2;
-
-        /// <summary>Field number for the "deployer_player_codename" field.</summary>
-        public const int DeployerPlayerCodenameFieldNumber = 3;
-
-        private static readonly pb::MessageParser<FortModifier> _parser =
-            new pb::MessageParser<FortModifier>(() => new FortModifier());
-
-        private string deployerPlayerCodename_ = "";
-        private long expirationTimestampMs_;
-        private global::AllEnum.ItemId itemId_ = 0;
-
-        public FortModifier()
-        {
-            OnConstruction();
-        }
-
-        public FortModifier(FortModifier other) : this()
-        {
-            itemId_ = other.itemId_;
-            expirationTimestampMs_ = other.expirationTimestampMs_;
-            deployerPlayerCodename_ = other.deployerPlayerCodename_;
-        }
-
-        public static pb::MessageParser<FortModifier> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[54]; }
-        }
-
-        public global::AllEnum.ItemId ItemId
-        {
-            get { return itemId_; }
-            set { itemId_ = value; }
-        }
-
-        public long ExpirationTimestampMs
-        {
-            get { return expirationTimestampMs_; }
-            set { expirationTimestampMs_ = value; }
-        }
-
-        public string DeployerPlayerCodename
-        {
-            get { return deployerPlayerCodename_; }
-            set { deployerPlayerCodename_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortModifier Clone()
-        {
-            return new FortModifier(this);
-        }
-
-        public bool Equals(FortModifier other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemId != other.ItemId) return false;
-            if (ExpirationTimestampMs != other.ExpirationTimestampMs) return false;
-            if (DeployerPlayerCodename != other.DeployerPlayerCodename) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)ItemId);
-            }
-            if (ExpirationTimestampMs != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(ExpirationTimestampMs);
-            }
-            if (DeployerPlayerCodename.Length != 0)
-            {
-                output.WriteRawTag(26);
-                output.WriteString(DeployerPlayerCodename);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
-            }
-            if (ExpirationTimestampMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationTimestampMs);
-            }
-            if (DeployerPlayerCodename.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(DeployerPlayerCodename);
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortModifier other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemId != 0)
-            {
-                ItemId = other.ItemId;
-            }
-            if (other.ExpirationTimestampMs != 0L)
-            {
-                ExpirationTimestampMs = other.ExpirationTimestampMs;
-            }
-            if (other.DeployerPlayerCodename.Length != 0)
-            {
-                DeployerPlayerCodename = other.DeployerPlayerCodename;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            ExpirationTimestampMs = input.ReadInt64();
-                            break;
-                        }
-                    case 26:
-                        {
-                            DeployerPlayerCodename = input.ReadString();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortModifier);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemId != 0) hash ^= ItemId.GetHashCode();
-            if (ExpirationTimestampMs != 0L) hash ^= ExpirationTimestampMs.GetHashCode();
-            if (DeployerPlayerCodename.Length != 0) hash ^= DeployerPlayerCodename.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EncounterRequest : pb::IMessage<EncounterRequest>
-    {
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 1;
-
-        /// <summary>Field number for the "spawnpoint_id" field.</summary>
-        public const int SpawnpointIdFieldNumber = 2;
-
-        /// <summary>Field number for the "player_latitude" field.</summary>
-        public const int PlayerLatitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "player_longitude" field.</summary>
-        public const int PlayerLongitudeFieldNumber = 4;
-
-        private static readonly pb::MessageParser<EncounterRequest> _parser =
-            new pb::MessageParser<EncounterRequest>(() => new EncounterRequest());
-
-        private ulong encounterId_;
-        private double playerLatitude_;
-        private double playerLongitude_;
-        private string spawnpointId_ = "";
-
-        public EncounterRequest()
-        {
-            OnConstruction();
-        }
-
-        public EncounterRequest(EncounterRequest other) : this()
-        {
-            encounterId_ = other.encounterId_;
-            spawnpointId_ = other.spawnpointId_;
-            playerLatitude_ = other.playerLatitude_;
-            playerLongitude_ = other.playerLongitude_;
-        }
-
-        public static pb::MessageParser<EncounterRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[55]; }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        public string SpawnpointId
-        {
-            get { return spawnpointId_; }
-            set { spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public double PlayerLatitude
-        {
-            get { return playerLatitude_; }
-            set { playerLatitude_ = value; }
-        }
-
-        public double PlayerLongitude
-        {
-            get { return playerLongitude_; }
-            set { playerLongitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EncounterRequest Clone()
-        {
-            return new EncounterRequest(this);
-        }
-
-        public bool Equals(EncounterRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (EncounterId != other.EncounterId) return false;
-            if (SpawnpointId != other.SpawnpointId) return false;
-            if (PlayerLatitude != other.PlayerLatitude) return false;
-            if (PlayerLongitude != other.PlayerLongitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(EncounterId);
-            }
-            if (SpawnpointId.Length != 0)
-            {
-                output.WriteRawTag(18);
-                output.WriteString(SpawnpointId);
-            }
-            if (PlayerLatitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(PlayerLatitude);
-            }
-            if (PlayerLongitude != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(PlayerLongitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (SpawnpointId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
-            }
-            if (PlayerLatitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (PlayerLongitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(EncounterRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-            if (other.SpawnpointId.Length != 0)
-            {
-                SpawnpointId = other.SpawnpointId;
-            }
-            if (other.PlayerLatitude != 0D)
-            {
-                PlayerLatitude = other.PlayerLatitude;
-            }
-            if (other.PlayerLongitude != 0D)
-            {
-                PlayerLongitude = other.PlayerLongitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                    case 18:
-                        {
-                            SpawnpointId = input.ReadString();
-                            break;
-                        }
-                    case 25:
-                        {
-                            PlayerLatitude = input.ReadDouble();
-                            break;
-                        }
-                    case 33:
-                        {
-                            PlayerLongitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EncounterRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
-            if (PlayerLatitude != 0D) hash ^= PlayerLatitude.GetHashCode();
-            if (PlayerLongitude != 0D) hash ^= PlayerLongitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EncounterResponse : pb::IMessage<EncounterResponse>
-    {
-        /// <summary>Field number for the "wild_pokemon" field.</summary>
-        public const int WildPokemonFieldNumber = 1;
-
-        /// <summary>Field number for the "background" field.</summary>
-        public const int BackgroundFieldNumber = 2;
-
-        /// <summary>Field number for the "status" field.</summary>
-        public const int StatusFieldNumber = 3;
-
-        /// <summary>Field number for the "capture_probability" field.</summary>
-        public const int CaptureProbabilityFieldNumber = 4;
-
-        private static readonly pb::MessageParser<EncounterResponse> _parser =
-            new pb::MessageParser<EncounterResponse>(() => new EncounterResponse());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background background_ = 0;
-        private global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability captureProbability_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status status_ = 0;
-        private global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon wildPokemon_;
-
-        public EncounterResponse()
-        {
-            OnConstruction();
-        }
-
-        public EncounterResponse(EncounterResponse other) : this()
-        {
-            WildPokemon = other.wildPokemon_ != null ? other.WildPokemon.Clone() : null;
-            background_ = other.background_;
-            status_ = other.status_;
-            CaptureProbability = other.captureProbability_ != null ? other.CaptureProbability.Clone() : null;
-        }
-
-        public static pb::MessageParser<EncounterResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[56]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon WildPokemon
-        {
-            get { return wildPokemon_; }
-            set { wildPokemon_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background Background
-        {
-            get { return background_; }
-            set { background_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status Status
-        {
-            get { return status_; }
-            set { status_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability CaptureProbability
-        {
-            get { return captureProbability_; }
-            set { captureProbability_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EncounterResponse Clone()
-        {
-            return new EncounterResponse(this);
-        }
-
-        public bool Equals(EncounterResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!Equals(WildPokemon, other.WildPokemon)) return false;
-            if (Background != other.Background) return false;
-            if (Status != other.Status) return false;
-            if (!Equals(CaptureProbability, other.CaptureProbability)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (wildPokemon_ != null)
-            {
-                output.WriteRawTag(10);
-                output.WriteMessage(WildPokemon);
-            }
-            if (Background != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)Background);
-            }
-            if (Status != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteEnum((int)Status);
-            }
-            if (captureProbability_ != null)
-            {
-                output.WriteRawTag(34);
-                output.WriteMessage(CaptureProbability);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (wildPokemon_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(WildPokemon);
-            }
-            if (Background != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Background);
-            }
-            if (Status != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Status);
-            }
-            if (captureProbability_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(CaptureProbability);
-            }
-            return size;
-        }
-
-        public void MergeFrom(EncounterResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.wildPokemon_ != null)
-            {
-                if (wildPokemon_ == null)
-                {
-                    wildPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon();
-                }
-                WildPokemon.MergeFrom(other.WildPokemon);
-            }
-            if (other.Background != 0)
-            {
-                Background = other.Background;
-            }
-            if (other.Status != 0)
-            {
-                Status = other.Status;
-            }
-            if (other.captureProbability_ != null)
-            {
-                if (captureProbability_ == null)
-                {
-                    captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
-                }
-                CaptureProbability.MergeFrom(other.CaptureProbability);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            if (wildPokemon_ == null)
-                            {
-                                wildPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.WildPokemon();
-                            }
-                            input.ReadMessage(wildPokemon_);
-                            break;
-                        }
-                    case 16:
-                        {
-                            background_ =
-                                (global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Background)
-                                    input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            status_ =
-                                (global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Status)input.ReadEnum();
-                            break;
-                        }
-                    case 34:
-                        {
-                            if (captureProbability_ == null)
-                            {
-                                captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
-                            }
-                            input.ReadMessage(captureProbability_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EncounterResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (wildPokemon_ != null) hash ^= WildPokemon.GetHashCode();
-            if (Background != 0) hash ^= Background.GetHashCode();
-            if (Status != 0) hash ^= Status.GetHashCode();
-            if (captureProbability_ != null) hash ^= CaptureProbability.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the EncounterResponse message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            public enum Background
-            {
-                [pbr::OriginalName("PARK")]
-                Park = 0,
-                [pbr::OriginalName("DESERT")]
-                Desert = 1,
-            }
-
-            public enum Status
-            {
-                [pbr::OriginalName("ENCOUNTER_ERROR")]
-                EncounterError = 0,
-                [pbr::OriginalName("ENCOUNTER_SUCCESS")]
-                EncounterSuccess = 1,
-                [pbr::OriginalName("ENCOUNTER_NOT_FOUND")]
-                EncounterNotFound = 2,
-                [pbr::OriginalName("ENCOUNTER_CLOSED")]
-                EncounterClosed = 3,
-                [pbr::OriginalName("ENCOUNTER_POKEMON_FLED")]
-                EncounterPokemonFled = 4,
-                [pbr::OriginalName("ENCOUNTER_NOT_IN_RANGE")]
-                EncounterNotInRange = 5,
-                [pbr::OriginalName("ENCOUNTER_ALREADY_HAPPENED")]
-                EncounterAlreadyHappened = 6,
-                [pbr::OriginalName("POKEMON_INVENTORY_FULL")]
-                PokemonInventoryFull = 7,
-            }
-        }
-
-        #endregion
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CaptureProbability : pb::IMessage<CaptureProbability>
-    {
-        /// <summary>Field number for the "pokeball_type" field.</summary>
-        public const int PokeballTypeFieldNumber = 1;
-
-        /// <summary>Field number for the "capture_probability" field.</summary>
-        public const int CaptureProbability_FieldNumber = 2;
-
-        /// <summary>Field number for the "reticle_difficulty_scale" field.</summary>
-        public const int ReticleDifficultyScaleFieldNumber = 12;
-
-        private static readonly pb::MessageParser<CaptureProbability> _parser =
-            new pb::MessageParser<CaptureProbability>(() => new CaptureProbability());
-
-        private static readonly pb::FieldCodec<global::AllEnum.ItemId> _repeated_pokeballType_codec
-            = pb::FieldCodec.ForEnum(10, x => (int)x, x => (global::AllEnum.ItemId)x);
-
-        private static readonly pb::FieldCodec<float> _repeated_captureProbability_codec
-            = pb::FieldCodec.ForFloat(18);
-
-        private readonly pbc::RepeatedField<float> captureProbability_ = new pbc::RepeatedField<float>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.ItemId> pokeballType_ =
-            new pbc::RepeatedField<global::AllEnum.ItemId>();
-
-        private double reticleDifficultyScale_;
-
-        public CaptureProbability()
-        {
-            OnConstruction();
-        }
-
-        public CaptureProbability(CaptureProbability other) : this()
-        {
-            pokeballType_ = other.pokeballType_.Clone();
-            captureProbability_ = other.captureProbability_.Clone();
-            reticleDifficultyScale_ = other.reticleDifficultyScale_;
-        }
-
-        public static pb::MessageParser<CaptureProbability> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[57]; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.ItemId> PokeballType
-        {
-            get { return pokeballType_; }
-        }
-
-        public pbc::RepeatedField<float> CaptureProbability_
-        {
-            get { return captureProbability_; }
-        }
-
-        public double ReticleDifficultyScale
-        {
-            get { return reticleDifficultyScale_; }
-            set { reticleDifficultyScale_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CaptureProbability Clone()
-        {
-            return new CaptureProbability(this);
-        }
-
-        public bool Equals(CaptureProbability other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!pokeballType_.Equals(other.pokeballType_)) return false;
-            if (!captureProbability_.Equals(other.captureProbability_)) return false;
-            if (ReticleDifficultyScale != other.ReticleDifficultyScale) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            pokeballType_.WriteTo(output, _repeated_pokeballType_codec);
-            captureProbability_.WriteTo(output, _repeated_captureProbability_codec);
-            if (ReticleDifficultyScale != 0D)
-            {
-                output.WriteRawTag(97);
-                output.WriteDouble(ReticleDifficultyScale);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += pokeballType_.CalculateSize(_repeated_pokeballType_codec);
-            size += captureProbability_.CalculateSize(_repeated_captureProbability_codec);
-            if (ReticleDifficultyScale != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(CaptureProbability other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            pokeballType_.Add(other.pokeballType_);
-            captureProbability_.Add(other.captureProbability_);
-            if (other.ReticleDifficultyScale != 0D)
-            {
-                ReticleDifficultyScale = other.ReticleDifficultyScale;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                    case 8:
-                        {
-                            pokeballType_.AddEntriesFrom(input, _repeated_pokeballType_codec);
-                            break;
-                        }
-                    case 18:
-                    case 21:
-                        {
-                            captureProbability_.AddEntriesFrom(input, _repeated_captureProbability_codec);
-                            break;
-                        }
-                    case 97:
-                        {
-                            ReticleDifficultyScale = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CaptureProbability);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= pokeballType_.GetHashCode();
-            hash ^= captureProbability_.GetHashCode();
-            if (ReticleDifficultyScale != 0D) hash ^= ReticleDifficultyScale.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DiskEncounterRequest : pb::IMessage<DiskEncounterRequest>
-    {
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 1;
-
-        /// <summary>Field number for the "fort_id" field.</summary>
-        public const int FortIdFieldNumber = 2;
-
-        /// <summary>Field number for the "player_latitude" field.</summary>
-        public const int PlayerLatitudeFieldNumber = 3;
-
-        /// <summary>Field number for the "player_longitude" field.</summary>
-        public const int PlayerLongitudeFieldNumber = 4;
-
-        private static readonly pb::MessageParser<DiskEncounterRequest> _parser =
-            new pb::MessageParser<DiskEncounterRequest>(() => new DiskEncounterRequest());
-
-        private ulong encounterId_;
-        private string fortId_ = "";
-        private double playerLatitude_;
-        private double playerLongitude_;
-
-        public DiskEncounterRequest()
-        {
-            OnConstruction();
-        }
-
-        public DiskEncounterRequest(DiskEncounterRequest other) : this()
-        {
-            encounterId_ = other.encounterId_;
-            fortId_ = other.fortId_;
-            playerLatitude_ = other.playerLatitude_;
-            playerLongitude_ = other.playerLongitude_;
-        }
-
-        public static pb::MessageParser<DiskEncounterRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[58]; }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        public string FortId
-        {
-            get { return fortId_; }
-            set { fortId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public double PlayerLatitude
-        {
-            get { return playerLatitude_; }
-            set { playerLatitude_ = value; }
-        }
-
-        public double PlayerLongitude
-        {
-            get { return playerLongitude_; }
-            set { playerLongitude_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DiskEncounterRequest Clone()
-        {
-            return new DiskEncounterRequest(this);
-        }
-
-        public bool Equals(DiskEncounterRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (EncounterId != other.EncounterId) return false;
-            if (FortId != other.FortId) return false;
-            if (PlayerLatitude != other.PlayerLatitude) return false;
-            if (PlayerLongitude != other.PlayerLongitude) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(EncounterId);
-            }
-            if (FortId.Length != 0)
-            {
-                output.WriteRawTag(18);
-                output.WriteString(FortId);
-            }
-            if (PlayerLatitude != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(PlayerLatitude);
-            }
-            if (PlayerLongitude != 0D)
-            {
-                output.WriteRawTag(33);
-                output.WriteDouble(PlayerLongitude);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (FortId.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(FortId);
-            }
-            if (PlayerLatitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (PlayerLongitude != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(DiskEncounterRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-            if (other.FortId.Length != 0)
-            {
-                FortId = other.FortId;
-            }
-            if (other.PlayerLatitude != 0D)
-            {
-                PlayerLatitude = other.PlayerLatitude;
-            }
-            if (other.PlayerLongitude != 0D)
-            {
-                PlayerLongitude = other.PlayerLongitude;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                    case 18:
-                        {
-                            FortId = input.ReadString();
-                            break;
-                        }
-                    case 25:
-                        {
-                            PlayerLatitude = input.ReadDouble();
-                            break;
-                        }
-                    case 33:
-                        {
-                            PlayerLongitude = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DiskEncounterRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            if (FortId.Length != 0) hash ^= FortId.GetHashCode();
-            if (PlayerLatitude != 0D) hash ^= PlayerLatitude.GetHashCode();
-            if (PlayerLongitude != 0D) hash ^= PlayerLongitude.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class DiskEncounterResponse : pb::IMessage<DiskEncounterResponse>
-    {
-        /// <summary>Field number for the "result" field.</summary>
-        public const int ResultFieldNumber = 1;
-
-        /// <summary>Field number for the "pokemon_data" field.</summary>
-        public const int PokemonDataFieldNumber = 2;
-
-        /// <summary>Field number for the "capture_probability" field.</summary>
-        public const int CaptureProbabilityFieldNumber = 3;
-
-        private static readonly pb::MessageParser<DiskEncounterResponse> _parser =
-            new pb::MessageParser<DiskEncounterResponse>(() => new DiskEncounterResponse());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability captureProbability_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokemonData pokemonData_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result result_ = 0;
-
-        public DiskEncounterResponse()
-        {
-            OnConstruction();
-        }
-
-        public DiskEncounterResponse(DiskEncounterResponse other) : this()
-        {
-            result_ = other.result_;
-            PokemonData = other.pokemonData_ != null ? other.PokemonData.Clone() : null;
-            CaptureProbability = other.captureProbability_ != null ? other.CaptureProbability.Clone() : null;
-        }
-
-        public static pb::MessageParser<DiskEncounterResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[59]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result Result
-        {
-            get { return result_; }
-            set { result_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokemonData PokemonData
-        {
-            get { return pokemonData_; }
-            set { pokemonData_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability CaptureProbability
-        {
-            get { return captureProbability_; }
-            set { captureProbability_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public DiskEncounterResponse Clone()
-        {
-            return new DiskEncounterResponse(this);
-        }
-
-        public bool Equals(DiskEncounterResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Result != other.Result) return false;
-            if (!Equals(PokemonData, other.PokemonData)) return false;
-            if (!Equals(CaptureProbability, other.CaptureProbability)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Result != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)Result);
-            }
-            if (pokemonData_ != null)
-            {
-                output.WriteRawTag(18);
-                output.WriteMessage(PokemonData);
-            }
-            if (captureProbability_ != null)
-            {
-                output.WriteRawTag(26);
-                output.WriteMessage(CaptureProbability);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Result != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Result);
-            }
-            if (pokemonData_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonData);
-            }
-            if (captureProbability_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(CaptureProbability);
-            }
-            return size;
-        }
-
-        public void MergeFrom(DiskEncounterResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Result != 0)
-            {
-                Result = other.Result;
-            }
-            if (other.pokemonData_ != null)
-            {
-                if (pokemonData_ == null)
-                {
-                    pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                }
-                PokemonData.MergeFrom(other.PokemonData);
-            }
-            if (other.captureProbability_ != null)
-            {
-                if (captureProbability_ == null)
-                {
-                    captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
-                }
-                CaptureProbability.MergeFrom(other.CaptureProbability);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            result_ =
-                                (global::PokemonGo.RocketAPI.GeneratedCode.DiskEncounterResponse.Types.Result)
-                                    input.ReadEnum();
-                            break;
-                        }
-                    case 18:
-                        {
-                            if (pokemonData_ == null)
-                            {
-                                pokemonData_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokemonData();
-                            }
-                            input.ReadMessage(pokemonData_);
-                            break;
-                        }
-                    case 26:
-                        {
-                            if (captureProbability_ == null)
-                            {
-                                captureProbability_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureProbability();
-                            }
-                            input.ReadMessage(captureProbability_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as DiskEncounterResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Result != 0) hash ^= Result.GetHashCode();
-            if (pokemonData_ != null) hash ^= PokemonData.GetHashCode();
-            if (captureProbability_ != null) hash ^= CaptureProbability.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the DiskEncounterResponse message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            public enum Result
-            {
-                [pbr::OriginalName("UNKNOWN")]
-                Unknown = 0,
-                [pbr::OriginalName("SUCCESS")]
-                Success = 1,
-                [pbr::OriginalName("NOT_AVAILABLE")]
-                NotAvailable = 2,
-                [pbr::OriginalName("NOT_IN_RANGE")]
-                NotInRange = 3,
-                [pbr::OriginalName("ENCOUNTER_ALREADY_FINISHED")]
-                EncounterAlreadyFinished = 4,
-                [pbr::OriginalName("POKEMON_INVENTORY_FULL")]
-                PokemonInventoryFull = 5,
-            }
-        }
-
-        #endregion
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CatchPokemonRequest : pb::IMessage<CatchPokemonRequest>
-    {
-        /// <summary>Field number for the "encounter_id" field.</summary>
-        public const int EncounterIdFieldNumber = 1;
-
-        /// <summary>Field number for the "pokeball" field.</summary>
-        public const int PokeballFieldNumber = 2;
-
-        /// <summary>Field number for the "normalized_reticle_size" field.</summary>
-        public const int NormalizedReticleSizeFieldNumber = 3;
-
-        /// <summary>Field number for the "spawn_point_guid" field.</summary>
-        public const int SpawnPointGuidFieldNumber = 4;
-
-        /// <summary>Field number for the "hit_pokemon" field.</summary>
-        public const int HitPokemonFieldNumber = 5;
-
-        /// <summary>Field number for the "spin_modifier" field.</summary>
-        public const int SpinModifierFieldNumber = 6;
-
-        /// <summary>Field number for the "NormalizedHitPosition" field.</summary>
-        public const int NormalizedHitPositionFieldNumber = 7;
-
-        private static readonly pb::MessageParser<CatchPokemonRequest> _parser =
-            new pb::MessageParser<CatchPokemonRequest>(() => new CatchPokemonRequest());
-
-        private ulong encounterId_;
-        private bool hitPokemon_;
-        private double normalizedHitPosition_;
-        private double normalizedReticleSize_;
-        private int pokeball_;
-        private string spawnPointGuid_ = "";
-        private double spinModifier_;
-
-        public CatchPokemonRequest()
-        {
-            OnConstruction();
-        }
-
-        public CatchPokemonRequest(CatchPokemonRequest other) : this()
-        {
-            encounterId_ = other.encounterId_;
-            pokeball_ = other.pokeball_;
-            normalizedReticleSize_ = other.normalizedReticleSize_;
-            spawnPointGuid_ = other.spawnPointGuid_;
-            hitPokemon_ = other.hitPokemon_;
-            spinModifier_ = other.spinModifier_;
-            normalizedHitPosition_ = other.normalizedHitPosition_;
-        }
-
-        public static pb::MessageParser<CatchPokemonRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[60]; }
-        }
-
-        public ulong EncounterId
-        {
-            get { return encounterId_; }
-            set { encounterId_ = value; }
-        }
-
-        public int Pokeball
-        {
-            get { return pokeball_; }
-            set { pokeball_ = value; }
-        }
-
-        public double NormalizedReticleSize
-        {
-            get { return normalizedReticleSize_; }
-            set { normalizedReticleSize_ = value; }
-        }
-
-        public string SpawnPointGuid
-        {
-            get { return spawnPointGuid_; }
-            set { spawnPointGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public bool HitPokemon
-        {
-            get { return hitPokemon_; }
-            set { hitPokemon_ = value; }
-        }
-
-        public double SpinModifier
-        {
-            get { return spinModifier_; }
-            set { spinModifier_ = value; }
-        }
-
-        public double NormalizedHitPosition
-        {
-            get { return normalizedHitPosition_; }
-            set { normalizedHitPosition_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CatchPokemonRequest Clone()
-        {
-            return new CatchPokemonRequest(this);
-        }
-
-        public bool Equals(CatchPokemonRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (EncounterId != other.EncounterId) return false;
-            if (Pokeball != other.Pokeball) return false;
-            if (NormalizedReticleSize != other.NormalizedReticleSize) return false;
-            if (SpawnPointGuid != other.SpawnPointGuid) return false;
-            if (HitPokemon != other.HitPokemon) return false;
-            if (SpinModifier != other.SpinModifier) return false;
-            if (NormalizedHitPosition != other.NormalizedHitPosition) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (EncounterId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(EncounterId);
-            }
-            if (Pokeball != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(Pokeball);
-            }
-            if (NormalizedReticleSize != 0D)
-            {
-                output.WriteRawTag(25);
-                output.WriteDouble(NormalizedReticleSize);
-            }
-            if (SpawnPointGuid.Length != 0)
-            {
-                output.WriteRawTag(34);
-                output.WriteString(SpawnPointGuid);
-            }
-            if (HitPokemon != false)
-            {
-                output.WriteRawTag(40);
-                output.WriteBool(HitPokemon);
-            }
-            if (SpinModifier != 0D)
-            {
-                output.WriteRawTag(49);
-                output.WriteDouble(SpinModifier);
-            }
-            if (NormalizedHitPosition != 0D)
-            {
-                output.WriteRawTag(57);
-                output.WriteDouble(NormalizedHitPosition);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (EncounterId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (Pokeball != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
-            }
-            if (NormalizedReticleSize != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (SpawnPointGuid.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointGuid);
-            }
-            if (HitPokemon != false)
-            {
-                size += 1 + 1;
-            }
-            if (SpinModifier != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (NormalizedHitPosition != 0D)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(CatchPokemonRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.EncounterId != 0UL)
-            {
-                EncounterId = other.EncounterId;
-            }
-            if (other.Pokeball != 0)
-            {
-                Pokeball = other.Pokeball;
-            }
-            if (other.NormalizedReticleSize != 0D)
-            {
-                NormalizedReticleSize = other.NormalizedReticleSize;
-            }
-            if (other.SpawnPointGuid.Length != 0)
-            {
-                SpawnPointGuid = other.SpawnPointGuid;
-            }
-            if (other.HitPokemon != false)
-            {
-                HitPokemon = other.HitPokemon;
-            }
-            if (other.SpinModifier != 0D)
-            {
-                SpinModifier = other.SpinModifier;
-            }
-            if (other.NormalizedHitPosition != 0D)
-            {
-                NormalizedHitPosition = other.NormalizedHitPosition;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            EncounterId = input.ReadFixed64();
-                            break;
-                        }
-                    case 16:
-                        {
-                            Pokeball = input.ReadInt32();
-                            break;
-                        }
-                    case 25:
-                        {
-                            NormalizedReticleSize = input.ReadDouble();
-                            break;
-                        }
-                    case 34:
-                        {
-                            SpawnPointGuid = input.ReadString();
-                            break;
-                        }
-                    case 40:
-                        {
-                            HitPokemon = input.ReadBool();
-                            break;
-                        }
-                    case 49:
-                        {
-                            SpinModifier = input.ReadDouble();
-                            break;
-                        }
-                    case 57:
-                        {
-                            NormalizedHitPosition = input.ReadDouble();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CatchPokemonRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-            if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
-            if (NormalizedReticleSize != 0D) hash ^= NormalizedReticleSize.GetHashCode();
-            if (SpawnPointGuid.Length != 0) hash ^= SpawnPointGuid.GetHashCode();
-            if (HitPokemon != false) hash ^= HitPokemon.GetHashCode();
-            if (SpinModifier != 0D) hash ^= SpinModifier.GetHashCode();
-            if (NormalizedHitPosition != 0D) hash ^= NormalizedHitPosition.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CatchPokemonResponse : pb::IMessage<CatchPokemonResponse>
-    {
-        /// <summary>Field number for the "status" field.</summary>
-        public const int StatusFieldNumber = 1;
-
-        /// <summary>Field number for the "miss_percent" field.</summary>
-        public const int MissPercentFieldNumber = 2;
-
-        /// <summary>Field number for the "captured_pokemon_id" field.</summary>
-        public const int CapturedPokemonIdFieldNumber = 3;
-
-        /// <summary>Field number for the "scores" field.</summary>
-        public const int ScoresFieldNumber = 4;
-
-        private static readonly pb::MessageParser<CatchPokemonResponse> _parser =
-            new pb::MessageParser<CatchPokemonResponse>(() => new CatchPokemonResponse());
-
-        private ulong capturedPokemonId_;
-        private double missPercent_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore scores_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus status_ = 0;
-
-        public CatchPokemonResponse()
-        {
-            OnConstruction();
-        }
-
-        public CatchPokemonResponse(CatchPokemonResponse other) : this()
-        {
-            status_ = other.status_;
-            missPercent_ = other.missPercent_;
-            capturedPokemonId_ = other.capturedPokemonId_;
-            Scores = other.scores_ != null ? other.Scores.Clone() : null;
-        }
-
-        public static pb::MessageParser<CatchPokemonResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[61]; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus Status
-        {
-            get { return status_; }
-            set { status_ = value; }
-        }
-
-        public double MissPercent
-        {
-            get { return missPercent_; }
-            set { missPercent_ = value; }
-        }
-
-        public ulong CapturedPokemonId
-        {
-            get { return capturedPokemonId_; }
-            set { capturedPokemonId_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore Scores
-        {
-            get { return scores_; }
-            set { scores_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CatchPokemonResponse Clone()
-        {
-            return new CatchPokemonResponse(this);
-        }
-
-        public bool Equals(CatchPokemonResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Status != other.Status) return false;
-            if (MissPercent != other.MissPercent) return false;
-            if (CapturedPokemonId != other.CapturedPokemonId) return false;
-            if (!Equals(Scores, other.Scores)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Status != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)Status);
-            }
-            if (MissPercent != 0D)
-            {
-                output.WriteRawTag(17);
-                output.WriteDouble(MissPercent);
-            }
-            if (CapturedPokemonId != 0UL)
-            {
-                output.WriteRawTag(24);
-                output.WriteUInt64(CapturedPokemonId);
-            }
-            if (scores_ != null)
-            {
-                output.WriteRawTag(34);
-                output.WriteMessage(Scores);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Status != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Status);
-            }
-            if (MissPercent != 0D)
-            {
-                size += 1 + 8;
-            }
-            if (CapturedPokemonId != 0UL)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(CapturedPokemonId);
-            }
-            if (scores_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Scores);
-            }
-            return size;
-        }
-
-        public void MergeFrom(CatchPokemonResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Status != 0)
-            {
-                Status = other.Status;
-            }
-            if (other.MissPercent != 0D)
-            {
-                MissPercent = other.MissPercent;
-            }
-            if (other.CapturedPokemonId != 0UL)
-            {
-                CapturedPokemonId = other.CapturedPokemonId;
-            }
-            if (other.scores_ != null)
-            {
-                if (scores_ == null)
-                {
-                    scores_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore();
-                }
-                Scores.MergeFrom(other.Scores);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            status_ =
-                                (global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.CatchStatus)
-                                    input.ReadEnum();
-                            break;
-                        }
-                    case 17:
-                        {
-                            MissPercent = input.ReadDouble();
-                            break;
-                        }
-                    case 24:
-                        {
-                            CapturedPokemonId = input.ReadUInt64();
-                            break;
-                        }
-                    case 34:
-                        {
-                            if (scores_ == null)
-                            {
-                                scores_ = new global::PokemonGo.RocketAPI.GeneratedCode.CaptureScore();
-                            }
-                            input.ReadMessage(scores_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CatchPokemonResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Status != 0) hash ^= Status.GetHashCode();
-            if (MissPercent != 0D) hash ^= MissPercent.GetHashCode();
-            if (CapturedPokemonId != 0UL) hash ^= CapturedPokemonId.GetHashCode();
-            if (scores_ != null) hash ^= Scores.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the CatchPokemonResponse message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            public enum CatchStatus
-            {
-                [pbr::OriginalName("CATCH_ERROR")]
-                CatchError = 0,
-                [pbr::OriginalName("CATCH_SUCCESS")]
-                CatchSuccess = 1,
-                [pbr::OriginalName("CATCH_ESCAPE")]
-                CatchEscape = 2,
-                [pbr::OriginalName("CATCH_FLEE")]
-                CatchFlee = 3,
-                [pbr::OriginalName("CATCH_MISSED")]
-                CatchMissed = 4,
-            }
-        }
-
-        #endregion
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CaptureScore : pb::IMessage<CaptureScore>
-    {
-        /// <summary>Field number for the "activity_type" field.</summary>
-        public const int ActivityTypeFieldNumber = 1;
-
-        /// <summary>Field number for the "xp" field.</summary>
-        public const int XpFieldNumber = 2;
-
-        /// <summary>Field number for the "candy" field.</summary>
-        public const int CandyFieldNumber = 3;
-
-        /// <summary>Field number for the "stardust" field.</summary>
-        public const int StardustFieldNumber = 4;
-
-        private static readonly pb::MessageParser<CaptureScore> _parser =
-            new pb::MessageParser<CaptureScore>(() => new CaptureScore());
-
-        private static readonly pb::FieldCodec<global::AllEnum.ActivityType> _repeated_activityType_codec
-            = pb::FieldCodec.ForEnum(10, x => (int)x, x => (global::AllEnum.ActivityType)x);
-
-        private static readonly pb::FieldCodec<int> _repeated_xp_codec
-            = pb::FieldCodec.ForInt32(18);
-
-        private static readonly pb::FieldCodec<int> _repeated_candy_codec
-            = pb::FieldCodec.ForInt32(26);
-
-        private static readonly pb::FieldCodec<int> _repeated_stardust_codec
-            = pb::FieldCodec.ForInt32(34);
-
-        private readonly pbc::RepeatedField<global::AllEnum.ActivityType> activityType_ =
-            new pbc::RepeatedField<global::AllEnum.ActivityType>();
-
-        private readonly pbc::RepeatedField<int> candy_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> stardust_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> xp_ = new pbc::RepeatedField<int>();
-
-        public CaptureScore()
-        {
-            OnConstruction();
-        }
-
-        public CaptureScore(CaptureScore other) : this()
-        {
-            activityType_ = other.activityType_.Clone();
-            xp_ = other.xp_.Clone();
-            candy_ = other.candy_.Clone();
-            stardust_ = other.stardust_.Clone();
-        }
-
-        public static pb::MessageParser<CaptureScore> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[62]; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.ActivityType> ActivityType
-        {
-            get { return activityType_; }
-        }
-
-        public pbc::RepeatedField<int> Xp
-        {
-            get { return xp_; }
-        }
-
-        public pbc::RepeatedField<int> Candy
-        {
-            get { return candy_; }
-        }
-
-        public pbc::RepeatedField<int> Stardust
-        {
-            get { return stardust_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CaptureScore Clone()
-        {
-            return new CaptureScore(this);
-        }
-
-        public bool Equals(CaptureScore other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!activityType_.Equals(other.activityType_)) return false;
-            if (!xp_.Equals(other.xp_)) return false;
-            if (!candy_.Equals(other.candy_)) return false;
-            if (!stardust_.Equals(other.stardust_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            activityType_.WriteTo(output, _repeated_activityType_codec);
-            xp_.WriteTo(output, _repeated_xp_codec);
-            candy_.WriteTo(output, _repeated_candy_codec);
-            stardust_.WriteTo(output, _repeated_stardust_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += activityType_.CalculateSize(_repeated_activityType_codec);
-            size += xp_.CalculateSize(_repeated_xp_codec);
-            size += candy_.CalculateSize(_repeated_candy_codec);
-            size += stardust_.CalculateSize(_repeated_stardust_codec);
-            return size;
-        }
-
-        public void MergeFrom(CaptureScore other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            activityType_.Add(other.activityType_);
-            xp_.Add(other.xp_);
-            candy_.Add(other.candy_);
-            stardust_.Add(other.stardust_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                    case 8:
-                        {
-                            activityType_.AddEntriesFrom(input, _repeated_activityType_codec);
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            xp_.AddEntriesFrom(input, _repeated_xp_codec);
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            candy_.AddEntriesFrom(input, _repeated_candy_codec);
-                            break;
-                        }
-                    case 34:
-                    case 32:
-                        {
-                            stardust_.AddEntriesFrom(input, _repeated_stardust_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CaptureScore);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= activityType_.GetHashCode();
-            hash ^= xp_.GetHashCode();
-            hash ^= candy_.GetHashCode();
-            hash ^= stardust_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    /// <summary>
-    ///     No message needed.
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CheckAwardedBadgesRequest : pb::IMessage<CheckAwardedBadgesRequest>
-    {
-        private static readonly pb::MessageParser<CheckAwardedBadgesRequest> _parser =
-            new pb::MessageParser<CheckAwardedBadgesRequest>(() => new CheckAwardedBadgesRequest());
-
-        public CheckAwardedBadgesRequest()
-        {
-            OnConstruction();
-        }
-
-        public CheckAwardedBadgesRequest(CheckAwardedBadgesRequest other) : this()
-        {
-        }
-
-        public static pb::MessageParser<CheckAwardedBadgesRequest> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[63]; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CheckAwardedBadgesRequest Clone()
-        {
-            return new CheckAwardedBadgesRequest(this);
-        }
-
-        public bool Equals(CheckAwardedBadgesRequest other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            return size;
-        }
-
-        public void MergeFrom(CheckAwardedBadgesRequest other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CheckAwardedBadgesRequest);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    /// <summary>
-    ///     Confirm if this is correct, I think that it should be "repeated AwardedBadge awarded_badges" or something like
-    ///     that.
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CheckAwardedBadgesResponse : pb::IMessage<CheckAwardedBadgesResponse>
-    {
-        /// <summary>Field number for the "success" field.</summary>
-        public const int SuccessFieldNumber = 1;
-
-        /// <summary>Field number for the "awarded_badges" field.</summary>
-        public const int AwardedBadgesFieldNumber = 2;
-
-        /// <summary>Field number for the "awarded_badge_levels" field.</summary>
-        public const int AwardedBadgeLevelsFieldNumber = 3;
-
-        private static readonly pb::MessageParser<CheckAwardedBadgesResponse> _parser =
-            new pb::MessageParser<CheckAwardedBadgesResponse>(() => new CheckAwardedBadgesResponse());
-
-        private static readonly pb::FieldCodec<global::AllEnum.BadgeType> _repeated_awardedBadges_codec
-            = pb::FieldCodec.ForEnum(18, x => (int)x, x => (global::AllEnum.BadgeType)x);
-
-        private static readonly pb::FieldCodec<int> _repeated_awardedBadgeLevels_codec
-            = pb::FieldCodec.ForInt32(26);
-
-        private readonly pbc::RepeatedField<int> awardedBadgeLevels_ = new pbc::RepeatedField<int>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.BadgeType> awardedBadges_ =
-            new pbc::RepeatedField<global::AllEnum.BadgeType>();
-
-        private bool success_;
-
-        public CheckAwardedBadgesResponse()
-        {
-            OnConstruction();
-        }
-
-        public CheckAwardedBadgesResponse(CheckAwardedBadgesResponse other) : this()
-        {
-            success_ = other.success_;
-            awardedBadges_ = other.awardedBadges_.Clone();
-            awardedBadgeLevels_ = other.awardedBadgeLevels_.Clone();
-        }
-
-        public static pb::MessageParser<CheckAwardedBadgesResponse> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[64]; }
-        }
-
-        public bool Success
-        {
-            get { return success_; }
-            set { success_ = value; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.BadgeType> AwardedBadges
-        {
-            get { return awardedBadges_; }
-        }
-
-        public pbc::RepeatedField<int> AwardedBadgeLevels
-        {
-            get { return awardedBadgeLevels_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CheckAwardedBadgesResponse Clone()
-        {
-            return new CheckAwardedBadgesResponse(this);
-        }
-
-        public bool Equals(CheckAwardedBadgesResponse other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Success != other.Success) return false;
-            if (!awardedBadges_.Equals(other.awardedBadges_)) return false;
-            if (!awardedBadgeLevels_.Equals(other.awardedBadgeLevels_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Success != false)
-            {
-                output.WriteRawTag(8);
-                output.WriteBool(Success);
-            }
-            awardedBadges_.WriteTo(output, _repeated_awardedBadges_codec);
-            awardedBadgeLevels_.WriteTo(output, _repeated_awardedBadgeLevels_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Success != false)
-            {
-                size += 1 + 1;
-            }
-            size += awardedBadges_.CalculateSize(_repeated_awardedBadges_codec);
-            size += awardedBadgeLevels_.CalculateSize(_repeated_awardedBadgeLevels_codec);
-            return size;
-        }
-
-        public void MergeFrom(CheckAwardedBadgesResponse other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Success != false)
-            {
-                Success = other.Success;
-            }
-            awardedBadges_.Add(other.awardedBadges_);
-            awardedBadgeLevels_.Add(other.awardedBadgeLevels_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Success = input.ReadBool();
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            awardedBadges_.AddEntriesFrom(input, _repeated_awardedBadges_codec);
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            awardedBadgeLevels_.AddEntriesFrom(input, _repeated_awardedBadgeLevels_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CheckAwardedBadgesResponse);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Success != false) hash ^= Success.GetHashCode();
-            hash ^= awardedBadges_.GetHashCode();
-            hash ^= awardedBadgeLevels_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EquippedBadgeSettings : pb::IMessage<EquippedBadgeSettings>
-    {
-        /// <summary>Field number for the "equip_badge_cooldown_ms" field.</summary>
-        public const int EquipBadgeCooldownMsFieldNumber = 1;
-
-        /// <summary>Field number for the "catch_probability_bonus" field.</summary>
-        public const int CatchProbabilityBonusFieldNumber = 2;
-
-        /// <summary>Field number for the "flee_probability_bonus" field.</summary>
-        public const int FleeProbabilityBonusFieldNumber = 3;
-
-        private static readonly pb::MessageParser<EquippedBadgeSettings> _parser =
-            new pb::MessageParser<EquippedBadgeSettings>(() => new EquippedBadgeSettings());
-
-        private static readonly pb::FieldCodec<float> _repeated_catchProbabilityBonus_codec
-            = pb::FieldCodec.ForFloat(18);
-
-        private static readonly pb::FieldCodec<float> _repeated_fleeProbabilityBonus_codec
-            = pb::FieldCodec.ForFloat(26);
-
-        private readonly pbc::RepeatedField<float> catchProbabilityBonus_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> fleeProbabilityBonus_ = new pbc::RepeatedField<float>();
-        private long equipBadgeCooldownMs_;
-
-        public EquippedBadgeSettings()
-        {
-            OnConstruction();
-        }
-
-        public EquippedBadgeSettings(EquippedBadgeSettings other) : this()
-        {
-            equipBadgeCooldownMs_ = other.equipBadgeCooldownMs_;
-            catchProbabilityBonus_ = other.catchProbabilityBonus_.Clone();
-            fleeProbabilityBonus_ = other.fleeProbabilityBonus_.Clone();
-        }
-
-        public static pb::MessageParser<EquippedBadgeSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[65]; }
-        }
-
-        public long EquipBadgeCooldownMs
-        {
-            get { return equipBadgeCooldownMs_; }
-            set { equipBadgeCooldownMs_ = value; }
-        }
-
-        public pbc::RepeatedField<float> CatchProbabilityBonus
-        {
-            get { return catchProbabilityBonus_; }
-        }
-
-        public pbc::RepeatedField<float> FleeProbabilityBonus
-        {
-            get { return fleeProbabilityBonus_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EquippedBadgeSettings Clone()
-        {
-            return new EquippedBadgeSettings(this);
-        }
-
-        public bool Equals(EquippedBadgeSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (EquipBadgeCooldownMs != other.EquipBadgeCooldownMs) return false;
-            if (!catchProbabilityBonus_.Equals(other.catchProbabilityBonus_)) return false;
-            if (!fleeProbabilityBonus_.Equals(other.fleeProbabilityBonus_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (EquipBadgeCooldownMs != 0L)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt64(EquipBadgeCooldownMs);
-            }
-            catchProbabilityBonus_.WriteTo(output, _repeated_catchProbabilityBonus_codec);
-            fleeProbabilityBonus_.WriteTo(output, _repeated_fleeProbabilityBonus_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (EquipBadgeCooldownMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(EquipBadgeCooldownMs);
-            }
-            size += catchProbabilityBonus_.CalculateSize(_repeated_catchProbabilityBonus_codec);
-            size += fleeProbabilityBonus_.CalculateSize(_repeated_fleeProbabilityBonus_codec);
-            return size;
-        }
-
-        public void MergeFrom(EquippedBadgeSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.EquipBadgeCooldownMs != 0L)
-            {
-                EquipBadgeCooldownMs = other.EquipBadgeCooldownMs;
-            }
-            catchProbabilityBonus_.Add(other.catchProbabilityBonus_);
-            fleeProbabilityBonus_.Add(other.fleeProbabilityBonus_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            EquipBadgeCooldownMs = input.ReadInt64();
-                            break;
-                        }
-                    case 18:
-                    case 21:
-                        {
-                            catchProbabilityBonus_.AddEntriesFrom(input, _repeated_catchProbabilityBonus_codec);
-                            break;
-                        }
-                    case 26:
-                    case 29:
-                        {
-                            fleeProbabilityBonus_.AddEntriesFrom(input, _repeated_fleeProbabilityBonus_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EquippedBadgeSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (EquipBadgeCooldownMs != 0L) hash ^= EquipBadgeCooldownMs.GetHashCode();
-            hash ^= catchProbabilityBonus_.GetHashCode();
-            hash ^= fleeProbabilityBonus_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PokemonUpgradeSettings : pb::IMessage<PokemonUpgradeSettings>
-    {
-        /// <summary>Field number for the "upgrades_per_level" field.</summary>
-        public const int UpgradesPerLevelFieldNumber = 1;
-
-        /// <summary>Field number for the "allowed_levels_above_player" field.</summary>
-        public const int AllowedLevelsAbovePlayerFieldNumber = 2;
-
-        /// <summary>Field number for the "candy_cost" field.</summary>
-        public const int CandyCostFieldNumber = 3;
-
-        /// <summary>Field number for the "stardust_cost" field.</summary>
-        public const int StardustCostFieldNumber = 4;
-
-        private static readonly pb::MessageParser<PokemonUpgradeSettings> _parser =
-            new pb::MessageParser<PokemonUpgradeSettings>(() => new PokemonUpgradeSettings());
-
-        private static readonly pb::FieldCodec<int> _repeated_candyCost_codec
-            = pb::FieldCodec.ForInt32(26);
-
-        private static readonly pb::FieldCodec<int> _repeated_stardustCost_codec
-            = pb::FieldCodec.ForInt32(34);
-
-        private readonly pbc::RepeatedField<int> candyCost_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> stardustCost_ = new pbc::RepeatedField<int>();
-        private int allowedLevelsAbovePlayer_;
-        private int upgradesPerLevel_;
-
-        public PokemonUpgradeSettings()
-        {
-            OnConstruction();
-        }
-
-        public PokemonUpgradeSettings(PokemonUpgradeSettings other) : this()
-        {
-            upgradesPerLevel_ = other.upgradesPerLevel_;
-            allowedLevelsAbovePlayer_ = other.allowedLevelsAbovePlayer_;
-            candyCost_ = other.candyCost_.Clone();
-            stardustCost_ = other.stardustCost_.Clone();
-        }
-
-        public static pb::MessageParser<PokemonUpgradeSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[66]; }
-        }
-
-        public int UpgradesPerLevel
-        {
-            get { return upgradesPerLevel_; }
-            set { upgradesPerLevel_ = value; }
-        }
-
-        public int AllowedLevelsAbovePlayer
-        {
-            get { return allowedLevelsAbovePlayer_; }
-            set { allowedLevelsAbovePlayer_ = value; }
-        }
-
-        public pbc::RepeatedField<int> CandyCost
-        {
-            get { return candyCost_; }
-        }
-
-        public pbc::RepeatedField<int> StardustCost
-        {
-            get { return stardustCost_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PokemonUpgradeSettings Clone()
-        {
-            return new PokemonUpgradeSettings(this);
-        }
-
-        public bool Equals(PokemonUpgradeSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (UpgradesPerLevel != other.UpgradesPerLevel) return false;
-            if (AllowedLevelsAbovePlayer != other.AllowedLevelsAbovePlayer) return false;
-            if (!candyCost_.Equals(other.candyCost_)) return false;
-            if (!stardustCost_.Equals(other.stardustCost_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (UpgradesPerLevel != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(UpgradesPerLevel);
-            }
-            if (AllowedLevelsAbovePlayer != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(AllowedLevelsAbovePlayer);
-            }
-            candyCost_.WriteTo(output, _repeated_candyCost_codec);
-            stardustCost_.WriteTo(output, _repeated_stardustCost_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (UpgradesPerLevel != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(UpgradesPerLevel);
-            }
-            if (AllowedLevelsAbovePlayer != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(AllowedLevelsAbovePlayer);
-            }
-            size += candyCost_.CalculateSize(_repeated_candyCost_codec);
-            size += stardustCost_.CalculateSize(_repeated_stardustCost_codec);
-            return size;
-        }
-
-        public void MergeFrom(PokemonUpgradeSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.UpgradesPerLevel != 0)
-            {
-                UpgradesPerLevel = other.UpgradesPerLevel;
-            }
-            if (other.AllowedLevelsAbovePlayer != 0)
-            {
-                AllowedLevelsAbovePlayer = other.AllowedLevelsAbovePlayer;
-            }
-            candyCost_.Add(other.candyCost_);
-            stardustCost_.Add(other.stardustCost_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            UpgradesPerLevel = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            AllowedLevelsAbovePlayer = input.ReadInt32();
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            candyCost_.AddEntriesFrom(input, _repeated_candyCost_codec);
-                            break;
-                        }
-                    case 34:
-                    case 32:
-                        {
-                            stardustCost_.AddEntriesFrom(input, _repeated_stardustCost_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PokemonUpgradeSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (UpgradesPerLevel != 0) hash ^= UpgradesPerLevel.GetHashCode();
-            if (AllowedLevelsAbovePlayer != 0) hash ^= AllowedLevelsAbovePlayer.GetHashCode();
-            hash ^= candyCost_.GetHashCode();
-            hash ^= stardustCost_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class IapSettings : pb::IMessage<IapSettings>
-    {
-        /// <summary>Field number for the "daily_bonus_coins" field.</summary>
-        public const int DailyBonusCoinsFieldNumber = 1;
-
-        /// <summary>Field number for the "daily_defender_bonus_per_pokemon" field.</summary>
-        public const int DailyDefenderBonusPerPokemonFieldNumber = 2;
-
-        /// <summary>Field number for the "daily_defender_bonus_max_defenders" field.</summary>
-        public const int DailyDefenderBonusMaxDefendersFieldNumber = 3;
-
-        /// <summary>Field number for the "daily_defender_bonus_currency" field.</summary>
-        public const int DailyDefenderBonusCurrencyFieldNumber = 4;
-
-        /// <summary>Field number for the "min_time_between_claims_ms" field.</summary>
-        public const int MinTimeBetweenClaimsMsFieldNumber = 5;
-
-        /// <summary>Field number for the "daily_bonus_enabled" field.</summary>
-        public const int DailyBonusEnabledFieldNumber = 6;
-
-        /// <summary>Field number for the "daily_defender_bonus_enabled" field.</summary>
-        public const int DailyDefenderBonusEnabledFieldNumber = 7;
-
-        private static readonly pb::MessageParser<IapSettings> _parser =
-            new pb::MessageParser<IapSettings>(() => new IapSettings());
-
-        private static readonly pb::FieldCodec<int> _repeated_dailyDefenderBonusPerPokemon_codec
-            = pb::FieldCodec.ForInt32(18);
-
-        private static readonly pb::FieldCodec<string> _repeated_dailyDefenderBonusCurrency_codec
-            = pb::FieldCodec.ForString(34);
-
-        private readonly pbc::RepeatedField<string> dailyDefenderBonusCurrency_ = new pbc::RepeatedField<string>();
-        private readonly pbc::RepeatedField<int> dailyDefenderBonusPerPokemon_ = new pbc::RepeatedField<int>();
-        private int dailyBonusCoins_;
-        private bool dailyBonusEnabled_;
-        private bool dailyDefenderBonusEnabled_;
-        private int dailyDefenderBonusMaxDefenders_;
-        private long minTimeBetweenClaimsMs_;
-
-        public IapSettings()
-        {
-            OnConstruction();
-        }
-
-        public IapSettings(IapSettings other) : this()
-        {
-            dailyBonusCoins_ = other.dailyBonusCoins_;
-            dailyDefenderBonusPerPokemon_ = other.dailyDefenderBonusPerPokemon_.Clone();
-            dailyDefenderBonusMaxDefenders_ = other.dailyDefenderBonusMaxDefenders_;
-            dailyDefenderBonusCurrency_ = other.dailyDefenderBonusCurrency_.Clone();
-            minTimeBetweenClaimsMs_ = other.minTimeBetweenClaimsMs_;
-            dailyBonusEnabled_ = other.dailyBonusEnabled_;
-            dailyDefenderBonusEnabled_ = other.dailyDefenderBonusEnabled_;
-        }
-
-        public static pb::MessageParser<IapSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[67]; }
-        }
-
-        public int DailyBonusCoins
-        {
-            get { return dailyBonusCoins_; }
-            set { dailyBonusCoins_ = value; }
-        }
-
-        public pbc::RepeatedField<int> DailyDefenderBonusPerPokemon
-        {
-            get { return dailyDefenderBonusPerPokemon_; }
-        }
-
-        public int DailyDefenderBonusMaxDefenders
-        {
-            get { return dailyDefenderBonusMaxDefenders_; }
-            set { dailyDefenderBonusMaxDefenders_ = value; }
-        }
-
-        public pbc::RepeatedField<string> DailyDefenderBonusCurrency
-        {
-            get { return dailyDefenderBonusCurrency_; }
-        }
-
-        public long MinTimeBetweenClaimsMs
-        {
-            get { return minTimeBetweenClaimsMs_; }
-            set { minTimeBetweenClaimsMs_ = value; }
-        }
-
-        public bool DailyBonusEnabled
-        {
-            get { return dailyBonusEnabled_; }
-            set { dailyBonusEnabled_ = value; }
-        }
-
-        public bool DailyDefenderBonusEnabled
-        {
-            get { return dailyDefenderBonusEnabled_; }
-            set { dailyDefenderBonusEnabled_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public IapSettings Clone()
-        {
-            return new IapSettings(this);
-        }
-
-        public bool Equals(IapSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (DailyBonusCoins != other.DailyBonusCoins) return false;
-            if (!dailyDefenderBonusPerPokemon_.Equals(other.dailyDefenderBonusPerPokemon_)) return false;
-            if (DailyDefenderBonusMaxDefenders != other.DailyDefenderBonusMaxDefenders) return false;
-            if (!dailyDefenderBonusCurrency_.Equals(other.dailyDefenderBonusCurrency_)) return false;
-            if (MinTimeBetweenClaimsMs != other.MinTimeBetweenClaimsMs) return false;
-            if (DailyBonusEnabled != other.DailyBonusEnabled) return false;
-            if (DailyDefenderBonusEnabled != other.DailyDefenderBonusEnabled) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (DailyBonusCoins != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(DailyBonusCoins);
-            }
-            dailyDefenderBonusPerPokemon_.WriteTo(output, _repeated_dailyDefenderBonusPerPokemon_codec);
-            if (DailyDefenderBonusMaxDefenders != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(DailyDefenderBonusMaxDefenders);
-            }
-            dailyDefenderBonusCurrency_.WriteTo(output, _repeated_dailyDefenderBonusCurrency_codec);
-            if (MinTimeBetweenClaimsMs != 0L)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt64(MinTimeBetweenClaimsMs);
-            }
-            if (DailyBonusEnabled != false)
-            {
-                output.WriteRawTag(48);
-                output.WriteBool(DailyBonusEnabled);
-            }
-            if (DailyDefenderBonusEnabled != false)
-            {
-                output.WriteRawTag(56);
-                output.WriteBool(DailyDefenderBonusEnabled);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (DailyBonusCoins != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DailyBonusCoins);
-            }
-            size += dailyDefenderBonusPerPokemon_.CalculateSize(_repeated_dailyDefenderBonusPerPokemon_codec);
-            if (DailyDefenderBonusMaxDefenders != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DailyDefenderBonusMaxDefenders);
-            }
-            size += dailyDefenderBonusCurrency_.CalculateSize(_repeated_dailyDefenderBonusCurrency_codec);
-            if (MinTimeBetweenClaimsMs != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(MinTimeBetweenClaimsMs);
-            }
-            if (DailyBonusEnabled != false)
-            {
-                size += 1 + 1;
-            }
-            if (DailyDefenderBonusEnabled != false)
-            {
-                size += 1 + 1;
-            }
-            return size;
-        }
-
-        public void MergeFrom(IapSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.DailyBonusCoins != 0)
-            {
-                DailyBonusCoins = other.DailyBonusCoins;
-            }
-            dailyDefenderBonusPerPokemon_.Add(other.dailyDefenderBonusPerPokemon_);
-            if (other.DailyDefenderBonusMaxDefenders != 0)
-            {
-                DailyDefenderBonusMaxDefenders = other.DailyDefenderBonusMaxDefenders;
-            }
-            dailyDefenderBonusCurrency_.Add(other.dailyDefenderBonusCurrency_);
-            if (other.MinTimeBetweenClaimsMs != 0L)
-            {
-                MinTimeBetweenClaimsMs = other.MinTimeBetweenClaimsMs;
-            }
-            if (other.DailyBonusEnabled != false)
-            {
-                DailyBonusEnabled = other.DailyBonusEnabled;
-            }
-            if (other.DailyDefenderBonusEnabled != false)
-            {
-                DailyDefenderBonusEnabled = other.DailyDefenderBonusEnabled;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            DailyBonusCoins = input.ReadInt32();
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            dailyDefenderBonusPerPokemon_.AddEntriesFrom(input, _repeated_dailyDefenderBonusPerPokemon_codec);
-                            break;
-                        }
-                    case 24:
-                        {
-                            DailyDefenderBonusMaxDefenders = input.ReadInt32();
-                            break;
-                        }
-                    case 34:
-                        {
-                            dailyDefenderBonusCurrency_.AddEntriesFrom(input, _repeated_dailyDefenderBonusCurrency_codec);
-                            break;
-                        }
-                    case 40:
-                        {
-                            MinTimeBetweenClaimsMs = input.ReadInt64();
-                            break;
-                        }
-                    case 48:
-                        {
-                            DailyBonusEnabled = input.ReadBool();
-                            break;
-                        }
-                    case 56:
-                        {
-                            DailyDefenderBonusEnabled = input.ReadBool();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as IapSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (DailyBonusCoins != 0) hash ^= DailyBonusCoins.GetHashCode();
-            hash ^= dailyDefenderBonusPerPokemon_.GetHashCode();
-            if (DailyDefenderBonusMaxDefenders != 0) hash ^= DailyDefenderBonusMaxDefenders.GetHashCode();
-            hash ^= dailyDefenderBonusCurrency_.GetHashCode();
-            if (MinTimeBetweenClaimsMs != 0L) hash ^= MinTimeBetweenClaimsMs.GetHashCode();
-            if (DailyBonusEnabled != false) hash ^= DailyBonusEnabled.GetHashCode();
-            if (DailyDefenderBonusEnabled != false) hash ^= DailyDefenderBonusEnabled.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class IapItemDisplay : pb::IMessage<IapItemDisplay>
-    {
-        /// <summary>Field number for the "sku" field.</summary>
-        public const int SkuFieldNumber = 1;
-
-        /// <summary>Field number for the "category" field.</summary>
-        public const int CategoryFieldNumber = 2;
-
-        /// <summary>Field number for the "sort_order" field.</summary>
-        public const int SortOrderFieldNumber = 3;
-
-        /// <summary>Field number for the "item_ids" field.</summary>
-        public const int ItemIdsFieldNumber = 4;
-
-        /// <summary>Field number for the "counts" field.</summary>
-        public const int CountsFieldNumber = 5;
-
-        private static readonly pb::MessageParser<IapItemDisplay> _parser =
-            new pb::MessageParser<IapItemDisplay>(() => new IapItemDisplay());
-
-        private static readonly pb::FieldCodec<global::AllEnum.ItemId> _repeated_itemIds_codec
-            = pb::FieldCodec.ForEnum(34, x => (int)x, x => (global::AllEnum.ItemId)x);
-
-        private static readonly pb::FieldCodec<int> _repeated_counts_codec
-            = pb::FieldCodec.ForInt32(42);
-
-        private readonly pbc::RepeatedField<int> counts_ = new pbc::RepeatedField<int>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.ItemId> itemIds_ =
-            new pbc::RepeatedField<global::AllEnum.ItemId>();
-
-        private global::AllEnum.HoloIapItemCategory category_ = 0;
-        private string sku_ = "";
-        private int sortOrder_;
-
-        public IapItemDisplay()
-        {
-            OnConstruction();
-        }
-
-        public IapItemDisplay(IapItemDisplay other) : this()
-        {
-            sku_ = other.sku_;
-            category_ = other.category_;
-            sortOrder_ = other.sortOrder_;
-            itemIds_ = other.itemIds_.Clone();
-            counts_ = other.counts_.Clone();
-        }
-
-        public static pb::MessageParser<IapItemDisplay> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[68]; }
-        }
-
-        public string Sku
-        {
-            get { return sku_; }
-            set { sku_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::AllEnum.HoloIapItemCategory Category
-        {
-            get { return category_; }
-            set { category_ = value; }
-        }
-
-        public int SortOrder
-        {
-            get { return sortOrder_; }
-            set { sortOrder_ = value; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.ItemId> ItemIds
-        {
-            get { return itemIds_; }
-        }
-
-        public pbc::RepeatedField<int> Counts
-        {
-            get { return counts_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public IapItemDisplay Clone()
-        {
-            return new IapItemDisplay(this);
-        }
-
-        public bool Equals(IapItemDisplay other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Sku != other.Sku) return false;
-            if (Category != other.Category) return false;
-            if (SortOrder != other.SortOrder) return false;
-            if (!itemIds_.Equals(other.itemIds_)) return false;
-            if (!counts_.Equals(other.counts_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Sku.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(Sku);
-            }
-            if (Category != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)Category);
-            }
-            if (SortOrder != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(SortOrder);
-            }
-            itemIds_.WriteTo(output, _repeated_itemIds_codec);
-            counts_.WriteTo(output, _repeated_counts_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Sku.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(Sku);
-            }
-            if (Category != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Category);
-            }
-            if (SortOrder != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(SortOrder);
-            }
-            size += itemIds_.CalculateSize(_repeated_itemIds_codec);
-            size += counts_.CalculateSize(_repeated_counts_codec);
-            return size;
-        }
-
-        public void MergeFrom(IapItemDisplay other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Sku.Length != 0)
-            {
-                Sku = other.Sku;
-            }
-            if (other.Category != 0)
-            {
-                Category = other.Category;
-            }
-            if (other.SortOrder != 0)
-            {
-                SortOrder = other.SortOrder;
-            }
-            itemIds_.Add(other.itemIds_);
-            counts_.Add(other.counts_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            Sku = input.ReadString();
-                            break;
-                        }
-                    case 16:
-                        {
-                            category_ = (global::AllEnum.HoloIapItemCategory)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            SortOrder = input.ReadInt32();
-                            break;
-                        }
-                    case 34:
-                    case 32:
-                        {
-                            itemIds_.AddEntriesFrom(input, _repeated_itemIds_codec);
-                            break;
-                        }
-                    case 42:
-                    case 40:
-                        {
-                            counts_.AddEntriesFrom(input, _repeated_counts_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as IapItemDisplay);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Sku.Length != 0) hash ^= Sku.GetHashCode();
-            if (Category != 0) hash ^= Category.GetHashCode();
-            if (SortOrder != 0) hash ^= SortOrder.GetHashCode();
-            hash ^= itemIds_.GetHashCode();
-            hash ^= counts_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EncounterSettings : pb::IMessage<EncounterSettings>
-    {
-        /// <summary>Field number for the "spin_bonus_threshold" field.</summary>
-        public const int SpinBonusThresholdFieldNumber = 1;
-
-        /// <summary>Field number for the "excellent_throw_threshold" field.</summary>
-        public const int ExcellentThrowThresholdFieldNumber = 2;
-
-        /// <summary>Field number for the "great_throw_threshold" field.</summary>
-        public const int GreatThrowThresholdFieldNumber = 3;
-
-        /// <summary>Field number for the "nice_throw_threshold" field.</summary>
-        public const int NiceThrowThresholdFieldNumber = 4;
-
-        /// <summary>Field number for the "milestone_threshold" field.</summary>
-        public const int MilestoneThresholdFieldNumber = 5;
-
-        private static readonly pb::MessageParser<EncounterSettings> _parser =
-            new pb::MessageParser<EncounterSettings>(() => new EncounterSettings());
-
-        private float excellentThrowThreshold_;
-        private float greatThrowThreshold_;
-        private int milestoneThreshold_;
-        private float niceThrowThreshold_;
-        private float spinBonusThreshold_;
-
-        public EncounterSettings()
-        {
-            OnConstruction();
-        }
-
-        public EncounterSettings(EncounterSettings other) : this()
-        {
-            spinBonusThreshold_ = other.spinBonusThreshold_;
-            excellentThrowThreshold_ = other.excellentThrowThreshold_;
-            greatThrowThreshold_ = other.greatThrowThreshold_;
-            niceThrowThreshold_ = other.niceThrowThreshold_;
-            milestoneThreshold_ = other.milestoneThreshold_;
-        }
-
-        public static pb::MessageParser<EncounterSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[69]; }
-        }
-
-        public float SpinBonusThreshold
-        {
-            get { return spinBonusThreshold_; }
-            set { spinBonusThreshold_ = value; }
-        }
-
-        public float ExcellentThrowThreshold
-        {
-            get { return excellentThrowThreshold_; }
-            set { excellentThrowThreshold_ = value; }
-        }
-
-        public float GreatThrowThreshold
-        {
-            get { return greatThrowThreshold_; }
-            set { greatThrowThreshold_ = value; }
-        }
-
-        public float NiceThrowThreshold
-        {
-            get { return niceThrowThreshold_; }
-            set { niceThrowThreshold_ = value; }
-        }
-
-        public int MilestoneThreshold
-        {
-            get { return milestoneThreshold_; }
-            set { milestoneThreshold_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EncounterSettings Clone()
-        {
-            return new EncounterSettings(this);
-        }
-
-        public bool Equals(EncounterSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (SpinBonusThreshold != other.SpinBonusThreshold) return false;
-            if (ExcellentThrowThreshold != other.ExcellentThrowThreshold) return false;
-            if (GreatThrowThreshold != other.GreatThrowThreshold) return false;
-            if (NiceThrowThreshold != other.NiceThrowThreshold) return false;
-            if (MilestoneThreshold != other.MilestoneThreshold) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (SpinBonusThreshold != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(SpinBonusThreshold);
-            }
-            if (ExcellentThrowThreshold != 0F)
-            {
-                output.WriteRawTag(21);
-                output.WriteFloat(ExcellentThrowThreshold);
-            }
-            if (GreatThrowThreshold != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(GreatThrowThreshold);
-            }
-            if (NiceThrowThreshold != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(NiceThrowThreshold);
-            }
-            if (MilestoneThreshold != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(MilestoneThreshold);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (SpinBonusThreshold != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (ExcellentThrowThreshold != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (GreatThrowThreshold != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (NiceThrowThreshold != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (MilestoneThreshold != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MilestoneThreshold);
-            }
-            return size;
-        }
-
-        public void MergeFrom(EncounterSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.SpinBonusThreshold != 0F)
-            {
-                SpinBonusThreshold = other.SpinBonusThreshold;
-            }
-            if (other.ExcellentThrowThreshold != 0F)
-            {
-                ExcellentThrowThreshold = other.ExcellentThrowThreshold;
-            }
-            if (other.GreatThrowThreshold != 0F)
-            {
-                GreatThrowThreshold = other.GreatThrowThreshold;
-            }
-            if (other.NiceThrowThreshold != 0F)
-            {
-                NiceThrowThreshold = other.NiceThrowThreshold;
-            }
-            if (other.MilestoneThreshold != 0)
-            {
-                MilestoneThreshold = other.MilestoneThreshold;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            SpinBonusThreshold = input.ReadFloat();
-                            break;
-                        }
-                    case 21:
-                        {
-                            ExcellentThrowThreshold = input.ReadFloat();
-                            break;
-                        }
-                    case 29:
-                        {
-                            GreatThrowThreshold = input.ReadFloat();
-                            break;
-                        }
-                    case 37:
-                        {
-                            NiceThrowThreshold = input.ReadFloat();
-                            break;
-                        }
-                    case 40:
-                        {
-                            MilestoneThreshold = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EncounterSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (SpinBonusThreshold != 0F) hash ^= SpinBonusThreshold.GetHashCode();
-            if (ExcellentThrowThreshold != 0F) hash ^= ExcellentThrowThreshold.GetHashCode();
-            if (GreatThrowThreshold != 0F) hash ^= GreatThrowThreshold.GetHashCode();
-            if (NiceThrowThreshold != 0F) hash ^= NiceThrowThreshold.GetHashCode();
-            if (MilestoneThreshold != 0) hash ^= MilestoneThreshold.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GymBattleSettings : pb::IMessage<GymBattleSettings>
-    {
-        /// <summary>Field number for the "energy_per_sec" field.</summary>
-        public const int EnergyPerSecFieldNumber = 1;
-
-        /// <summary>Field number for the "dodge_energy_cost" field.</summary>
-        public const int DodgeEnergyCostFieldNumber = 2;
-
-        /// <summary>Field number for the "retarget_seconds" field.</summary>
-        public const int RetargetSecondsFieldNumber = 3;
-
-        /// <summary>Field number for the "enemy_attack_interval" field.</summary>
-        public const int EnemyAttackIntervalFieldNumber = 4;
-
-        /// <summary>Field number for the "attack_server_interval" field.</summary>
-        public const int AttackServerIntervalFieldNumber = 5;
-
-        /// <summary>Field number for the "round_duration_seconds" field.</summary>
-        public const int RoundDurationSecondsFieldNumber = 6;
-
-        /// <summary>Field number for the "bonus_time_per_ally_seconds" field.</summary>
-        public const int BonusTimePerAllySecondsFieldNumber = 7;
-
-        /// <summary>Field number for the "maximum_attackers_per_battle" field.</summary>
-        public const int MaximumAttackersPerBattleFieldNumber = 8;
-
-        /// <summary>Field number for the "same_type_attack_bonus_multiplier" field.</summary>
-        public const int SameTypeAttackBonusMultiplierFieldNumber = 9;
-
-        /// <summary>Field number for the "maximum_energy" field.</summary>
-        public const int MaximumEnergyFieldNumber = 10;
-
-        /// <summary>Field number for the "energy_delta_per_health_lost" field.</summary>
-        public const int EnergyDeltaPerHealthLostFieldNumber = 11;
-
-        /// <summary>Field number for the "dodge_duration_ms" field.</summary>
-        public const int DodgeDurationMsFieldNumber = 12;
-
-        /// <summary>Field number for the "minimum_player_level" field.</summary>
-        public const int MinimumPlayerLevelFieldNumber = 13;
-
-        /// <summary>Field number for the "swap_duration_ms" field.</summary>
-        public const int SwapDurationMsFieldNumber = 14;
-
-        private static readonly pb::MessageParser<GymBattleSettings> _parser =
-            new pb::MessageParser<GymBattleSettings>(() => new GymBattleSettings());
-
-        private float attackServerInterval_;
-        private float bonusTimePerAllySeconds_;
-        private int dodgeDurationMs_;
-        private float dodgeEnergyCost_;
-        private float enemyAttackInterval_;
-        private float energyDeltaPerHealthLost_;
-        private float energyPerSec_;
-        private int maximumAttackersPerBattle_;
-        private int maximumEnergy_;
-        private int minimumPlayerLevel_;
-        private float retargetSeconds_;
-        private float roundDurationSeconds_;
-        private float sameTypeAttackBonusMultiplier_;
-        private int swapDurationMs_;
-
-        public GymBattleSettings()
-        {
-            OnConstruction();
-        }
-
-        public GymBattleSettings(GymBattleSettings other) : this()
-        {
-            energyPerSec_ = other.energyPerSec_;
-            dodgeEnergyCost_ = other.dodgeEnergyCost_;
-            retargetSeconds_ = other.retargetSeconds_;
-            enemyAttackInterval_ = other.enemyAttackInterval_;
-            attackServerInterval_ = other.attackServerInterval_;
-            roundDurationSeconds_ = other.roundDurationSeconds_;
-            bonusTimePerAllySeconds_ = other.bonusTimePerAllySeconds_;
-            maximumAttackersPerBattle_ = other.maximumAttackersPerBattle_;
-            sameTypeAttackBonusMultiplier_ = other.sameTypeAttackBonusMultiplier_;
-            maximumEnergy_ = other.maximumEnergy_;
-            energyDeltaPerHealthLost_ = other.energyDeltaPerHealthLost_;
-            dodgeDurationMs_ = other.dodgeDurationMs_;
-            minimumPlayerLevel_ = other.minimumPlayerLevel_;
-            swapDurationMs_ = other.swapDurationMs_;
-        }
-
-        public static pb::MessageParser<GymBattleSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[70]; }
-        }
-
-        public float EnergyPerSec
-        {
-            get { return energyPerSec_; }
-            set { energyPerSec_ = value; }
-        }
-
-        public float DodgeEnergyCost
-        {
-            get { return dodgeEnergyCost_; }
-            set { dodgeEnergyCost_ = value; }
-        }
-
-        public float RetargetSeconds
-        {
-            get { return retargetSeconds_; }
-            set { retargetSeconds_ = value; }
-        }
-
-        public float EnemyAttackInterval
-        {
-            get { return enemyAttackInterval_; }
-            set { enemyAttackInterval_ = value; }
-        }
-
-        public float AttackServerInterval
-        {
-            get { return attackServerInterval_; }
-            set { attackServerInterval_ = value; }
-        }
-
-        public float RoundDurationSeconds
-        {
-            get { return roundDurationSeconds_; }
-            set { roundDurationSeconds_ = value; }
-        }
-
-        public float BonusTimePerAllySeconds
-        {
-            get { return bonusTimePerAllySeconds_; }
-            set { bonusTimePerAllySeconds_ = value; }
-        }
-
-        public int MaximumAttackersPerBattle
-        {
-            get { return maximumAttackersPerBattle_; }
-            set { maximumAttackersPerBattle_ = value; }
-        }
-
-        public float SameTypeAttackBonusMultiplier
-        {
-            get { return sameTypeAttackBonusMultiplier_; }
-            set { sameTypeAttackBonusMultiplier_ = value; }
-        }
-
-        public int MaximumEnergy
-        {
-            get { return maximumEnergy_; }
-            set { maximumEnergy_ = value; }
-        }
-
-        public float EnergyDeltaPerHealthLost
-        {
-            get { return energyDeltaPerHealthLost_; }
-            set { energyDeltaPerHealthLost_ = value; }
-        }
-
-        public int DodgeDurationMs
-        {
-            get { return dodgeDurationMs_; }
-            set { dodgeDurationMs_ = value; }
-        }
-
-        public int MinimumPlayerLevel
-        {
-            get { return minimumPlayerLevel_; }
-            set { minimumPlayerLevel_ = value; }
-        }
-
-        public int SwapDurationMs
-        {
-            get { return swapDurationMs_; }
-            set { swapDurationMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GymBattleSettings Clone()
-        {
-            return new GymBattleSettings(this);
-        }
-
-        public bool Equals(GymBattleSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (EnergyPerSec != other.EnergyPerSec) return false;
-            if (DodgeEnergyCost != other.DodgeEnergyCost) return false;
-            if (RetargetSeconds != other.RetargetSeconds) return false;
-            if (EnemyAttackInterval != other.EnemyAttackInterval) return false;
-            if (AttackServerInterval != other.AttackServerInterval) return false;
-            if (RoundDurationSeconds != other.RoundDurationSeconds) return false;
-            if (BonusTimePerAllySeconds != other.BonusTimePerAllySeconds) return false;
-            if (MaximumAttackersPerBattle != other.MaximumAttackersPerBattle) return false;
-            if (SameTypeAttackBonusMultiplier != other.SameTypeAttackBonusMultiplier) return false;
-            if (MaximumEnergy != other.MaximumEnergy) return false;
-            if (EnergyDeltaPerHealthLost != other.EnergyDeltaPerHealthLost) return false;
-            if (DodgeDurationMs != other.DodgeDurationMs) return false;
-            if (MinimumPlayerLevel != other.MinimumPlayerLevel) return false;
-            if (SwapDurationMs != other.SwapDurationMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (EnergyPerSec != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(EnergyPerSec);
-            }
-            if (DodgeEnergyCost != 0F)
-            {
-                output.WriteRawTag(21);
-                output.WriteFloat(DodgeEnergyCost);
-            }
-            if (RetargetSeconds != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(RetargetSeconds);
-            }
-            if (EnemyAttackInterval != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(EnemyAttackInterval);
-            }
-            if (AttackServerInterval != 0F)
-            {
-                output.WriteRawTag(45);
-                output.WriteFloat(AttackServerInterval);
-            }
-            if (RoundDurationSeconds != 0F)
-            {
-                output.WriteRawTag(53);
-                output.WriteFloat(RoundDurationSeconds);
-            }
-            if (BonusTimePerAllySeconds != 0F)
-            {
-                output.WriteRawTag(61);
-                output.WriteFloat(BonusTimePerAllySeconds);
-            }
-            if (MaximumAttackersPerBattle != 0)
-            {
-                output.WriteRawTag(64);
-                output.WriteInt32(MaximumAttackersPerBattle);
-            }
-            if (SameTypeAttackBonusMultiplier != 0F)
-            {
-                output.WriteRawTag(77);
-                output.WriteFloat(SameTypeAttackBonusMultiplier);
-            }
-            if (MaximumEnergy != 0)
-            {
-                output.WriteRawTag(80);
-                output.WriteInt32(MaximumEnergy);
-            }
-            if (EnergyDeltaPerHealthLost != 0F)
-            {
-                output.WriteRawTag(93);
-                output.WriteFloat(EnergyDeltaPerHealthLost);
-            }
-            if (DodgeDurationMs != 0)
-            {
-                output.WriteRawTag(96);
-                output.WriteInt32(DodgeDurationMs);
-            }
-            if (MinimumPlayerLevel != 0)
-            {
-                output.WriteRawTag(104);
-                output.WriteInt32(MinimumPlayerLevel);
-            }
-            if (SwapDurationMs != 0)
-            {
-                output.WriteRawTag(112);
-                output.WriteInt32(SwapDurationMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (EnergyPerSec != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (DodgeEnergyCost != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (RetargetSeconds != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (EnemyAttackInterval != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (AttackServerInterval != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (RoundDurationSeconds != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (BonusTimePerAllySeconds != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (MaximumAttackersPerBattle != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaximumAttackersPerBattle);
-            }
-            if (SameTypeAttackBonusMultiplier != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (MaximumEnergy != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaximumEnergy);
-            }
-            if (EnergyDeltaPerHealthLost != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (DodgeDurationMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DodgeDurationMs);
-            }
-            if (MinimumPlayerLevel != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MinimumPlayerLevel);
-            }
-            if (SwapDurationMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(SwapDurationMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(GymBattleSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.EnergyPerSec != 0F)
-            {
-                EnergyPerSec = other.EnergyPerSec;
-            }
-            if (other.DodgeEnergyCost != 0F)
-            {
-                DodgeEnergyCost = other.DodgeEnergyCost;
-            }
-            if (other.RetargetSeconds != 0F)
-            {
-                RetargetSeconds = other.RetargetSeconds;
-            }
-            if (other.EnemyAttackInterval != 0F)
-            {
-                EnemyAttackInterval = other.EnemyAttackInterval;
-            }
-            if (other.AttackServerInterval != 0F)
-            {
-                AttackServerInterval = other.AttackServerInterval;
-            }
-            if (other.RoundDurationSeconds != 0F)
-            {
-                RoundDurationSeconds = other.RoundDurationSeconds;
-            }
-            if (other.BonusTimePerAllySeconds != 0F)
-            {
-                BonusTimePerAllySeconds = other.BonusTimePerAllySeconds;
-            }
-            if (other.MaximumAttackersPerBattle != 0)
-            {
-                MaximumAttackersPerBattle = other.MaximumAttackersPerBattle;
-            }
-            if (other.SameTypeAttackBonusMultiplier != 0F)
-            {
-                SameTypeAttackBonusMultiplier = other.SameTypeAttackBonusMultiplier;
-            }
-            if (other.MaximumEnergy != 0)
-            {
-                MaximumEnergy = other.MaximumEnergy;
-            }
-            if (other.EnergyDeltaPerHealthLost != 0F)
-            {
-                EnergyDeltaPerHealthLost = other.EnergyDeltaPerHealthLost;
-            }
-            if (other.DodgeDurationMs != 0)
-            {
-                DodgeDurationMs = other.DodgeDurationMs;
-            }
-            if (other.MinimumPlayerLevel != 0)
-            {
-                MinimumPlayerLevel = other.MinimumPlayerLevel;
-            }
-            if (other.SwapDurationMs != 0)
-            {
-                SwapDurationMs = other.SwapDurationMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            EnergyPerSec = input.ReadFloat();
-                            break;
-                        }
-                    case 21:
-                        {
-                            DodgeEnergyCost = input.ReadFloat();
-                            break;
-                        }
-                    case 29:
-                        {
-                            RetargetSeconds = input.ReadFloat();
-                            break;
-                        }
-                    case 37:
-                        {
-                            EnemyAttackInterval = input.ReadFloat();
-                            break;
-                        }
-                    case 45:
-                        {
-                            AttackServerInterval = input.ReadFloat();
-                            break;
-                        }
-                    case 53:
-                        {
-                            RoundDurationSeconds = input.ReadFloat();
-                            break;
-                        }
-                    case 61:
-                        {
-                            BonusTimePerAllySeconds = input.ReadFloat();
-                            break;
-                        }
-                    case 64:
-                        {
-                            MaximumAttackersPerBattle = input.ReadInt32();
-                            break;
-                        }
-                    case 77:
-                        {
-                            SameTypeAttackBonusMultiplier = input.ReadFloat();
-                            break;
-                        }
-                    case 80:
-                        {
-                            MaximumEnergy = input.ReadInt32();
-                            break;
-                        }
-                    case 93:
-                        {
-                            EnergyDeltaPerHealthLost = input.ReadFloat();
-                            break;
-                        }
-                    case 96:
-                        {
-                            DodgeDurationMs = input.ReadInt32();
-                            break;
-                        }
-                    case 104:
-                        {
-                            MinimumPlayerLevel = input.ReadInt32();
-                            break;
-                        }
-                    case 112:
-                        {
-                            SwapDurationMs = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GymBattleSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (EnergyPerSec != 0F) hash ^= EnergyPerSec.GetHashCode();
-            if (DodgeEnergyCost != 0F) hash ^= DodgeEnergyCost.GetHashCode();
-            if (RetargetSeconds != 0F) hash ^= RetargetSeconds.GetHashCode();
-            if (EnemyAttackInterval != 0F) hash ^= EnemyAttackInterval.GetHashCode();
-            if (AttackServerInterval != 0F) hash ^= AttackServerInterval.GetHashCode();
-            if (RoundDurationSeconds != 0F) hash ^= RoundDurationSeconds.GetHashCode();
-            if (BonusTimePerAllySeconds != 0F) hash ^= BonusTimePerAllySeconds.GetHashCode();
-            if (MaximumAttackersPerBattle != 0) hash ^= MaximumAttackersPerBattle.GetHashCode();
-            if (SameTypeAttackBonusMultiplier != 0F) hash ^= SameTypeAttackBonusMultiplier.GetHashCode();
-            if (MaximumEnergy != 0) hash ^= MaximumEnergy.GetHashCode();
-            if (EnergyDeltaPerHealthLost != 0F) hash ^= EnergyDeltaPerHealthLost.GetHashCode();
-            if (DodgeDurationMs != 0) hash ^= DodgeDurationMs.GetHashCode();
-            if (MinimumPlayerLevel != 0) hash ^= MinimumPlayerLevel.GetHashCode();
-            if (SwapDurationMs != 0) hash ^= SwapDurationMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class GymLevelSettings : pb::IMessage<GymLevelSettings>
-    {
-        /// <summary>Field number for the "required_experience" field.</summary>
-        public const int RequiredExperienceFieldNumber = 1;
-
-        /// <summary>Field number for the "leader_slots" field.</summary>
-        public const int LeaderSlotsFieldNumber = 2;
-
-        /// <summary>Field number for the "trainer_slots" field.</summary>
-        public const int TrainerSlotsFieldNumber = 3;
-
-        /// <summary>Field number for the "search_roll_bonus" field.</summary>
-        public const int SearchRollBonusFieldNumber = 4;
-
-        private static readonly pb::MessageParser<GymLevelSettings> _parser =
-            new pb::MessageParser<GymLevelSettings>(() => new GymLevelSettings());
-
-        private static readonly pb::FieldCodec<int> _repeated_requiredExperience_codec
-            = pb::FieldCodec.ForInt32(10);
-
-        private static readonly pb::FieldCodec<int> _repeated_leaderSlots_codec
-            = pb::FieldCodec.ForInt32(18);
-
-        private static readonly pb::FieldCodec<int> _repeated_trainerSlots_codec
-            = pb::FieldCodec.ForInt32(26);
-
-        private static readonly pb::FieldCodec<int> _repeated_searchRollBonus_codec
-            = pb::FieldCodec.ForInt32(34);
-
-        private readonly pbc::RepeatedField<int> leaderSlots_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> requiredExperience_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> searchRollBonus_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> trainerSlots_ = new pbc::RepeatedField<int>();
-
-        public GymLevelSettings()
-        {
-            OnConstruction();
-        }
-
-        public GymLevelSettings(GymLevelSettings other) : this()
-        {
-            requiredExperience_ = other.requiredExperience_.Clone();
-            leaderSlots_ = other.leaderSlots_.Clone();
-            trainerSlots_ = other.trainerSlots_.Clone();
-            searchRollBonus_ = other.searchRollBonus_.Clone();
-        }
-
-        public static pb::MessageParser<GymLevelSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[71]; }
-        }
-
-        public pbc::RepeatedField<int> RequiredExperience
-        {
-            get { return requiredExperience_; }
-        }
-
-        public pbc::RepeatedField<int> LeaderSlots
-        {
-            get { return leaderSlots_; }
-        }
-
-        public pbc::RepeatedField<int> TrainerSlots
-        {
-            get { return trainerSlots_; }
-        }
-
-        public pbc::RepeatedField<int> SearchRollBonus
-        {
-            get { return searchRollBonus_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public GymLevelSettings Clone()
-        {
-            return new GymLevelSettings(this);
-        }
-
-        public bool Equals(GymLevelSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!requiredExperience_.Equals(other.requiredExperience_)) return false;
-            if (!leaderSlots_.Equals(other.leaderSlots_)) return false;
-            if (!trainerSlots_.Equals(other.trainerSlots_)) return false;
-            if (!searchRollBonus_.Equals(other.searchRollBonus_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            requiredExperience_.WriteTo(output, _repeated_requiredExperience_codec);
-            leaderSlots_.WriteTo(output, _repeated_leaderSlots_codec);
-            trainerSlots_.WriteTo(output, _repeated_trainerSlots_codec);
-            searchRollBonus_.WriteTo(output, _repeated_searchRollBonus_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += requiredExperience_.CalculateSize(_repeated_requiredExperience_codec);
-            size += leaderSlots_.CalculateSize(_repeated_leaderSlots_codec);
-            size += trainerSlots_.CalculateSize(_repeated_trainerSlots_codec);
-            size += searchRollBonus_.CalculateSize(_repeated_searchRollBonus_codec);
-            return size;
-        }
-
-        public void MergeFrom(GymLevelSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            requiredExperience_.Add(other.requiredExperience_);
-            leaderSlots_.Add(other.leaderSlots_);
-            trainerSlots_.Add(other.trainerSlots_);
-            searchRollBonus_.Add(other.searchRollBonus_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                    case 8:
-                        {
-                            requiredExperience_.AddEntriesFrom(input, _repeated_requiredExperience_codec);
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            leaderSlots_.AddEntriesFrom(input, _repeated_leaderSlots_codec);
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            trainerSlots_.AddEntriesFrom(input, _repeated_trainerSlots_codec);
-                            break;
-                        }
-                    case 34:
-                    case 32:
-                        {
-                            searchRollBonus_.AddEntriesFrom(input, _repeated_searchRollBonus_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as GymLevelSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= requiredExperience_.GetHashCode();
-            hash ^= leaderSlots_.GetHashCode();
-            hash ^= trainerSlots_.GetHashCode();
-            hash ^= searchRollBonus_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PlayerLevelSettings : pb::IMessage<PlayerLevelSettings>
-    {
-        /// <summary>Field number for the "rank_num" field.</summary>
-        public const int RankNumFieldNumber = 1;
-
-        /// <summary>Field number for the "required_experience" field.</summary>
-        public const int RequiredExperienceFieldNumber = 2;
-
-        /// <summary>Field number for the "cp_multiplier" field.</summary>
-        public const int CpMultiplierFieldNumber = 3;
-
-        /// <summary>Field number for the "max_egg_player_level" field.</summary>
-        public const int MaxEggPlayerLevelFieldNumber = 4;
-
-        /// <summary>Field number for the "max_encounter_player_level" field.</summary>
-        public const int MaxEncounterPlayerLevelFieldNumber = 5;
-
-        private static readonly pb::MessageParser<PlayerLevelSettings> _parser =
-            new pb::MessageParser<PlayerLevelSettings>(() => new PlayerLevelSettings());
-
-        private static readonly pb::FieldCodec<int> _repeated_rankNum_codec
-            = pb::FieldCodec.ForInt32(10);
-
-        private static readonly pb::FieldCodec<int> _repeated_requiredExperience_codec
-            = pb::FieldCodec.ForInt32(18);
-
-        private static readonly pb::FieldCodec<float> _repeated_cpMultiplier_codec
-            = pb::FieldCodec.ForFloat(26);
-
-        private readonly pbc::RepeatedField<float> cpMultiplier_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<int> rankNum_ = new pbc::RepeatedField<int>();
-        private readonly pbc::RepeatedField<int> requiredExperience_ = new pbc::RepeatedField<int>();
-        private int maxEggPlayerLevel_;
-        private int maxEncounterPlayerLevel_;
-
-        public PlayerLevelSettings()
-        {
-            OnConstruction();
-        }
-
-        public PlayerLevelSettings(PlayerLevelSettings other) : this()
-        {
-            rankNum_ = other.rankNum_.Clone();
-            requiredExperience_ = other.requiredExperience_.Clone();
-            cpMultiplier_ = other.cpMultiplier_.Clone();
-            maxEggPlayerLevel_ = other.maxEggPlayerLevel_;
-            maxEncounterPlayerLevel_ = other.maxEncounterPlayerLevel_;
-        }
-
-        public static pb::MessageParser<PlayerLevelSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[72]; }
-        }
-
-        public pbc::RepeatedField<int> RankNum
-        {
-            get { return rankNum_; }
-        }
-
-        public pbc::RepeatedField<int> RequiredExperience
-        {
-            get { return requiredExperience_; }
-        }
-
-        public pbc::RepeatedField<float> CpMultiplier
-        {
-            get { return cpMultiplier_; }
-        }
-
-        public int MaxEggPlayerLevel
-        {
-            get { return maxEggPlayerLevel_; }
-            set { maxEggPlayerLevel_ = value; }
-        }
-
-        public int MaxEncounterPlayerLevel
-        {
-            get { return maxEncounterPlayerLevel_; }
-            set { maxEncounterPlayerLevel_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PlayerLevelSettings Clone()
-        {
-            return new PlayerLevelSettings(this);
-        }
-
-        public bool Equals(PlayerLevelSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!rankNum_.Equals(other.rankNum_)) return false;
-            if (!requiredExperience_.Equals(other.requiredExperience_)) return false;
-            if (!cpMultiplier_.Equals(other.cpMultiplier_)) return false;
-            if (MaxEggPlayerLevel != other.MaxEggPlayerLevel) return false;
-            if (MaxEncounterPlayerLevel != other.MaxEncounterPlayerLevel) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            rankNum_.WriteTo(output, _repeated_rankNum_codec);
-            requiredExperience_.WriteTo(output, _repeated_requiredExperience_codec);
-            cpMultiplier_.WriteTo(output, _repeated_cpMultiplier_codec);
-            if (MaxEggPlayerLevel != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(MaxEggPlayerLevel);
-            }
-            if (MaxEncounterPlayerLevel != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(MaxEncounterPlayerLevel);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += rankNum_.CalculateSize(_repeated_rankNum_codec);
-            size += requiredExperience_.CalculateSize(_repeated_requiredExperience_codec);
-            size += cpMultiplier_.CalculateSize(_repeated_cpMultiplier_codec);
-            if (MaxEggPlayerLevel != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxEggPlayerLevel);
-            }
-            if (MaxEncounterPlayerLevel != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxEncounterPlayerLevel);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PlayerLevelSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            rankNum_.Add(other.rankNum_);
-            requiredExperience_.Add(other.requiredExperience_);
-            cpMultiplier_.Add(other.cpMultiplier_);
-            if (other.MaxEggPlayerLevel != 0)
-            {
-                MaxEggPlayerLevel = other.MaxEggPlayerLevel;
-            }
-            if (other.MaxEncounterPlayerLevel != 0)
-            {
-                MaxEncounterPlayerLevel = other.MaxEncounterPlayerLevel;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                    case 8:
-                        {
-                            rankNum_.AddEntriesFrom(input, _repeated_rankNum_codec);
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            requiredExperience_.AddEntriesFrom(input, _repeated_requiredExperience_codec);
-                            break;
-                        }
-                    case 26:
-                    case 29:
-                        {
-                            cpMultiplier_.AddEntriesFrom(input, _repeated_cpMultiplier_codec);
-                            break;
-                        }
-                    case 32:
-                        {
-                            MaxEggPlayerLevel = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            MaxEncounterPlayerLevel = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PlayerLevelSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= rankNum_.GetHashCode();
-            hash ^= requiredExperience_.GetHashCode();
-            hash ^= cpMultiplier_.GetHashCode();
-            if (MaxEggPlayerLevel != 0) hash ^= MaxEggPlayerLevel.GetHashCode();
-            if (MaxEncounterPlayerLevel != 0) hash ^= MaxEncounterPlayerLevel.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CameraSettings : pb::IMessage<CameraSettings>
-    {
-        /// <summary>Field number for the "next_camera" field.</summary>
-        public const int NextCameraFieldNumber = 1;
-
-        /// <summary>Field number for the "interpolation" field.</summary>
-        public const int InterpolationFieldNumber = 2;
-
-        /// <summary>Field number for the "target_type" field.</summary>
-        public const int TargetTypeFieldNumber = 3;
-
-        /// <summary>Field number for the "ease_in_speed" field.</summary>
-        public const int EaseInSpeedFieldNumber = 4;
-
-        /// <summary>Field number for the "east_out_speed" field.</summary>
-        public const int EastOutSpeedFieldNumber = 5;
-
-        /// <summary>Field number for the "duration_seconds" field.</summary>
-        public const int DurationSecondsFieldNumber = 6;
-
-        /// <summary>Field number for the "wait_seconds" field.</summary>
-        public const int WaitSecondsFieldNumber = 7;
-
-        /// <summary>Field number for the "transition_seconds" field.</summary>
-        public const int TransitionSecondsFieldNumber = 8;
-
-        /// <summary>Field number for the "angle_degree" field.</summary>
-        public const int AngleDegreeFieldNumber = 9;
-
-        /// <summary>Field number for the "angle_offset_degree" field.</summary>
-        public const int AngleOffsetDegreeFieldNumber = 10;
-
-        /// <summary>Field number for the "pitch_degree" field.</summary>
-        public const int PitchDegreeFieldNumber = 11;
-
-        /// <summary>Field number for the "pitch_offset_degree" field.</summary>
-        public const int PitchOffsetDegreeFieldNumber = 12;
-
-        /// <summary>Field number for the "roll_degree" field.</summary>
-        public const int RollDegreeFieldNumber = 13;
-
-        /// <summary>Field number for the "distance_meters" field.</summary>
-        public const int DistanceMetersFieldNumber = 14;
-
-        /// <summary>Field number for the "height_percent" field.</summary>
-        public const int HeightPercentFieldNumber = 15;
-
-        /// <summary>Field number for the "vert_ctr_ratio" field.</summary>
-        public const int VertCtrRatioFieldNumber = 16;
-
-        private static readonly pb::MessageParser<CameraSettings> _parser =
-            new pb::MessageParser<CameraSettings>(() => new CameraSettings());
-
-        private static readonly pb::FieldCodec<global::AllEnum.CameraInterpolation> _repeated_interpolation_codec
-            = pb::FieldCodec.ForEnum(18, x => (int)x, x => (global::AllEnum.CameraInterpolation)x);
-
-        private static readonly pb::FieldCodec<global::AllEnum.CameraTarget> _repeated_targetType_codec
-            = pb::FieldCodec.ForEnum(26, x => (int)x, x => (global::AllEnum.CameraTarget)x);
-
-        private static readonly pb::FieldCodec<float> _repeated_easeInSpeed_codec
-            = pb::FieldCodec.ForFloat(34);
-
-        private static readonly pb::FieldCodec<float> _repeated_eastOutSpeed_codec
-            = pb::FieldCodec.ForFloat(42);
-
-        private static readonly pb::FieldCodec<float> _repeated_durationSeconds_codec
-            = pb::FieldCodec.ForFloat(50);
-
-        private static readonly pb::FieldCodec<float> _repeated_waitSeconds_codec
-            = pb::FieldCodec.ForFloat(58);
-
-        private static readonly pb::FieldCodec<float> _repeated_transitionSeconds_codec
-            = pb::FieldCodec.ForFloat(66);
-
-        private static readonly pb::FieldCodec<float> _repeated_angleDegree_codec
-            = pb::FieldCodec.ForFloat(74);
-
-        private static readonly pb::FieldCodec<float> _repeated_angleOffsetDegree_codec
-            = pb::FieldCodec.ForFloat(82);
-
-        private static readonly pb::FieldCodec<float> _repeated_pitchDegree_codec
-            = pb::FieldCodec.ForFloat(90);
-
-        private static readonly pb::FieldCodec<float> _repeated_pitchOffsetDegree_codec
-            = pb::FieldCodec.ForFloat(98);
-
-        private static readonly pb::FieldCodec<float> _repeated_rollDegree_codec
-            = pb::FieldCodec.ForFloat(106);
-
-        private static readonly pb::FieldCodec<float> _repeated_distanceMeters_codec
-            = pb::FieldCodec.ForFloat(114);
-
-        private static readonly pb::FieldCodec<float> _repeated_heightPercent_codec
-            = pb::FieldCodec.ForFloat(122);
-
-        private static readonly pb::FieldCodec<float> _repeated_vertCtrRatio_codec
-            = pb::FieldCodec.ForFloat(130);
-
-        private readonly pbc::RepeatedField<float> angleDegree_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> angleOffsetDegree_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> distanceMeters_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> durationSeconds_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> easeInSpeed_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> eastOutSpeed_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> heightPercent_ = new pbc::RepeatedField<float>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.CameraInterpolation> interpolation_ =
-            new pbc::RepeatedField<global::AllEnum.CameraInterpolation>();
-
-        private readonly pbc::RepeatedField<float> pitchDegree_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> pitchOffsetDegree_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> rollDegree_ = new pbc::RepeatedField<float>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.CameraTarget> targetType_ =
-            new pbc::RepeatedField<global::AllEnum.CameraTarget>();
-
-        private readonly pbc::RepeatedField<float> transitionSeconds_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> vertCtrRatio_ = new pbc::RepeatedField<float>();
-        private readonly pbc::RepeatedField<float> waitSeconds_ = new pbc::RepeatedField<float>();
-        private string nextCamera_ = "";
-
-        public CameraSettings()
-        {
-            OnConstruction();
-        }
-
-        public CameraSettings(CameraSettings other) : this()
-        {
-            nextCamera_ = other.nextCamera_;
-            interpolation_ = other.interpolation_.Clone();
-            targetType_ = other.targetType_.Clone();
-            easeInSpeed_ = other.easeInSpeed_.Clone();
-            eastOutSpeed_ = other.eastOutSpeed_.Clone();
-            durationSeconds_ = other.durationSeconds_.Clone();
-            waitSeconds_ = other.waitSeconds_.Clone();
-            transitionSeconds_ = other.transitionSeconds_.Clone();
-            angleDegree_ = other.angleDegree_.Clone();
-            angleOffsetDegree_ = other.angleOffsetDegree_.Clone();
-            pitchDegree_ = other.pitchDegree_.Clone();
-            pitchOffsetDegree_ = other.pitchOffsetDegree_.Clone();
-            rollDegree_ = other.rollDegree_.Clone();
-            distanceMeters_ = other.distanceMeters_.Clone();
-            heightPercent_ = other.heightPercent_.Clone();
-            vertCtrRatio_ = other.vertCtrRatio_.Clone();
-        }
-
-        public static pb::MessageParser<CameraSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[73]; }
-        }
-
-        public string NextCamera
-        {
-            get { return nextCamera_; }
-            set { nextCamera_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.CameraInterpolation> Interpolation
-        {
-            get { return interpolation_; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.CameraTarget> TargetType
-        {
-            get { return targetType_; }
-        }
-
-        public pbc::RepeatedField<float> EaseInSpeed
-        {
-            get { return easeInSpeed_; }
-        }
-
-        public pbc::RepeatedField<float> EastOutSpeed
-        {
-            get { return eastOutSpeed_; }
-        }
-
-        public pbc::RepeatedField<float> DurationSeconds
-        {
-            get { return durationSeconds_; }
-        }
-
-        public pbc::RepeatedField<float> WaitSeconds
-        {
-            get { return waitSeconds_; }
-        }
-
-        public pbc::RepeatedField<float> TransitionSeconds
-        {
-            get { return transitionSeconds_; }
-        }
-
-        public pbc::RepeatedField<float> AngleDegree
-        {
-            get { return angleDegree_; }
-        }
-
-        public pbc::RepeatedField<float> AngleOffsetDegree
-        {
-            get { return angleOffsetDegree_; }
-        }
-
-        public pbc::RepeatedField<float> PitchDegree
-        {
-            get { return pitchDegree_; }
-        }
-
-        public pbc::RepeatedField<float> PitchOffsetDegree
-        {
-            get { return pitchOffsetDegree_; }
-        }
-
-        public pbc::RepeatedField<float> RollDegree
-        {
-            get { return rollDegree_; }
-        }
-
-        public pbc::RepeatedField<float> DistanceMeters
-        {
-            get { return distanceMeters_; }
-        }
-
-        public pbc::RepeatedField<float> HeightPercent
-        {
-            get { return heightPercent_; }
-        }
-
-        public pbc::RepeatedField<float> VertCtrRatio
-        {
-            get { return vertCtrRatio_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CameraSettings Clone()
-        {
-            return new CameraSettings(this);
-        }
-
-        public bool Equals(CameraSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (NextCamera != other.NextCamera) return false;
-            if (!interpolation_.Equals(other.interpolation_)) return false;
-            if (!targetType_.Equals(other.targetType_)) return false;
-            if (!easeInSpeed_.Equals(other.easeInSpeed_)) return false;
-            if (!eastOutSpeed_.Equals(other.eastOutSpeed_)) return false;
-            if (!durationSeconds_.Equals(other.durationSeconds_)) return false;
-            if (!waitSeconds_.Equals(other.waitSeconds_)) return false;
-            if (!transitionSeconds_.Equals(other.transitionSeconds_)) return false;
-            if (!angleDegree_.Equals(other.angleDegree_)) return false;
-            if (!angleOffsetDegree_.Equals(other.angleOffsetDegree_)) return false;
-            if (!pitchDegree_.Equals(other.pitchDegree_)) return false;
-            if (!pitchOffsetDegree_.Equals(other.pitchOffsetDegree_)) return false;
-            if (!rollDegree_.Equals(other.rollDegree_)) return false;
-            if (!distanceMeters_.Equals(other.distanceMeters_)) return false;
-            if (!heightPercent_.Equals(other.heightPercent_)) return false;
-            if (!vertCtrRatio_.Equals(other.vertCtrRatio_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (NextCamera.Length != 0)
-            {
-                output.WriteRawTag(10);
-                output.WriteString(NextCamera);
-            }
-            interpolation_.WriteTo(output, _repeated_interpolation_codec);
-            targetType_.WriteTo(output, _repeated_targetType_codec);
-            easeInSpeed_.WriteTo(output, _repeated_easeInSpeed_codec);
-            eastOutSpeed_.WriteTo(output, _repeated_eastOutSpeed_codec);
-            durationSeconds_.WriteTo(output, _repeated_durationSeconds_codec);
-            waitSeconds_.WriteTo(output, _repeated_waitSeconds_codec);
-            transitionSeconds_.WriteTo(output, _repeated_transitionSeconds_codec);
-            angleDegree_.WriteTo(output, _repeated_angleDegree_codec);
-            angleOffsetDegree_.WriteTo(output, _repeated_angleOffsetDegree_codec);
-            pitchDegree_.WriteTo(output, _repeated_pitchDegree_codec);
-            pitchOffsetDegree_.WriteTo(output, _repeated_pitchOffsetDegree_codec);
-            rollDegree_.WriteTo(output, _repeated_rollDegree_codec);
-            distanceMeters_.WriteTo(output, _repeated_distanceMeters_codec);
-            heightPercent_.WriteTo(output, _repeated_heightPercent_codec);
-            vertCtrRatio_.WriteTo(output, _repeated_vertCtrRatio_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (NextCamera.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(NextCamera);
-            }
-            size += interpolation_.CalculateSize(_repeated_interpolation_codec);
-            size += targetType_.CalculateSize(_repeated_targetType_codec);
-            size += easeInSpeed_.CalculateSize(_repeated_easeInSpeed_codec);
-            size += eastOutSpeed_.CalculateSize(_repeated_eastOutSpeed_codec);
-            size += durationSeconds_.CalculateSize(_repeated_durationSeconds_codec);
-            size += waitSeconds_.CalculateSize(_repeated_waitSeconds_codec);
-            size += transitionSeconds_.CalculateSize(_repeated_transitionSeconds_codec);
-            size += angleDegree_.CalculateSize(_repeated_angleDegree_codec);
-            size += angleOffsetDegree_.CalculateSize(_repeated_angleOffsetDegree_codec);
-            size += pitchDegree_.CalculateSize(_repeated_pitchDegree_codec);
-            size += pitchOffsetDegree_.CalculateSize(_repeated_pitchOffsetDegree_codec);
-            size += rollDegree_.CalculateSize(_repeated_rollDegree_codec);
-            size += distanceMeters_.CalculateSize(_repeated_distanceMeters_codec);
-            size += heightPercent_.CalculateSize(_repeated_heightPercent_codec);
-            size += vertCtrRatio_.CalculateSize(_repeated_vertCtrRatio_codec);
-            return size;
-        }
-
-        public void MergeFrom(CameraSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.NextCamera.Length != 0)
-            {
-                NextCamera = other.NextCamera;
-            }
-            interpolation_.Add(other.interpolation_);
-            targetType_.Add(other.targetType_);
-            easeInSpeed_.Add(other.easeInSpeed_);
-            eastOutSpeed_.Add(other.eastOutSpeed_);
-            durationSeconds_.Add(other.durationSeconds_);
-            waitSeconds_.Add(other.waitSeconds_);
-            transitionSeconds_.Add(other.transitionSeconds_);
-            angleDegree_.Add(other.angleDegree_);
-            angleOffsetDegree_.Add(other.angleOffsetDegree_);
-            pitchDegree_.Add(other.pitchDegree_);
-            pitchOffsetDegree_.Add(other.pitchOffsetDegree_);
-            rollDegree_.Add(other.rollDegree_);
-            distanceMeters_.Add(other.distanceMeters_);
-            heightPercent_.Add(other.heightPercent_);
-            vertCtrRatio_.Add(other.vertCtrRatio_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            NextCamera = input.ReadString();
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            interpolation_.AddEntriesFrom(input, _repeated_interpolation_codec);
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            targetType_.AddEntriesFrom(input, _repeated_targetType_codec);
-                            break;
-                        }
-                    case 34:
-                    case 37:
-                        {
-                            easeInSpeed_.AddEntriesFrom(input, _repeated_easeInSpeed_codec);
-                            break;
-                        }
-                    case 42:
-                    case 45:
-                        {
-                            eastOutSpeed_.AddEntriesFrom(input, _repeated_eastOutSpeed_codec);
-                            break;
-                        }
-                    case 50:
-                    case 53:
-                        {
-                            durationSeconds_.AddEntriesFrom(input, _repeated_durationSeconds_codec);
-                            break;
-                        }
-                    case 58:
-                    case 61:
-                        {
-                            waitSeconds_.AddEntriesFrom(input, _repeated_waitSeconds_codec);
-                            break;
-                        }
-                    case 66:
-                    case 69:
-                        {
-                            transitionSeconds_.AddEntriesFrom(input, _repeated_transitionSeconds_codec);
-                            break;
-                        }
-                    case 74:
-                    case 77:
-                        {
-                            angleDegree_.AddEntriesFrom(input, _repeated_angleDegree_codec);
-                            break;
-                        }
-                    case 82:
-                    case 85:
-                        {
-                            angleOffsetDegree_.AddEntriesFrom(input, _repeated_angleOffsetDegree_codec);
-                            break;
-                        }
-                    case 90:
-                    case 93:
-                        {
-                            pitchDegree_.AddEntriesFrom(input, _repeated_pitchDegree_codec);
-                            break;
-                        }
-                    case 98:
-                    case 101:
-                        {
-                            pitchOffsetDegree_.AddEntriesFrom(input, _repeated_pitchOffsetDegree_codec);
-                            break;
-                        }
-                    case 106:
-                    case 109:
-                        {
-                            rollDegree_.AddEntriesFrom(input, _repeated_rollDegree_codec);
-                            break;
-                        }
-                    case 114:
-                    case 117:
-                        {
-                            distanceMeters_.AddEntriesFrom(input, _repeated_distanceMeters_codec);
-                            break;
-                        }
-                    case 122:
-                    case 125:
-                        {
-                            heightPercent_.AddEntriesFrom(input, _repeated_heightPercent_codec);
-                            break;
-                        }
-                    case 130:
-                    case 133:
-                        {
-                            vertCtrRatio_.AddEntriesFrom(input, _repeated_vertCtrRatio_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CameraSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (NextCamera.Length != 0) hash ^= NextCamera.GetHashCode();
-            hash ^= interpolation_.GetHashCode();
-            hash ^= targetType_.GetHashCode();
-            hash ^= easeInSpeed_.GetHashCode();
-            hash ^= eastOutSpeed_.GetHashCode();
-            hash ^= durationSeconds_.GetHashCode();
-            hash ^= waitSeconds_.GetHashCode();
-            hash ^= transitionSeconds_.GetHashCode();
-            hash ^= angleDegree_.GetHashCode();
-            hash ^= angleOffsetDegree_.GetHashCode();
-            hash ^= pitchDegree_.GetHashCode();
-            hash ^= pitchOffsetDegree_.GetHashCode();
-            hash ^= rollDegree_.GetHashCode();
-            hash ^= distanceMeters_.GetHashCode();
-            hash ^= heightPercent_.GetHashCode();
-            hash ^= vertCtrRatio_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class BadgeSettings : pb::IMessage<BadgeSettings>
-    {
-        /// <summary>Field number for the "badge_type" field.</summary>
-        public const int BadgeTypeFieldNumber = 1;
-
-        /// <summary>Field number for the "badge_rank" field.</summary>
-        public const int BadgeRankFieldNumber = 2;
-
-        /// <summary>Field number for the "targets" field.</summary>
-        public const int TargetsFieldNumber = 3;
-
-        private static readonly pb::MessageParser<BadgeSettings> _parser =
-            new pb::MessageParser<BadgeSettings>(() => new BadgeSettings());
-
-        private static readonly pb::FieldCodec<int> _repeated_targets_codec
-            = pb::FieldCodec.ForInt32(26);
-
-        private readonly pbc::RepeatedField<int> targets_ = new pbc::RepeatedField<int>();
-        private int badgeRank_;
-        private global::AllEnum.BadgeType badgeType_ = 0;
-
-        public BadgeSettings()
-        {
-            OnConstruction();
-        }
-
-        public BadgeSettings(BadgeSettings other) : this()
-        {
-            badgeType_ = other.badgeType_;
-            badgeRank_ = other.badgeRank_;
-            targets_ = other.targets_.Clone();
-        }
-
-        public static pb::MessageParser<BadgeSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[74]; }
-        }
-
-        public global::AllEnum.BadgeType BadgeType
-        {
-            get { return badgeType_; }
-            set { badgeType_ = value; }
-        }
-
-        public int BadgeRank
-        {
-            get { return badgeRank_; }
-            set { badgeRank_ = value; }
-        }
-
-        public pbc::RepeatedField<int> Targets
-        {
-            get { return targets_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public BadgeSettings Clone()
-        {
-            return new BadgeSettings(this);
-        }
-
-        public bool Equals(BadgeSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (BadgeType != other.BadgeType) return false;
-            if (BadgeRank != other.BadgeRank) return false;
-            if (!targets_.Equals(other.targets_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (BadgeType != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)BadgeType);
-            }
-            if (BadgeRank != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(BadgeRank);
-            }
-            targets_.WriteTo(output, _repeated_targets_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (BadgeType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)BadgeType);
-            }
-            if (BadgeRank != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BadgeRank);
-            }
-            size += targets_.CalculateSize(_repeated_targets_codec);
-            return size;
-        }
-
-        public void MergeFrom(BadgeSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.BadgeType != 0)
-            {
-                BadgeType = other.BadgeType;
-            }
-            if (other.BadgeRank != 0)
-            {
-                BadgeRank = other.BadgeRank;
-            }
-            targets_.Add(other.targets_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            badgeType_ = (global::AllEnum.BadgeType)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            BadgeRank = input.ReadInt32();
-                            break;
-                        }
-                    case 26:
-                    case 24:
-                        {
-                            targets_.AddEntriesFrom(input, _repeated_targets_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as BadgeSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (BadgeType != 0) hash ^= BadgeType.GetHashCode();
-            if (BadgeRank != 0) hash ^= BadgeRank.GetHashCode();
-            hash ^= targets_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class TypeEffectiveSettings : pb::IMessage<TypeEffectiveSettings>
-    {
-        /// <summary>Field number for the "attack_scalar" field.</summary>
-        public const int AttackScalarFieldNumber = 1;
-
-        /// <summary>Field number for the "attack_type" field.</summary>
-        public const int AttackTypeFieldNumber = 2;
-
-        private static readonly pb::MessageParser<TypeEffectiveSettings> _parser =
-            new pb::MessageParser<TypeEffectiveSettings>(() => new TypeEffectiveSettings());
-
-        private static readonly pb::FieldCodec<float> _repeated_attackScalar_codec
-            = pb::FieldCodec.ForFloat(10);
-
-        private readonly pbc::RepeatedField<float> attackScalar_ = new pbc::RepeatedField<float>();
-        private global::AllEnum.PokemonType attackType_ = 0;
-
-        public TypeEffectiveSettings()
-        {
-            OnConstruction();
-        }
-
-        public TypeEffectiveSettings(TypeEffectiveSettings other) : this()
-        {
-            attackScalar_ = other.attackScalar_.Clone();
-            attackType_ = other.attackType_;
-        }
-
-        public static pb::MessageParser<TypeEffectiveSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[75]; }
-        }
-
-        public pbc::RepeatedField<float> AttackScalar
-        {
-            get { return attackScalar_; }
-        }
-
-        public global::AllEnum.PokemonType AttackType
-        {
-            get { return attackType_; }
-            set { attackType_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public TypeEffectiveSettings Clone()
-        {
-            return new TypeEffectiveSettings(this);
-        }
-
-        public bool Equals(TypeEffectiveSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!attackScalar_.Equals(other.attackScalar_)) return false;
-            if (AttackType != other.AttackType) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            attackScalar_.WriteTo(output, _repeated_attackScalar_codec);
-            if (AttackType != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)AttackType);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += attackScalar_.CalculateSize(_repeated_attackScalar_codec);
-            if (AttackType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)AttackType);
-            }
-            return size;
-        }
-
-        public void MergeFrom(TypeEffectiveSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            attackScalar_.Add(other.attackScalar_);
-            if (other.AttackType != 0)
-            {
-                AttackType = other.AttackType;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                    case 13:
-                        {
-                            attackScalar_.AddEntriesFrom(input, _repeated_attackScalar_codec);
-                            break;
-                        }
-                    case 16:
-                        {
-                            attackType_ = (global::AllEnum.PokemonType)input.ReadEnum();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as TypeEffectiveSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= attackScalar_.GetHashCode();
-            if (AttackType != 0) hash ^= AttackType.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class MoveSequenceSettings : pb::IMessage<MoveSequenceSettings>
-    {
-        /// <summary>Field number for the "sequence" field.</summary>
-        public const int SequenceFieldNumber = 1;
-
-        private static readonly pb::MessageParser<MoveSequenceSettings> _parser =
-            new pb::MessageParser<MoveSequenceSettings>(() => new MoveSequenceSettings());
-
-        private static readonly pb::FieldCodec<string> _repeated_sequence_codec
-            = pb::FieldCodec.ForString(10);
-
-        private readonly pbc::RepeatedField<string> sequence_ = new pbc::RepeatedField<string>();
-
-        public MoveSequenceSettings()
-        {
-            OnConstruction();
-        }
-
-        public MoveSequenceSettings(MoveSequenceSettings other) : this()
-        {
-            sequence_ = other.sequence_.Clone();
-        }
-
-        public static pb::MessageParser<MoveSequenceSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[76]; }
-        }
-
-        public pbc::RepeatedField<string> Sequence
-        {
-            get { return sequence_; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public MoveSequenceSettings Clone()
-        {
-            return new MoveSequenceSettings(this);
-        }
-
-        public bool Equals(MoveSequenceSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!sequence_.Equals(other.sequence_)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            sequence_.WriteTo(output, _repeated_sequence_codec);
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += sequence_.CalculateSize(_repeated_sequence_codec);
-            return size;
-        }
-
-        public void MergeFrom(MoveSequenceSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            sequence_.Add(other.sequence_);
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                        {
-                            sequence_.AddEntriesFrom(input, _repeated_sequence_codec);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as MoveSequenceSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= sequence_.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class MoveSettings : pb::IMessage<MoveSettings>
-    {
-        /// <summary>Field number for the "movement_id" field.</summary>
-        public const int MovementIdFieldNumber = 1;
-
-        /// <summary>Field number for the "animation_id" field.</summary>
-        public const int AnimationIdFieldNumber = 2;
-
-        /// <summary>Field number for the "pokemon_type" field.</summary>
-        public const int PokemonTypeFieldNumber = 3;
-
-        /// <summary>Field number for the "power" field.</summary>
-        public const int PowerFieldNumber = 4;
-
-        /// <summary>Field number for the "accuracy_chance" field.</summary>
-        public const int AccuracyChanceFieldNumber = 5;
-
-        /// <summary>Field number for the "critical_chance" field.</summary>
-        public const int CriticalChanceFieldNumber = 6;
-
-        /// <summary>Field number for the "heal_scalar" field.</summary>
-        public const int HealScalarFieldNumber = 7;
-
-        /// <summary>Field number for the "stamina_loss_scalar" field.</summary>
-        public const int StaminaLossScalarFieldNumber = 8;
-
-        /// <summary>Field number for the "trainer_level_min" field.</summary>
-        public const int TrainerLevelMinFieldNumber = 9;
-
-        /// <summary>Field number for the "trainer_level_max" field.</summary>
-        public const int TrainerLevelMaxFieldNumber = 10;
-
-        /// <summary>Field number for the "vfx_name" field.</summary>
-        public const int VfxNameFieldNumber = 11;
-
-        /// <summary>Field number for the "duration_ms" field.</summary>
-        public const int DurationMsFieldNumber = 12;
-
-        /// <summary>Field number for the "damage_window_start_ms" field.</summary>
-        public const int DamageWindowStartMsFieldNumber = 13;
-
-        /// <summary>Field number for the "damage_window_end_ms" field.</summary>
-        public const int DamageWindowEndMsFieldNumber = 14;
-
-        /// <summary>Field number for the "energy_delta" field.</summary>
-        public const int EnergyDeltaFieldNumber = 15;
-
-        private static readonly pb::MessageParser<MoveSettings> _parser =
-            new pb::MessageParser<MoveSettings>(() => new MoveSettings());
-
-        private float accuracyChance_;
-        private int animationId_;
-        private float criticalChance_;
-        private int damageWindowEndMs_;
-        private int damageWindowStartMs_;
-        private int durationMs_;
-        private int energyDelta_;
-        private float healScalar_;
-        private global::AllEnum.PokemonMovementType movementId_ = 0;
-        private global::AllEnum.PokemonType pokemonType_ = 0;
-        private float power_;
-        private float staminaLossScalar_;
-        private int trainerLevelMax_;
-        private int trainerLevelMin_;
-        private string vfxName_ = "";
-
-        public MoveSettings()
-        {
-            OnConstruction();
-        }
-
-        public MoveSettings(MoveSettings other) : this()
-        {
-            movementId_ = other.movementId_;
-            animationId_ = other.animationId_;
-            pokemonType_ = other.pokemonType_;
-            power_ = other.power_;
-            accuracyChance_ = other.accuracyChance_;
-            criticalChance_ = other.criticalChance_;
-            healScalar_ = other.healScalar_;
-            staminaLossScalar_ = other.staminaLossScalar_;
-            trainerLevelMin_ = other.trainerLevelMin_;
-            trainerLevelMax_ = other.trainerLevelMax_;
-            vfxName_ = other.vfxName_;
-            durationMs_ = other.durationMs_;
-            damageWindowStartMs_ = other.damageWindowStartMs_;
-            damageWindowEndMs_ = other.damageWindowEndMs_;
-            energyDelta_ = other.energyDelta_;
-        }
-
-        public static pb::MessageParser<MoveSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[77]; }
-        }
-
-        public global::AllEnum.PokemonMovementType MovementId
-        {
-            get { return movementId_; }
-            set { movementId_ = value; }
-        }
-
-        public int AnimationId
-        {
-            get { return animationId_; }
-            set { animationId_ = value; }
-        }
-
-        public global::AllEnum.PokemonType PokemonType
-        {
-            get { return pokemonType_; }
-            set { pokemonType_ = value; }
-        }
-
-        public float Power
-        {
-            get { return power_; }
-            set { power_ = value; }
-        }
-
-        public float AccuracyChance
-        {
-            get { return accuracyChance_; }
-            set { accuracyChance_ = value; }
-        }
-
-        public float CriticalChance
-        {
-            get { return criticalChance_; }
-            set { criticalChance_ = value; }
-        }
-
-        public float HealScalar
-        {
-            get { return healScalar_; }
-            set { healScalar_ = value; }
-        }
-
-        public float StaminaLossScalar
-        {
-            get { return staminaLossScalar_; }
-            set { staminaLossScalar_ = value; }
-        }
-
-        public int TrainerLevelMin
-        {
-            get { return trainerLevelMin_; }
-            set { trainerLevelMin_ = value; }
-        }
-
-        public int TrainerLevelMax
-        {
-            get { return trainerLevelMax_; }
-            set { trainerLevelMax_ = value; }
-        }
-
-        public string VfxName
-        {
-            get { return vfxName_; }
-            set { vfxName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public int DurationMs
-        {
-            get { return durationMs_; }
-            set { durationMs_ = value; }
-        }
-
-        public int DamageWindowStartMs
-        {
-            get { return damageWindowStartMs_; }
-            set { damageWindowStartMs_ = value; }
-        }
-
-        public int DamageWindowEndMs
-        {
-            get { return damageWindowEndMs_; }
-            set { damageWindowEndMs_ = value; }
-        }
-
-        public int EnergyDelta
-        {
-            get { return energyDelta_; }
-            set { energyDelta_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public MoveSettings Clone()
-        {
-            return new MoveSettings(this);
-        }
-
-        public bool Equals(MoveSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (MovementId != other.MovementId) return false;
-            if (AnimationId != other.AnimationId) return false;
-            if (PokemonType != other.PokemonType) return false;
-            if (Power != other.Power) return false;
-            if (AccuracyChance != other.AccuracyChance) return false;
-            if (CriticalChance != other.CriticalChance) return false;
-            if (HealScalar != other.HealScalar) return false;
-            if (StaminaLossScalar != other.StaminaLossScalar) return false;
-            if (TrainerLevelMin != other.TrainerLevelMin) return false;
-            if (TrainerLevelMax != other.TrainerLevelMax) return false;
-            if (VfxName != other.VfxName) return false;
-            if (DurationMs != other.DurationMs) return false;
-            if (DamageWindowStartMs != other.DamageWindowStartMs) return false;
-            if (DamageWindowEndMs != other.DamageWindowEndMs) return false;
-            if (EnergyDelta != other.EnergyDelta) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (MovementId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)MovementId);
-            }
-            if (AnimationId != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(AnimationId);
-            }
-            if (PokemonType != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteEnum((int)PokemonType);
-            }
-            if (Power != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(Power);
-            }
-            if (AccuracyChance != 0F)
-            {
-                output.WriteRawTag(45);
-                output.WriteFloat(AccuracyChance);
-            }
-            if (CriticalChance != 0F)
-            {
-                output.WriteRawTag(53);
-                output.WriteFloat(CriticalChance);
-            }
-            if (HealScalar != 0F)
-            {
-                output.WriteRawTag(61);
-                output.WriteFloat(HealScalar);
-            }
-            if (StaminaLossScalar != 0F)
-            {
-                output.WriteRawTag(69);
-                output.WriteFloat(StaminaLossScalar);
-            }
-            if (TrainerLevelMin != 0)
-            {
-                output.WriteRawTag(72);
-                output.WriteInt32(TrainerLevelMin);
-            }
-            if (TrainerLevelMax != 0)
-            {
-                output.WriteRawTag(80);
-                output.WriteInt32(TrainerLevelMax);
-            }
-            if (VfxName.Length != 0)
-            {
-                output.WriteRawTag(90);
-                output.WriteString(VfxName);
-            }
-            if (DurationMs != 0)
-            {
-                output.WriteRawTag(96);
-                output.WriteInt32(DurationMs);
-            }
-            if (DamageWindowStartMs != 0)
-            {
-                output.WriteRawTag(104);
-                output.WriteInt32(DamageWindowStartMs);
-            }
-            if (DamageWindowEndMs != 0)
-            {
-                output.WriteRawTag(112);
-                output.WriteInt32(DamageWindowEndMs);
-            }
-            if (EnergyDelta != 0)
-            {
-                output.WriteRawTag(120);
-                output.WriteInt32(EnergyDelta);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (MovementId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)MovementId);
-            }
-            if (AnimationId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(AnimationId);
-            }
-            if (PokemonType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)PokemonType);
-            }
-            if (Power != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (AccuracyChance != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CriticalChance != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (HealScalar != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (StaminaLossScalar != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (TrainerLevelMin != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TrainerLevelMin);
-            }
-            if (TrainerLevelMax != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TrainerLevelMax);
-            }
-            if (VfxName.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(VfxName);
-            }
-            if (DurationMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DurationMs);
-            }
-            if (DamageWindowStartMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DamageWindowStartMs);
-            }
-            if (DamageWindowEndMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DamageWindowEndMs);
-            }
-            if (EnergyDelta != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EnergyDelta);
-            }
-            return size;
-        }
-
-        public void MergeFrom(MoveSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.MovementId != 0)
-            {
-                MovementId = other.MovementId;
-            }
-            if (other.AnimationId != 0)
-            {
-                AnimationId = other.AnimationId;
-            }
-            if (other.PokemonType != 0)
-            {
-                PokemonType = other.PokemonType;
-            }
-            if (other.Power != 0F)
-            {
-                Power = other.Power;
-            }
-            if (other.AccuracyChance != 0F)
-            {
-                AccuracyChance = other.AccuracyChance;
-            }
-            if (other.CriticalChance != 0F)
-            {
-                CriticalChance = other.CriticalChance;
-            }
-            if (other.HealScalar != 0F)
-            {
-                HealScalar = other.HealScalar;
-            }
-            if (other.StaminaLossScalar != 0F)
-            {
-                StaminaLossScalar = other.StaminaLossScalar;
-            }
-            if (other.TrainerLevelMin != 0)
-            {
-                TrainerLevelMin = other.TrainerLevelMin;
-            }
-            if (other.TrainerLevelMax != 0)
-            {
-                TrainerLevelMax = other.TrainerLevelMax;
-            }
-            if (other.VfxName.Length != 0)
-            {
-                VfxName = other.VfxName;
-            }
-            if (other.DurationMs != 0)
-            {
-                DurationMs = other.DurationMs;
-            }
-            if (other.DamageWindowStartMs != 0)
-            {
-                DamageWindowStartMs = other.DamageWindowStartMs;
-            }
-            if (other.DamageWindowEndMs != 0)
-            {
-                DamageWindowEndMs = other.DamageWindowEndMs;
-            }
-            if (other.EnergyDelta != 0)
-            {
-                EnergyDelta = other.EnergyDelta;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            movementId_ = (global::AllEnum.PokemonMovementType)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            AnimationId = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            pokemonType_ = (global::AllEnum.PokemonType)input.ReadEnum();
-                            break;
-                        }
-                    case 37:
-                        {
-                            Power = input.ReadFloat();
-                            break;
-                        }
-                    case 45:
-                        {
-                            AccuracyChance = input.ReadFloat();
-                            break;
-                        }
-                    case 53:
-                        {
-                            CriticalChance = input.ReadFloat();
-                            break;
-                        }
-                    case 61:
-                        {
-                            HealScalar = input.ReadFloat();
-                            break;
-                        }
-                    case 69:
-                        {
-                            StaminaLossScalar = input.ReadFloat();
-                            break;
-                        }
-                    case 72:
-                        {
-                            TrainerLevelMin = input.ReadInt32();
-                            break;
-                        }
-                    case 80:
-                        {
-                            TrainerLevelMax = input.ReadInt32();
-                            break;
-                        }
-                    case 90:
-                        {
-                            VfxName = input.ReadString();
-                            break;
-                        }
-                    case 96:
-                        {
-                            DurationMs = input.ReadInt32();
-                            break;
-                        }
-                    case 104:
-                        {
-                            DamageWindowStartMs = input.ReadInt32();
-                            break;
-                        }
-                    case 112:
-                        {
-                            DamageWindowEndMs = input.ReadInt32();
-                            break;
-                        }
-                    case 120:
-                        {
-                            EnergyDelta = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as MoveSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (MovementId != 0) hash ^= MovementId.GetHashCode();
-            if (AnimationId != 0) hash ^= AnimationId.GetHashCode();
-            if (PokemonType != 0) hash ^= PokemonType.GetHashCode();
-            if (Power != 0F) hash ^= Power.GetHashCode();
-            if (AccuracyChance != 0F) hash ^= AccuracyChance.GetHashCode();
-            if (CriticalChance != 0F) hash ^= CriticalChance.GetHashCode();
-            if (HealScalar != 0F) hash ^= HealScalar.GetHashCode();
-            if (StaminaLossScalar != 0F) hash ^= StaminaLossScalar.GetHashCode();
-            if (TrainerLevelMin != 0) hash ^= TrainerLevelMin.GetHashCode();
-            if (TrainerLevelMax != 0) hash ^= TrainerLevelMax.GetHashCode();
-            if (VfxName.Length != 0) hash ^= VfxName.GetHashCode();
-            if (DurationMs != 0) hash ^= DurationMs.GetHashCode();
-            if (DamageWindowStartMs != 0) hash ^= DamageWindowStartMs.GetHashCode();
-            if (DamageWindowEndMs != 0) hash ^= DamageWindowEndMs.GetHashCode();
-            if (EnergyDelta != 0) hash ^= EnergyDelta.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PokemonSettings : pb::IMessage<PokemonSettings>
-    {
-        /// <summary>Field number for the "pokemon_id" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-
-        /// <summary>Field number for the "model_scale" field.</summary>
-        public const int ModelScaleFieldNumber = 3;
-
-        /// <summary>Field number for the "type" field.</summary>
-        public const int TypeFieldNumber = 4;
-
-        /// <summary>Field number for the "type_2" field.</summary>
-        public const int Type2FieldNumber = 5;
-
-        /// <summary>Field number for the "camera" field.</summary>
-        public const int CameraFieldNumber = 6;
-
-        /// <summary>Field number for the "encounter" field.</summary>
-        public const int EncounterFieldNumber = 7;
-
-        /// <summary>Field number for the "stats" field.</summary>
-        public const int StatsFieldNumber = 8;
-
-        /// <summary>Field number for the "quick_moves" field.</summary>
-        public const int QuickMovesFieldNumber = 9;
-
-        /// <summary>Field number for the "cinematic_moves" field.</summary>
-        public const int CinematicMovesFieldNumber = 10;
-
-        /// <summary>Field number for the "animation_time" field.</summary>
-        public const int AnimationTimeFieldNumber = 11;
-
-        /// <summary>Field number for the "evolution_ids" field.</summary>
-        public const int EvolutionIdsFieldNumber = 12;
-
-        /// <summary>Field number for the "evolution_pips" field.</summary>
-        public const int EvolutionPipsFieldNumber = 13;
-
-        /// <summary>Field number for the "class" field.</summary>
-        public const int ClassFieldNumber = 14;
-
-        /// <summary>Field number for the "pokedex_height_m" field.</summary>
-        public const int PokedexHeightMFieldNumber = 15;
-
-        /// <summary>Field number for the "pokedex_weight_kg" field.</summary>
-        public const int PokedexWeightKgFieldNumber = 16;
-
-        /// <summary>Field number for the "parent_pokemon_id" field.</summary>
-        public const int ParentPokemonIdFieldNumber = 17;
-
-        /// <summary>Field number for the "height_std_dev" field.</summary>
-        public const int HeightStdDevFieldNumber = 18;
-
-        /// <summary>Field number for the "weight_std_dev" field.</summary>
-        public const int WeightStdDevFieldNumber = 19;
-
-        /// <summary>Field number for the "km_distance_to_hatch" field.</summary>
-        public const int KmDistanceToHatchFieldNumber = 20;
-
-        /// <summary>Field number for the "family_id" field.</summary>
-        public const int FamilyIdFieldNumber = 21;
-
-        /// <summary>Field number for the "candy_to_evolve" field.</summary>
-        public const int CandyToEvolveFieldNumber = 22;
-
-        private static readonly pb::MessageParser<PokemonSettings> _parser =
-            new pb::MessageParser<PokemonSettings>(() => new PokemonSettings());
-
-        private static readonly pb::FieldCodec<global::AllEnum.PokemonMove> _repeated_quickMoves_codec
-            = pb::FieldCodec.ForEnum(74, x => (int)x, x => (global::AllEnum.PokemonMove)x);
-
-        private static readonly pb::FieldCodec<global::AllEnum.PokemonMove> _repeated_cinematicMoves_codec
-            = pb::FieldCodec.ForEnum(82, x => (int)x, x => (global::AllEnum.PokemonMove)x);
-
-        private static readonly pb::FieldCodec<float> _repeated_animationTime_codec
-            = pb::FieldCodec.ForFloat(90);
-
-        private static readonly pb::FieldCodec<global::AllEnum.PokemonId> _repeated_evolutionIds_codec
-            = pb::FieldCodec.ForEnum(98, x => (int)x, x => (global::AllEnum.PokemonId)x);
-
-        private readonly pbc::RepeatedField<float> animationTime_ = new pbc::RepeatedField<float>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.PokemonMove> cinematicMoves_ =
-            new pbc::RepeatedField<global::AllEnum.PokemonMove>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.PokemonId> evolutionIds_ =
-            new pbc::RepeatedField<global::AllEnum.PokemonId>();
-
-        private readonly pbc::RepeatedField<global::AllEnum.PokemonMove> quickMoves_ =
-            new pbc::RepeatedField<global::AllEnum.PokemonMove>();
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes camera_;
-        private int candyToEvolve_;
-        private global::AllEnum.PokemonClass class_ = 0;
-        private global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes encounter_;
-        private int evolutionPips_;
-        private global::AllEnum.PokemonFamilyId familyId_ = 0;
-        private float heightStdDev_;
-        private float kmDistanceToHatch_;
-        private float modelScale_;
-        private global::AllEnum.PokemonId parentPokemonId_ = 0;
-        private float pokedexHeightM_;
-        private float pokedexWeightKg_;
-        private global::AllEnum.PokemonId pokemonId_ = 0;
-        private global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes stats_;
-        private global::AllEnum.PokemonType type_ = 0;
-        private global::AllEnum.PokemonType type2_ = 0;
-        private float weightStdDev_;
-
-        public PokemonSettings()
-        {
-            OnConstruction();
-        }
-
-        public PokemonSettings(PokemonSettings other) : this()
-        {
-            pokemonId_ = other.pokemonId_;
-            modelScale_ = other.modelScale_;
-            type_ = other.type_;
-            type2_ = other.type2_;
-            Camera = other.camera_ != null ? other.Camera.Clone() : null;
-            Encounter = other.encounter_ != null ? other.Encounter.Clone() : null;
-            Stats = other.stats_ != null ? other.Stats.Clone() : null;
-            quickMoves_ = other.quickMoves_.Clone();
-            cinematicMoves_ = other.cinematicMoves_.Clone();
-            animationTime_ = other.animationTime_.Clone();
-            evolutionIds_ = other.evolutionIds_.Clone();
-            evolutionPips_ = other.evolutionPips_;
-            class_ = other.class_;
-            pokedexHeightM_ = other.pokedexHeightM_;
-            pokedexWeightKg_ = other.pokedexWeightKg_;
-            parentPokemonId_ = other.parentPokemonId_;
-            heightStdDev_ = other.heightStdDev_;
-            weightStdDev_ = other.weightStdDev_;
-            kmDistanceToHatch_ = other.kmDistanceToHatch_;
-            familyId_ = other.familyId_;
-            candyToEvolve_ = other.candyToEvolve_;
-        }
-
-        public static pb::MessageParser<PokemonSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[78]; }
-        }
-
-        public global::AllEnum.PokemonId PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        public float ModelScale
-        {
-            get { return modelScale_; }
-            set { modelScale_ = value; }
-        }
-
-        public global::AllEnum.PokemonType Type
-        {
-            get { return type_; }
-            set { type_ = value; }
-        }
-
-        public global::AllEnum.PokemonType Type2
-        {
-            get { return type2_; }
-            set { type2_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes Camera
-        {
-            get { return camera_; }
-            set { camera_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes Encounter
-        {
-            get { return encounter_; }
-            set { encounter_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes Stats
-        {
-            get { return stats_; }
-            set { stats_ = value; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.PokemonMove> QuickMoves
-        {
-            get { return quickMoves_; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.PokemonMove> CinematicMoves
-        {
-            get { return cinematicMoves_; }
-        }
-
-        public pbc::RepeatedField<float> AnimationTime
-        {
-            get { return animationTime_; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.PokemonId> EvolutionIds
-        {
-            get { return evolutionIds_; }
-        }
-
-        public int EvolutionPips
-        {
-            get { return evolutionPips_; }
-            set { evolutionPips_ = value; }
-        }
-
-        public global::AllEnum.PokemonClass Class
-        {
-            get { return class_; }
-            set { class_ = value; }
-        }
-
-        public float PokedexHeightM
-        {
-            get { return pokedexHeightM_; }
-            set { pokedexHeightM_ = value; }
-        }
-
-        public float PokedexWeightKg
-        {
-            get { return pokedexWeightKg_; }
-            set { pokedexWeightKg_ = value; }
-        }
-
-        public global::AllEnum.PokemonId ParentPokemonId
-        {
-            get { return parentPokemonId_; }
-            set { parentPokemonId_ = value; }
-        }
-
-        public float HeightStdDev
-        {
-            get { return heightStdDev_; }
-            set { heightStdDev_ = value; }
-        }
-
-        public float WeightStdDev
-        {
-            get { return weightStdDev_; }
-            set { weightStdDev_ = value; }
-        }
-
-        public float KmDistanceToHatch
-        {
-            get { return kmDistanceToHatch_; }
-            set { kmDistanceToHatch_ = value; }
-        }
-
-        public global::AllEnum.PokemonFamilyId FamilyId
-        {
-            get { return familyId_; }
-            set { familyId_ = value; }
-        }
-
-        public int CandyToEvolve
-        {
-            get { return candyToEvolve_; }
-            set { candyToEvolve_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PokemonSettings Clone()
-        {
-            return new PokemonSettings(this);
-        }
-
-        public bool Equals(PokemonSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokemonId != other.PokemonId) return false;
-            if (ModelScale != other.ModelScale) return false;
-            if (Type != other.Type) return false;
-            if (Type2 != other.Type2) return false;
-            if (!Equals(Camera, other.Camera)) return false;
-            if (!Equals(Encounter, other.Encounter)) return false;
-            if (!Equals(Stats, other.Stats)) return false;
-            if (!quickMoves_.Equals(other.quickMoves_)) return false;
-            if (!cinematicMoves_.Equals(other.cinematicMoves_)) return false;
-            if (!animationTime_.Equals(other.animationTime_)) return false;
-            if (!evolutionIds_.Equals(other.evolutionIds_)) return false;
-            if (EvolutionPips != other.EvolutionPips) return false;
-            if (Class != other.Class) return false;
-            if (PokedexHeightM != other.PokedexHeightM) return false;
-            if (PokedexWeightKg != other.PokedexWeightKg) return false;
-            if (ParentPokemonId != other.ParentPokemonId) return false;
-            if (HeightStdDev != other.HeightStdDev) return false;
-            if (WeightStdDev != other.WeightStdDev) return false;
-            if (KmDistanceToHatch != other.KmDistanceToHatch) return false;
-            if (FamilyId != other.FamilyId) return false;
-            if (CandyToEvolve != other.CandyToEvolve) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokemonId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)PokemonId);
-            }
-            if (ModelScale != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(ModelScale);
-            }
-            if (Type != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteEnum((int)Type);
-            }
-            if (Type2 != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteEnum((int)Type2);
-            }
-            if (camera_ != null)
-            {
-                output.WriteRawTag(50);
-                output.WriteMessage(Camera);
-            }
-            if (encounter_ != null)
-            {
-                output.WriteRawTag(58);
-                output.WriteMessage(Encounter);
-            }
-            if (stats_ != null)
-            {
-                output.WriteRawTag(66);
-                output.WriteMessage(Stats);
-            }
-            quickMoves_.WriteTo(output, _repeated_quickMoves_codec);
-            cinematicMoves_.WriteTo(output, _repeated_cinematicMoves_codec);
-            animationTime_.WriteTo(output, _repeated_animationTime_codec);
-            evolutionIds_.WriteTo(output, _repeated_evolutionIds_codec);
-            if (EvolutionPips != 0)
-            {
-                output.WriteRawTag(104);
-                output.WriteInt32(EvolutionPips);
-            }
-            if (Class != 0)
-            {
-                output.WriteRawTag(112);
-                output.WriteEnum((int)Class);
-            }
-            if (PokedexHeightM != 0F)
-            {
-                output.WriteRawTag(125);
-                output.WriteFloat(PokedexHeightM);
-            }
-            if (PokedexWeightKg != 0F)
-            {
-                output.WriteRawTag(133, 1);
-                output.WriteFloat(PokedexWeightKg);
-            }
-            if (ParentPokemonId != 0)
-            {
-                output.WriteRawTag(136, 1);
-                output.WriteEnum((int)ParentPokemonId);
-            }
-            if (HeightStdDev != 0F)
-            {
-                output.WriteRawTag(149, 1);
-                output.WriteFloat(HeightStdDev);
-            }
-            if (WeightStdDev != 0F)
-            {
-                output.WriteRawTag(157, 1);
-                output.WriteFloat(WeightStdDev);
-            }
-            if (KmDistanceToHatch != 0F)
-            {
-                output.WriteRawTag(165, 1);
-                output.WriteFloat(KmDistanceToHatch);
-            }
-            if (FamilyId != 0)
-            {
-                output.WriteRawTag(168, 1);
-                output.WriteEnum((int)FamilyId);
-            }
-            if (CandyToEvolve != 0)
-            {
-                output.WriteRawTag(176, 1);
-                output.WriteInt32(CandyToEvolve);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokemonId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)PokemonId);
-            }
-            if (ModelScale != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (Type != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Type);
-            }
-            if (Type2 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Type2);
-            }
-            if (camera_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Camera);
-            }
-            if (encounter_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Encounter);
-            }
-            if (stats_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Stats);
-            }
-            size += quickMoves_.CalculateSize(_repeated_quickMoves_codec);
-            size += cinematicMoves_.CalculateSize(_repeated_cinematicMoves_codec);
-            size += animationTime_.CalculateSize(_repeated_animationTime_codec);
-            size += evolutionIds_.CalculateSize(_repeated_evolutionIds_codec);
-            if (EvolutionPips != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionPips);
-            }
-            if (Class != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Class);
-            }
-            if (PokedexHeightM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (PokedexWeightKg != 0F)
-            {
-                size += 2 + 4;
-            }
-            if (ParentPokemonId != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeEnumSize((int)ParentPokemonId);
-            }
-            if (HeightStdDev != 0F)
-            {
-                size += 2 + 4;
-            }
-            if (WeightStdDev != 0F)
-            {
-                size += 2 + 4;
-            }
-            if (KmDistanceToHatch != 0F)
-            {
-                size += 2 + 4;
-            }
-            if (FamilyId != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeEnumSize((int)FamilyId);
-            }
-            if (CandyToEvolve != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeInt32Size(CandyToEvolve);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PokemonSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokemonId != 0)
-            {
-                PokemonId = other.PokemonId;
-            }
-            if (other.ModelScale != 0F)
-            {
-                ModelScale = other.ModelScale;
-            }
-            if (other.Type != 0)
-            {
-                Type = other.Type;
-            }
-            if (other.Type2 != 0)
-            {
-                Type2 = other.Type2;
-            }
-            if (other.camera_ != null)
-            {
-                if (camera_ == null)
-                {
-                    camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes();
-                }
-                Camera.MergeFrom(other.Camera);
-            }
-            if (other.encounter_ != null)
-            {
-                if (encounter_ == null)
-                {
-                    encounter_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes();
-                }
-                Encounter.MergeFrom(other.Encounter);
-            }
-            if (other.stats_ != null)
-            {
-                if (stats_ == null)
-                {
-                    stats_ = new global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes();
-                }
-                Stats.MergeFrom(other.Stats);
-            }
-            quickMoves_.Add(other.quickMoves_);
-            cinematicMoves_.Add(other.cinematicMoves_);
-            animationTime_.Add(other.animationTime_);
-            evolutionIds_.Add(other.evolutionIds_);
-            if (other.EvolutionPips != 0)
-            {
-                EvolutionPips = other.EvolutionPips;
-            }
-            if (other.Class != 0)
-            {
-                Class = other.Class;
-            }
-            if (other.PokedexHeightM != 0F)
-            {
-                PokedexHeightM = other.PokedexHeightM;
-            }
-            if (other.PokedexWeightKg != 0F)
-            {
-                PokedexWeightKg = other.PokedexWeightKg;
-            }
-            if (other.ParentPokemonId != 0)
-            {
-                ParentPokemonId = other.ParentPokemonId;
-            }
-            if (other.HeightStdDev != 0F)
-            {
-                HeightStdDev = other.HeightStdDev;
-            }
-            if (other.WeightStdDev != 0F)
-            {
-                WeightStdDev = other.WeightStdDev;
-            }
-            if (other.KmDistanceToHatch != 0F)
-            {
-                KmDistanceToHatch = other.KmDistanceToHatch;
-            }
-            if (other.FamilyId != 0)
-            {
-                FamilyId = other.FamilyId;
-            }
-            if (other.CandyToEvolve != 0)
-            {
-                CandyToEvolve = other.CandyToEvolve;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            pokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 29:
-                        {
-                            ModelScale = input.ReadFloat();
-                            break;
-                        }
-                    case 32:
-                        {
-                            type_ = (global::AllEnum.PokemonType)input.ReadEnum();
-                            break;
-                        }
-                    case 40:
-                        {
-                            type2_ = (global::AllEnum.PokemonType)input.ReadEnum();
-                            break;
-                        }
-                    case 50:
-                        {
-                            if (camera_ == null)
-                            {
-                                camera_ = new global::PokemonGo.RocketAPI.GeneratedCode.CameraAttributes();
-                            }
-                            input.ReadMessage(camera_);
-                            break;
-                        }
-                    case 58:
-                        {
-                            if (encounter_ == null)
-                            {
-                                encounter_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterAttributes();
-                            }
-                            input.ReadMessage(encounter_);
-                            break;
-                        }
-                    case 66:
-                        {
-                            if (stats_ == null)
-                            {
-                                stats_ = new global::PokemonGo.RocketAPI.GeneratedCode.StatsAttributes();
-                            }
-                            input.ReadMessage(stats_);
-                            break;
-                        }
-                    case 74:
-                    case 72:
-                        {
-                            quickMoves_.AddEntriesFrom(input, _repeated_quickMoves_codec);
-                            break;
-                        }
-                    case 82:
-                    case 80:
-                        {
-                            cinematicMoves_.AddEntriesFrom(input, _repeated_cinematicMoves_codec);
-                            break;
-                        }
-                    case 90:
-                    case 93:
-                        {
-                            animationTime_.AddEntriesFrom(input, _repeated_animationTime_codec);
-                            break;
-                        }
-                    case 98:
-                    case 96:
-                        {
-                            evolutionIds_.AddEntriesFrom(input, _repeated_evolutionIds_codec);
-                            break;
-                        }
-                    case 104:
-                        {
-                            EvolutionPips = input.ReadInt32();
-                            break;
-                        }
-                    case 112:
-                        {
-                            class_ = (global::AllEnum.PokemonClass)input.ReadEnum();
-                            break;
-                        }
-                    case 125:
-                        {
-                            PokedexHeightM = input.ReadFloat();
-                            break;
-                        }
-                    case 133:
-                        {
-                            PokedexWeightKg = input.ReadFloat();
-                            break;
-                        }
-                    case 136:
-                        {
-                            parentPokemonId_ = (global::AllEnum.PokemonId)input.ReadEnum();
-                            break;
-                        }
-                    case 149:
-                        {
-                            HeightStdDev = input.ReadFloat();
-                            break;
-                        }
-                    case 157:
-                        {
-                            WeightStdDev = input.ReadFloat();
-                            break;
-                        }
-                    case 165:
-                        {
-                            KmDistanceToHatch = input.ReadFloat();
-                            break;
-                        }
-                    case 168:
-                        {
-                            familyId_ = (global::AllEnum.PokemonFamilyId)input.ReadEnum();
-                            break;
-                        }
-                    case 176:
-                        {
-                            CandyToEvolve = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PokemonSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
-            if (ModelScale != 0F) hash ^= ModelScale.GetHashCode();
-            if (Type != 0) hash ^= Type.GetHashCode();
-            if (Type2 != 0) hash ^= Type2.GetHashCode();
-            if (camera_ != null) hash ^= Camera.GetHashCode();
-            if (encounter_ != null) hash ^= Encounter.GetHashCode();
-            if (stats_ != null) hash ^= Stats.GetHashCode();
-            hash ^= quickMoves_.GetHashCode();
-            hash ^= cinematicMoves_.GetHashCode();
-            hash ^= animationTime_.GetHashCode();
-            hash ^= evolutionIds_.GetHashCode();
-            if (EvolutionPips != 0) hash ^= EvolutionPips.GetHashCode();
-            if (Class != 0) hash ^= Class.GetHashCode();
-            if (PokedexHeightM != 0F) hash ^= PokedexHeightM.GetHashCode();
-            if (PokedexWeightKg != 0F) hash ^= PokedexWeightKg.GetHashCode();
-            if (ParentPokemonId != 0) hash ^= ParentPokemonId.GetHashCode();
-            if (HeightStdDev != 0F) hash ^= HeightStdDev.GetHashCode();
-            if (WeightStdDev != 0F) hash ^= WeightStdDev.GetHashCode();
-            if (KmDistanceToHatch != 0F) hash ^= KmDistanceToHatch.GetHashCode();
-            if (FamilyId != 0) hash ^= FamilyId.GetHashCode();
-            if (CandyToEvolve != 0) hash ^= CandyToEvolve.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class CameraAttributes : pb::IMessage<CameraAttributes>
-    {
-        /// <summary>Field number for the "disk_radius_m" field.</summary>
-        public const int DiskRadiusMFieldNumber = 1;
-
-        /// <summary>Field number for the "cylinder_radius_m" field.</summary>
-        public const int CylinderRadiusMFieldNumber = 2;
-
-        /// <summary>Field number for the "cylinder_height_m" field.</summary>
-        public const int CylinderHeightMFieldNumber = 3;
-
-        /// <summary>Field number for the "cylinder_ground_m" field.</summary>
-        public const int CylinderGroundMFieldNumber = 4;
-
-        /// <summary>Field number for the "shoulder_mode_scale" field.</summary>
-        public const int ShoulderModeScaleFieldNumber = 5;
-
-        private static readonly pb::MessageParser<CameraAttributes> _parser =
-            new pb::MessageParser<CameraAttributes>(() => new CameraAttributes());
-
-        private float cylinderGroundM_;
-        private float cylinderHeightM_;
-        private float cylinderRadiusM_;
-        private float diskRadiusM_;
-        private float shoulderModeScale_;
-
-        public CameraAttributes()
-        {
-            OnConstruction();
-        }
-
-        public CameraAttributes(CameraAttributes other) : this()
-        {
-            diskRadiusM_ = other.diskRadiusM_;
-            cylinderRadiusM_ = other.cylinderRadiusM_;
-            cylinderHeightM_ = other.cylinderHeightM_;
-            cylinderGroundM_ = other.cylinderGroundM_;
-            shoulderModeScale_ = other.shoulderModeScale_;
-        }
-
-        public static pb::MessageParser<CameraAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[79]; }
-        }
-
-        public float DiskRadiusM
-        {
-            get { return diskRadiusM_; }
-            set { diskRadiusM_ = value; }
-        }
-
-        public float CylinderRadiusM
-        {
-            get { return cylinderRadiusM_; }
-            set { cylinderRadiusM_ = value; }
-        }
-
-        public float CylinderHeightM
-        {
-            get { return cylinderHeightM_; }
-            set { cylinderHeightM_ = value; }
-        }
-
-        public float CylinderGroundM
-        {
-            get { return cylinderGroundM_; }
-            set { cylinderGroundM_ = value; }
-        }
-
-        public float ShoulderModeScale
-        {
-            get { return shoulderModeScale_; }
-            set { shoulderModeScale_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public CameraAttributes Clone()
-        {
-            return new CameraAttributes(this);
-        }
-
-        public bool Equals(CameraAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (DiskRadiusM != other.DiskRadiusM) return false;
-            if (CylinderRadiusM != other.CylinderRadiusM) return false;
-            if (CylinderHeightM != other.CylinderHeightM) return false;
-            if (CylinderGroundM != other.CylinderGroundM) return false;
-            if (ShoulderModeScale != other.ShoulderModeScale) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (DiskRadiusM != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(DiskRadiusM);
-            }
-            if (CylinderRadiusM != 0F)
-            {
-                output.WriteRawTag(21);
-                output.WriteFloat(CylinderRadiusM);
-            }
-            if (CylinderHeightM != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(CylinderHeightM);
-            }
-            if (CylinderGroundM != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(CylinderGroundM);
-            }
-            if (ShoulderModeScale != 0F)
-            {
-                output.WriteRawTag(45);
-                output.WriteFloat(ShoulderModeScale);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (DiskRadiusM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CylinderRadiusM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CylinderHeightM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CylinderGroundM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (ShoulderModeScale != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(CameraAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.DiskRadiusM != 0F)
-            {
-                DiskRadiusM = other.DiskRadiusM;
-            }
-            if (other.CylinderRadiusM != 0F)
-            {
-                CylinderRadiusM = other.CylinderRadiusM;
-            }
-            if (other.CylinderHeightM != 0F)
-            {
-                CylinderHeightM = other.CylinderHeightM;
-            }
-            if (other.CylinderGroundM != 0F)
-            {
-                CylinderGroundM = other.CylinderGroundM;
-            }
-            if (other.ShoulderModeScale != 0F)
-            {
-                ShoulderModeScale = other.ShoulderModeScale;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            DiskRadiusM = input.ReadFloat();
-                            break;
-                        }
-                    case 21:
-                        {
-                            CylinderRadiusM = input.ReadFloat();
-                            break;
-                        }
-                    case 29:
-                        {
-                            CylinderHeightM = input.ReadFloat();
-                            break;
-                        }
-                    case 37:
-                        {
-                            CylinderGroundM = input.ReadFloat();
-                            break;
-                        }
-                    case 45:
-                        {
-                            ShoulderModeScale = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as CameraAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (DiskRadiusM != 0F) hash ^= DiskRadiusM.GetHashCode();
-            if (CylinderRadiusM != 0F) hash ^= CylinderRadiusM.GetHashCode();
-            if (CylinderHeightM != 0F) hash ^= CylinderHeightM.GetHashCode();
-            if (CylinderGroundM != 0F) hash ^= CylinderGroundM.GetHashCode();
-            if (ShoulderModeScale != 0F) hash ^= ShoulderModeScale.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EncounterAttributes : pb::IMessage<EncounterAttributes>
-    {
-        /// <summary>Field number for the "base_capture_rate" field.</summary>
-        public const int BaseCaptureRateFieldNumber = 1;
-
-        /// <summary>Field number for the "base_flee_rate" field.</summary>
-        public const int BaseFleeRateFieldNumber = 2;
-
-        /// <summary>Field number for the "collision_radius_m" field.</summary>
-        public const int CollisionRadiusMFieldNumber = 3;
-
-        /// <summary>Field number for the "collision_height_m" field.</summary>
-        public const int CollisionHeightMFieldNumber = 4;
-
-        /// <summary>Field number for the "collision_head_radius_m" field.</summary>
-        public const int CollisionHeadRadiusMFieldNumber = 5;
-
-        /// <summary>Field number for the "movement_type" field.</summary>
-        public const int MovementTypeFieldNumber = 6;
-
-        /// <summary>Field number for the "movement_timer_s" field.</summary>
-        public const int MovementTimerSFieldNumber = 7;
-
-        /// <summary>Field number for the "jump_time_s" field.</summary>
-        public const int JumpTimeSFieldNumber = 8;
-
-        /// <summary>Field number for the "attack_timer_s" field.</summary>
-        public const int AttackTimerSFieldNumber = 9;
-
-        private static readonly pb::MessageParser<EncounterAttributes> _parser =
-            new pb::MessageParser<EncounterAttributes>(() => new EncounterAttributes());
-
-        private float attackTimerS_;
-        private float baseCaptureRate_;
-        private float baseFleeRate_;
-        private float collisionHeadRadiusM_;
-        private float collisionHeightM_;
-        private float collisionRadiusM_;
-        private float jumpTimeS_;
-        private float movementTimerS_;
-        private global::AllEnum.PokemonMovementType movementType_ = 0;
-
-        public EncounterAttributes()
-        {
-            OnConstruction();
-        }
-
-        public EncounterAttributes(EncounterAttributes other) : this()
-        {
-            baseCaptureRate_ = other.baseCaptureRate_;
-            baseFleeRate_ = other.baseFleeRate_;
-            collisionRadiusM_ = other.collisionRadiusM_;
-            collisionHeightM_ = other.collisionHeightM_;
-            collisionHeadRadiusM_ = other.collisionHeadRadiusM_;
-            movementType_ = other.movementType_;
-            movementTimerS_ = other.movementTimerS_;
-            jumpTimeS_ = other.jumpTimeS_;
-            attackTimerS_ = other.attackTimerS_;
-        }
-
-        public static pb::MessageParser<EncounterAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[80]; }
-        }
-
-        public float BaseCaptureRate
-        {
-            get { return baseCaptureRate_; }
-            set { baseCaptureRate_ = value; }
-        }
-
-        public float BaseFleeRate
-        {
-            get { return baseFleeRate_; }
-            set { baseFleeRate_ = value; }
-        }
-
-        public float CollisionRadiusM
-        {
-            get { return collisionRadiusM_; }
-            set { collisionRadiusM_ = value; }
-        }
-
-        public float CollisionHeightM
-        {
-            get { return collisionHeightM_; }
-            set { collisionHeightM_ = value; }
-        }
-
-        public float CollisionHeadRadiusM
-        {
-            get { return collisionHeadRadiusM_; }
-            set { collisionHeadRadiusM_ = value; }
-        }
-
-        public global::AllEnum.PokemonMovementType MovementType
-        {
-            get { return movementType_; }
-            set { movementType_ = value; }
-        }
-
-        public float MovementTimerS
-        {
-            get { return movementTimerS_; }
-            set { movementTimerS_ = value; }
-        }
-
-        public float JumpTimeS
-        {
-            get { return jumpTimeS_; }
-            set { jumpTimeS_ = value; }
-        }
-
-        public float AttackTimerS
-        {
-            get { return attackTimerS_; }
-            set { attackTimerS_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EncounterAttributes Clone()
-        {
-            return new EncounterAttributes(this);
-        }
-
-        public bool Equals(EncounterAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (BaseCaptureRate != other.BaseCaptureRate) return false;
-            if (BaseFleeRate != other.BaseFleeRate) return false;
-            if (CollisionRadiusM != other.CollisionRadiusM) return false;
-            if (CollisionHeightM != other.CollisionHeightM) return false;
-            if (CollisionHeadRadiusM != other.CollisionHeadRadiusM) return false;
-            if (MovementType != other.MovementType) return false;
-            if (MovementTimerS != other.MovementTimerS) return false;
-            if (JumpTimeS != other.JumpTimeS) return false;
-            if (AttackTimerS != other.AttackTimerS) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (BaseCaptureRate != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(BaseCaptureRate);
-            }
-            if (BaseFleeRate != 0F)
-            {
-                output.WriteRawTag(21);
-                output.WriteFloat(BaseFleeRate);
-            }
-            if (CollisionRadiusM != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(CollisionRadiusM);
-            }
-            if (CollisionHeightM != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(CollisionHeightM);
-            }
-            if (CollisionHeadRadiusM != 0F)
-            {
-                output.WriteRawTag(45);
-                output.WriteFloat(CollisionHeadRadiusM);
-            }
-            if (MovementType != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteEnum((int)MovementType);
-            }
-            if (MovementTimerS != 0F)
-            {
-                output.WriteRawTag(61);
-                output.WriteFloat(MovementTimerS);
-            }
-            if (JumpTimeS != 0F)
-            {
-                output.WriteRawTag(69);
-                output.WriteFloat(JumpTimeS);
-            }
-            if (AttackTimerS != 0F)
-            {
-                output.WriteRawTag(77);
-                output.WriteFloat(AttackTimerS);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (BaseCaptureRate != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (BaseFleeRate != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CollisionRadiusM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CollisionHeightM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CollisionHeadRadiusM != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (MovementType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)MovementType);
-            }
-            if (MovementTimerS != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (JumpTimeS != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (AttackTimerS != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(EncounterAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.BaseCaptureRate != 0F)
-            {
-                BaseCaptureRate = other.BaseCaptureRate;
-            }
-            if (other.BaseFleeRate != 0F)
-            {
-                BaseFleeRate = other.BaseFleeRate;
-            }
-            if (other.CollisionRadiusM != 0F)
-            {
-                CollisionRadiusM = other.CollisionRadiusM;
-            }
-            if (other.CollisionHeightM != 0F)
-            {
-                CollisionHeightM = other.CollisionHeightM;
-            }
-            if (other.CollisionHeadRadiusM != 0F)
-            {
-                CollisionHeadRadiusM = other.CollisionHeadRadiusM;
-            }
-            if (other.MovementType != 0)
-            {
-                MovementType = other.MovementType;
-            }
-            if (other.MovementTimerS != 0F)
-            {
-                MovementTimerS = other.MovementTimerS;
-            }
-            if (other.JumpTimeS != 0F)
-            {
-                JumpTimeS = other.JumpTimeS;
-            }
-            if (other.AttackTimerS != 0F)
-            {
-                AttackTimerS = other.AttackTimerS;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            BaseCaptureRate = input.ReadFloat();
-                            break;
-                        }
-                    case 21:
-                        {
-                            BaseFleeRate = input.ReadFloat();
-                            break;
-                        }
-                    case 29:
-                        {
-                            CollisionRadiusM = input.ReadFloat();
-                            break;
-                        }
-                    case 37:
-                        {
-                            CollisionHeightM = input.ReadFloat();
-                            break;
-                        }
-                    case 45:
-                        {
-                            CollisionHeadRadiusM = input.ReadFloat();
-                            break;
-                        }
-                    case 48:
-                        {
-                            movementType_ = (global::AllEnum.PokemonMovementType)input.ReadEnum();
-                            break;
-                        }
-                    case 61:
-                        {
-                            MovementTimerS = input.ReadFloat();
-                            break;
-                        }
-                    case 69:
-                        {
-                            JumpTimeS = input.ReadFloat();
-                            break;
-                        }
-                    case 77:
-                        {
-                            AttackTimerS = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EncounterAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (BaseCaptureRate != 0F) hash ^= BaseCaptureRate.GetHashCode();
-            if (BaseFleeRate != 0F) hash ^= BaseFleeRate.GetHashCode();
-            if (CollisionRadiusM != 0F) hash ^= CollisionRadiusM.GetHashCode();
-            if (CollisionHeightM != 0F) hash ^= CollisionHeightM.GetHashCode();
-            if (CollisionHeadRadiusM != 0F) hash ^= CollisionHeadRadiusM.GetHashCode();
-            if (MovementType != 0) hash ^= MovementType.GetHashCode();
-            if (MovementTimerS != 0F) hash ^= MovementTimerS.GetHashCode();
-            if (JumpTimeS != 0F) hash ^= JumpTimeS.GetHashCode();
-            if (AttackTimerS != 0F) hash ^= AttackTimerS.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class StatsAttributes : pb::IMessage<StatsAttributes>
-    {
-        /// <summary>Field number for the "base_stamina" field.</summary>
-        public const int BaseStaminaFieldNumber = 1;
-
-        /// <summary>Field number for the "base_attack" field.</summary>
-        public const int BaseAttackFieldNumber = 2;
-
-        /// <summary>Field number for the "base_defense" field.</summary>
-        public const int BaseDefenseFieldNumber = 3;
-
-        /// <summary>Field number for the "dodge_energy_delta" field.</summary>
-        public const int DodgeEnergyDeltaFieldNumber = 8;
-
-        private static readonly pb::MessageParser<StatsAttributes> _parser =
-            new pb::MessageParser<StatsAttributes>(() => new StatsAttributes());
-
-        private int baseAttack_;
-        private int baseDefense_;
-        private int baseStamina_;
-        private int dodgeEnergyDelta_;
-
-        public StatsAttributes()
-        {
-            OnConstruction();
-        }
-
-        public StatsAttributes(StatsAttributes other) : this()
-        {
-            baseStamina_ = other.baseStamina_;
-            baseAttack_ = other.baseAttack_;
-            baseDefense_ = other.baseDefense_;
-            dodgeEnergyDelta_ = other.dodgeEnergyDelta_;
-        }
-
-        public static pb::MessageParser<StatsAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[81]; }
-        }
-
-        public int BaseStamina
-        {
-            get { return baseStamina_; }
-            set { baseStamina_ = value; }
-        }
-
-        public int BaseAttack
-        {
-            get { return baseAttack_; }
-            set { baseAttack_ = value; }
-        }
-
-        public int BaseDefense
-        {
-            get { return baseDefense_; }
-            set { baseDefense_ = value; }
-        }
-
-        public int DodgeEnergyDelta
-        {
-            get { return dodgeEnergyDelta_; }
-            set { dodgeEnergyDelta_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public StatsAttributes Clone()
-        {
-            return new StatsAttributes(this);
-        }
-
-        public bool Equals(StatsAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (BaseStamina != other.BaseStamina) return false;
-            if (BaseAttack != other.BaseAttack) return false;
-            if (BaseDefense != other.BaseDefense) return false;
-            if (DodgeEnergyDelta != other.DodgeEnergyDelta) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (BaseStamina != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(BaseStamina);
-            }
-            if (BaseAttack != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(BaseAttack);
-            }
-            if (BaseDefense != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(BaseDefense);
-            }
-            if (DodgeEnergyDelta != 0)
-            {
-                output.WriteRawTag(64);
-                output.WriteInt32(DodgeEnergyDelta);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (BaseStamina != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseStamina);
-            }
-            if (BaseAttack != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseAttack);
-            }
-            if (BaseDefense != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BaseDefense);
-            }
-            if (DodgeEnergyDelta != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DodgeEnergyDelta);
-            }
-            return size;
-        }
-
-        public void MergeFrom(StatsAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.BaseStamina != 0)
-            {
-                BaseStamina = other.BaseStamina;
-            }
-            if (other.BaseAttack != 0)
-            {
-                BaseAttack = other.BaseAttack;
-            }
-            if (other.BaseDefense != 0)
-            {
-                BaseDefense = other.BaseDefense;
-            }
-            if (other.DodgeEnergyDelta != 0)
-            {
-                DodgeEnergyDelta = other.DodgeEnergyDelta;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            BaseStamina = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            BaseAttack = input.ReadInt32();
-                            break;
-                        }
-                    case 24:
-                        {
-                            BaseDefense = input.ReadInt32();
-                            break;
-                        }
-                    case 64:
-                        {
-                            DodgeEnergyDelta = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as StatsAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (BaseStamina != 0) hash ^= BaseStamina.GetHashCode();
-            if (BaseAttack != 0) hash ^= BaseAttack.GetHashCode();
-            if (BaseDefense != 0) hash ^= BaseDefense.GetHashCode();
-            if (DodgeEnergyDelta != 0) hash ^= DodgeEnergyDelta.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class ItemSettings : pb::IMessage<ItemSettings>
-    {
-        /// <summary>Field number for the "item_id" field.</summary>
-        public const int ItemIdFieldNumber = 1;
-
-        /// <summary>Field number for the "item_type" field.</summary>
-        public const int ItemTypeFieldNumber = 2;
-
-        /// <summary>Field number for the "category" field.</summary>
-        public const int CategoryFieldNumber = 3;
-
-        /// <summary>Field number for the "drop_freq" field.</summary>
-        public const int DropFreqFieldNumber = 4;
-
-        /// <summary>Field number for the "drop_trainer_level" field.</summary>
-        public const int DropTrainerLevelFieldNumber = 5;
-
-        /// <summary>Field number for the "pokeball" field.</summary>
-        public const int PokeballFieldNumber = 6;
-
-        /// <summary>Field number for the "potion" field.</summary>
-        public const int PotionFieldNumber = 7;
-
-        /// <summary>Field number for the "revive" field.</summary>
-        public const int ReviveFieldNumber = 8;
-
-        /// <summary>Field number for the "battle" field.</summary>
-        public const int BattleFieldNumber = 9;
-
-        /// <summary>Field number for the "food" field.</summary>
-        public const int FoodFieldNumber = 10;
-
-        /// <summary>Field number for the "inventory_upgrade" field.</summary>
-        public const int InventoryUpgradeFieldNumber = 11;
-
-        /// <summary>Field number for the "xp_boost" field.</summary>
-        public const int XpBoostFieldNumber = 12;
-
-        /// <summary>Field number for the "incense" field.</summary>
-        public const int IncenseFieldNumber = 13;
-
-        /// <summary>Field number for the "egg_incubator" field.</summary>
-        public const int EggIncubatorFieldNumber = 14;
-
-        /// <summary>Field number for the "fort_modifier" field.</summary>
-        public const int FortModifierFieldNumber = 15;
-
-        private static readonly pb::MessageParser<ItemSettings> _parser =
-            new pb::MessageParser<ItemSettings>(() => new ItemSettings());
-
-        private global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes battle_;
-        private global::AllEnum.ItemCategory category_ = 0;
-        private float dropFreq_;
-        private int dropTrainerLevel_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes eggIncubator_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes food_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes fortModifier_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes incense_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes inventoryUpgrade_;
-        private global::AllEnum.ItemId itemId_ = 0;
-        private global::AllEnum.ItemType itemType_ = 0;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes pokeball_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes potion_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes revive_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes xpBoost_;
-
-        public ItemSettings()
-        {
-            OnConstruction();
-        }
-
-        public ItemSettings(ItemSettings other) : this()
-        {
-            itemId_ = other.itemId_;
-            itemType_ = other.itemType_;
-            category_ = other.category_;
-            dropFreq_ = other.dropFreq_;
-            dropTrainerLevel_ = other.dropTrainerLevel_;
-            Pokeball = other.pokeball_ != null ? other.Pokeball.Clone() : null;
-            Potion = other.potion_ != null ? other.Potion.Clone() : null;
-            Revive = other.revive_ != null ? other.Revive.Clone() : null;
-            Battle = other.battle_ != null ? other.Battle.Clone() : null;
-            Food = other.food_ != null ? other.Food.Clone() : null;
-            InventoryUpgrade = other.inventoryUpgrade_ != null ? other.InventoryUpgrade.Clone() : null;
-            XpBoost = other.xpBoost_ != null ? other.XpBoost.Clone() : null;
-            Incense = other.incense_ != null ? other.Incense.Clone() : null;
-            EggIncubator = other.eggIncubator_ != null ? other.EggIncubator.Clone() : null;
-            FortModifier = other.fortModifier_ != null ? other.FortModifier.Clone() : null;
-        }
-
-        public static pb::MessageParser<ItemSettings> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[82]; }
-        }
-
-        public global::AllEnum.ItemId ItemId
-        {
-            get { return itemId_; }
-            set { itemId_ = value; }
-        }
-
-        public global::AllEnum.ItemType ItemType
-        {
-            get { return itemType_; }
-            set { itemType_ = value; }
-        }
-
-        public global::AllEnum.ItemCategory Category
-        {
-            get { return category_; }
-            set { category_ = value; }
-        }
-
-        public float DropFreq
-        {
-            get { return dropFreq_; }
-            set { dropFreq_ = value; }
-        }
-
-        public int DropTrainerLevel
-        {
-            get { return dropTrainerLevel_; }
-            set { dropTrainerLevel_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes Pokeball
-        {
-            get { return pokeball_; }
-            set { pokeball_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes Potion
-        {
-            get { return potion_; }
-            set { potion_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes Revive
-        {
-            get { return revive_; }
-            set { revive_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes Battle
-        {
-            get { return battle_; }
-            set { battle_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes Food
-        {
-            get { return food_; }
-            set { food_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes InventoryUpgrade
-        {
-            get { return inventoryUpgrade_; }
-            set { inventoryUpgrade_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes XpBoost
-        {
-            get { return xpBoost_; }
-            set { xpBoost_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes Incense
-        {
-            get { return incense_; }
-            set { incense_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes EggIncubator
-        {
-            get { return eggIncubator_; }
-            set { eggIncubator_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes FortModifier
-        {
-            get { return fortModifier_; }
-            set { fortModifier_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public ItemSettings Clone()
-        {
-            return new ItemSettings(this);
-        }
-
-        public bool Equals(ItemSettings other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemId != other.ItemId) return false;
-            if (ItemType != other.ItemType) return false;
-            if (Category != other.Category) return false;
-            if (DropFreq != other.DropFreq) return false;
-            if (DropTrainerLevel != other.DropTrainerLevel) return false;
-            if (!Equals(Pokeball, other.Pokeball)) return false;
-            if (!Equals(Potion, other.Potion)) return false;
-            if (!Equals(Revive, other.Revive)) return false;
-            if (!Equals(Battle, other.Battle)) return false;
-            if (!Equals(Food, other.Food)) return false;
-            if (!Equals(InventoryUpgrade, other.InventoryUpgrade)) return false;
-            if (!Equals(XpBoost, other.XpBoost)) return false;
-            if (!Equals(Incense, other.Incense)) return false;
-            if (!Equals(EggIncubator, other.EggIncubator)) return false;
-            if (!Equals(FortModifier, other.FortModifier)) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemId != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)ItemId);
-            }
-            if (ItemType != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)ItemType);
-            }
-            if (Category != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteEnum((int)Category);
-            }
-            if (DropFreq != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(DropFreq);
-            }
-            if (DropTrainerLevel != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(DropTrainerLevel);
-            }
-            if (pokeball_ != null)
-            {
-                output.WriteRawTag(50);
-                output.WriteMessage(Pokeball);
-            }
-            if (potion_ != null)
-            {
-                output.WriteRawTag(58);
-                output.WriteMessage(Potion);
-            }
-            if (revive_ != null)
-            {
-                output.WriteRawTag(66);
-                output.WriteMessage(Revive);
-            }
-            if (battle_ != null)
-            {
-                output.WriteRawTag(74);
-                output.WriteMessage(Battle);
-            }
-            if (food_ != null)
-            {
-                output.WriteRawTag(82);
-                output.WriteMessage(Food);
-            }
-            if (inventoryUpgrade_ != null)
-            {
-                output.WriteRawTag(90);
-                output.WriteMessage(InventoryUpgrade);
-            }
-            if (xpBoost_ != null)
-            {
-                output.WriteRawTag(98);
-                output.WriteMessage(XpBoost);
-            }
-            if (incense_ != null)
-            {
-                output.WriteRawTag(106);
-                output.WriteMessage(Incense);
-            }
-            if (eggIncubator_ != null)
-            {
-                output.WriteRawTag(114);
-                output.WriteMessage(EggIncubator);
-            }
-            if (fortModifier_ != null)
-            {
-                output.WriteRawTag(122);
-                output.WriteMessage(FortModifier);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemId != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemId);
-            }
-            if (ItemType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemType);
-            }
-            if (Category != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)Category);
-            }
-            if (DropFreq != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (DropTrainerLevel != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DropTrainerLevel);
-            }
-            if (pokeball_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokeball);
-            }
-            if (potion_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Potion);
-            }
-            if (revive_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Revive);
-            }
-            if (battle_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Battle);
-            }
-            if (food_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Food);
-            }
-            if (inventoryUpgrade_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryUpgrade);
-            }
-            if (xpBoost_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(XpBoost);
-            }
-            if (incense_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Incense);
-            }
-            if (eggIncubator_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubator);
-            }
-            if (fortModifier_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(FortModifier);
-            }
-            return size;
-        }
-
-        public void MergeFrom(ItemSettings other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemId != 0)
-            {
-                ItemId = other.ItemId;
-            }
-            if (other.ItemType != 0)
-            {
-                ItemType = other.ItemType;
-            }
-            if (other.Category != 0)
-            {
-                Category = other.Category;
-            }
-            if (other.DropFreq != 0F)
-            {
-                DropFreq = other.DropFreq;
-            }
-            if (other.DropTrainerLevel != 0)
-            {
-                DropTrainerLevel = other.DropTrainerLevel;
-            }
-            if (other.pokeball_ != null)
-            {
-                if (pokeball_ == null)
-                {
-                    pokeball_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes();
-                }
-                Pokeball.MergeFrom(other.Pokeball);
-            }
-            if (other.potion_ != null)
-            {
-                if (potion_ == null)
-                {
-                    potion_ = new global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes();
-                }
-                Potion.MergeFrom(other.Potion);
-            }
-            if (other.revive_ != null)
-            {
-                if (revive_ == null)
-                {
-                    revive_ = new global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes();
-                }
-                Revive.MergeFrom(other.Revive);
-            }
-            if (other.battle_ != null)
-            {
-                if (battle_ == null)
-                {
-                    battle_ = new global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes();
-                }
-                Battle.MergeFrom(other.Battle);
-            }
-            if (other.food_ != null)
-            {
-                if (food_ == null)
-                {
-                    food_ = new global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes();
-                }
-                Food.MergeFrom(other.Food);
-            }
-            if (other.inventoryUpgrade_ != null)
-            {
-                if (inventoryUpgrade_ == null)
-                {
-                    inventoryUpgrade_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes();
-                }
-                InventoryUpgrade.MergeFrom(other.InventoryUpgrade);
-            }
-            if (other.xpBoost_ != null)
-            {
-                if (xpBoost_ == null)
-                {
-                    xpBoost_ = new global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes();
-                }
-                XpBoost.MergeFrom(other.XpBoost);
-            }
-            if (other.incense_ != null)
-            {
-                if (incense_ == null)
-                {
-                    incense_ = new global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes();
-                }
-                Incense.MergeFrom(other.Incense);
-            }
-            if (other.eggIncubator_ != null)
-            {
-                if (eggIncubator_ == null)
-                {
-                    eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes();
-                }
-                EggIncubator.MergeFrom(other.EggIncubator);
-            }
-            if (other.fortModifier_ != null)
-            {
-                if (fortModifier_ == null)
-                {
-                    fortModifier_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes();
-                }
-                FortModifier.MergeFrom(other.FortModifier);
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            itemId_ = (global::AllEnum.ItemId)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            itemType_ = (global::AllEnum.ItemType)input.ReadEnum();
-                            break;
-                        }
-                    case 24:
-                        {
-                            category_ = (global::AllEnum.ItemCategory)input.ReadEnum();
-                            break;
-                        }
-                    case 37:
-                        {
-                            DropFreq = input.ReadFloat();
-                            break;
-                        }
-                    case 40:
-                        {
-                            DropTrainerLevel = input.ReadInt32();
-                            break;
-                        }
-                    case 50:
-                        {
-                            if (pokeball_ == null)
-                            {
-                                pokeball_ = new global::PokemonGo.RocketAPI.GeneratedCode.PokeballAttributes();
-                            }
-                            input.ReadMessage(pokeball_);
-                            break;
-                        }
-                    case 58:
-                        {
-                            if (potion_ == null)
-                            {
-                                potion_ = new global::PokemonGo.RocketAPI.GeneratedCode.PotionAttributes();
-                            }
-                            input.ReadMessage(potion_);
-                            break;
-                        }
-                    case 66:
-                        {
-                            if (revive_ == null)
-                            {
-                                revive_ = new global::PokemonGo.RocketAPI.GeneratedCode.ReviveAttributes();
-                            }
-                            input.ReadMessage(revive_);
-                            break;
-                        }
-                    case 74:
-                        {
-                            if (battle_ == null)
-                            {
-                                battle_ = new global::PokemonGo.RocketAPI.GeneratedCode.BattleAttributes();
-                            }
-                            input.ReadMessage(battle_);
-                            break;
-                        }
-                    case 82:
-                        {
-                            if (food_ == null)
-                            {
-                                food_ = new global::PokemonGo.RocketAPI.GeneratedCode.FoodAttributes();
-                            }
-                            input.ReadMessage(food_);
-                            break;
-                        }
-                    case 90:
-                        {
-                            if (inventoryUpgrade_ == null)
-                            {
-                                inventoryUpgrade_ =
-                                    new global::PokemonGo.RocketAPI.GeneratedCode.InventoryUpgradeAttributes();
-                            }
-                            input.ReadMessage(inventoryUpgrade_);
-                            break;
-                        }
-                    case 98:
-                        {
-                            if (xpBoost_ == null)
-                            {
-                                xpBoost_ = new global::PokemonGo.RocketAPI.GeneratedCode.ExperienceBoostAttributes();
-                            }
-                            input.ReadMessage(xpBoost_);
-                            break;
-                        }
-                    case 106:
-                        {
-                            if (incense_ == null)
-                            {
-                                incense_ = new global::PokemonGo.RocketAPI.GeneratedCode.IncenseAttributes();
-                            }
-                            input.ReadMessage(incense_);
-                            break;
-                        }
-                    case 114:
-                        {
-                            if (eggIncubator_ == null)
-                            {
-                                eggIncubator_ = new global::PokemonGo.RocketAPI.GeneratedCode.EggIncubatorAttributes();
-                            }
-                            input.ReadMessage(eggIncubator_);
-                            break;
-                        }
-                    case 122:
-                        {
-                            if (fortModifier_ == null)
-                            {
-                                fortModifier_ = new global::PokemonGo.RocketAPI.GeneratedCode.FortModifierAttributes();
-                            }
-                            input.ReadMessage(fortModifier_);
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as ItemSettings);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemId != 0) hash ^= ItemId.GetHashCode();
-            if (ItemType != 0) hash ^= ItemType.GetHashCode();
-            if (Category != 0) hash ^= Category.GetHashCode();
-            if (DropFreq != 0F) hash ^= DropFreq.GetHashCode();
-            if (DropTrainerLevel != 0) hash ^= DropTrainerLevel.GetHashCode();
-            if (pokeball_ != null) hash ^= Pokeball.GetHashCode();
-            if (potion_ != null) hash ^= Potion.GetHashCode();
-            if (revive_ != null) hash ^= Revive.GetHashCode();
-            if (battle_ != null) hash ^= Battle.GetHashCode();
-            if (food_ != null) hash ^= Food.GetHashCode();
-            if (inventoryUpgrade_ != null) hash ^= InventoryUpgrade.GetHashCode();
-            if (xpBoost_ != null) hash ^= XpBoost.GetHashCode();
-            if (incense_ != null) hash ^= Incense.GetHashCode();
-            if (eggIncubator_ != null) hash ^= EggIncubator.GetHashCode();
-            if (fortModifier_ != null) hash ^= FortModifier.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class BattleAttributes : pb::IMessage<BattleAttributes>
-    {
-        /// <summary>Field number for the "sta_percent" field.</summary>
-        public const int StaPercentFieldNumber = 1;
-
-        private static readonly pb::MessageParser<BattleAttributes> _parser =
-            new pb::MessageParser<BattleAttributes>(() => new BattleAttributes());
-
-        private float staPercent_;
-
-        public BattleAttributes()
-        {
-            OnConstruction();
-        }
-
-        public BattleAttributes(BattleAttributes other) : this()
-        {
-            staPercent_ = other.staPercent_;
-        }
-
-        public static pb::MessageParser<BattleAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[83]; }
-        }
-
-        public float StaPercent
-        {
-            get { return staPercent_; }
-            set { staPercent_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public BattleAttributes Clone()
-        {
-            return new BattleAttributes(this);
-        }
-
-        public bool Equals(BattleAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (StaPercent != other.StaPercent) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (StaPercent != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(StaPercent);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (StaPercent != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(BattleAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.StaPercent != 0F)
-            {
-                StaPercent = other.StaPercent;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            StaPercent = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as BattleAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (StaPercent != 0F) hash ^= StaPercent.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EggIncubatorAttributes : pb::IMessage<EggIncubatorAttributes>
-    {
-        /// <summary>Field number for the "incubator_type" field.</summary>
-        public const int IncubatorTypeFieldNumber = 1;
-
-        /// <summary>Field number for the "uses" field.</summary>
-        public const int UsesFieldNumber = 2;
-
-        /// <summary>Field number for the "distance_multiplier" field.</summary>
-        public const int DistanceMultiplierFieldNumber = 3;
-
-        private static readonly pb::MessageParser<EggIncubatorAttributes> _parser =
-            new pb::MessageParser<EggIncubatorAttributes>(() => new EggIncubatorAttributes());
-
-        private float distanceMultiplier_;
-        private global::AllEnum.EggIncubatorType incubatorType_ = 0;
-        private int uses_;
-
-        public EggIncubatorAttributes()
-        {
-            OnConstruction();
-        }
-
-        public EggIncubatorAttributes(EggIncubatorAttributes other) : this()
-        {
-            incubatorType_ = other.incubatorType_;
-            uses_ = other.uses_;
-            distanceMultiplier_ = other.distanceMultiplier_;
-        }
-
-        public static pb::MessageParser<EggIncubatorAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[84]; }
-        }
-
-        public global::AllEnum.EggIncubatorType IncubatorType
-        {
-            get { return incubatorType_; }
-            set { incubatorType_ = value; }
-        }
-
-        public int Uses
-        {
-            get { return uses_; }
-            set { uses_ = value; }
-        }
-
-        public float DistanceMultiplier
-        {
-            get { return distanceMultiplier_; }
-            set { distanceMultiplier_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EggIncubatorAttributes Clone()
-        {
-            return new EggIncubatorAttributes(this);
-        }
-
-        public bool Equals(EggIncubatorAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (IncubatorType != other.IncubatorType) return false;
-            if (Uses != other.Uses) return false;
-            if (DistanceMultiplier != other.DistanceMultiplier) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (IncubatorType != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)IncubatorType);
-            }
-            if (Uses != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(Uses);
-            }
-            if (DistanceMultiplier != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(DistanceMultiplier);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (IncubatorType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)IncubatorType);
-            }
-            if (Uses != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Uses);
-            }
-            if (DistanceMultiplier != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(EggIncubatorAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.IncubatorType != 0)
-            {
-                IncubatorType = other.IncubatorType;
-            }
-            if (other.Uses != 0)
-            {
-                Uses = other.Uses;
-            }
-            if (other.DistanceMultiplier != 0F)
-            {
-                DistanceMultiplier = other.DistanceMultiplier;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            incubatorType_ = (global::AllEnum.EggIncubatorType)input.ReadEnum();
-                            break;
-                        }
-                    case 16:
-                        {
-                            Uses = input.ReadInt32();
-                            break;
-                        }
-                    case 29:
-                        {
-                            DistanceMultiplier = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EggIncubatorAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (IncubatorType != 0) hash ^= IncubatorType.GetHashCode();
-            if (Uses != 0) hash ^= Uses.GetHashCode();
-            if (DistanceMultiplier != 0F) hash ^= DistanceMultiplier.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class ExperienceBoostAttributes : pb::IMessage<ExperienceBoostAttributes>
-    {
-        /// <summary>Field number for the "xp_multiplier" field.</summary>
-        public const int XpMultiplierFieldNumber = 1;
-
-        /// <summary>Field number for the "boost_duration_ms" field.</summary>
-        public const int BoostDurationMsFieldNumber = 2;
-
-        private static readonly pb::MessageParser<ExperienceBoostAttributes> _parser =
-            new pb::MessageParser<ExperienceBoostAttributes>(() => new ExperienceBoostAttributes());
-
-        private int boostDurationMs_;
-        private float xpMultiplier_;
-
-        public ExperienceBoostAttributes()
-        {
-            OnConstruction();
-        }
-
-        public ExperienceBoostAttributes(ExperienceBoostAttributes other) : this()
-        {
-            xpMultiplier_ = other.xpMultiplier_;
-            boostDurationMs_ = other.boostDurationMs_;
-        }
-
-        public static pb::MessageParser<ExperienceBoostAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[85]; }
-        }
-
-        public float XpMultiplier
-        {
-            get { return xpMultiplier_; }
-            set { xpMultiplier_ = value; }
-        }
-
-        public int BoostDurationMs
-        {
-            get { return boostDurationMs_; }
-            set { boostDurationMs_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public ExperienceBoostAttributes Clone()
-        {
-            return new ExperienceBoostAttributes(this);
-        }
-
-        public bool Equals(ExperienceBoostAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (XpMultiplier != other.XpMultiplier) return false;
-            if (BoostDurationMs != other.BoostDurationMs) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (XpMultiplier != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(XpMultiplier);
-            }
-            if (BoostDurationMs != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(BoostDurationMs);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (XpMultiplier != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (BoostDurationMs != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BoostDurationMs);
-            }
-            return size;
-        }
-
-        public void MergeFrom(ExperienceBoostAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.XpMultiplier != 0F)
-            {
-                XpMultiplier = other.XpMultiplier;
-            }
-            if (other.BoostDurationMs != 0)
-            {
-                BoostDurationMs = other.BoostDurationMs;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            XpMultiplier = input.ReadFloat();
-                            break;
-                        }
-                    case 16:
-                        {
-                            BoostDurationMs = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as ExperienceBoostAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (XpMultiplier != 0F) hash ^= XpMultiplier.GetHashCode();
-            if (BoostDurationMs != 0) hash ^= BoostDurationMs.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FoodAttributes : pb::IMessage<FoodAttributes>
-    {
-        /// <summary>Field number for the "item_effect" field.</summary>
-        public const int ItemEffectFieldNumber = 1;
-
-        /// <summary>Field number for the "item_effect_percent" field.</summary>
-        public const int ItemEffectPercentFieldNumber = 2;
-
-        /// <summary>Field number for the "growth_percent" field.</summary>
-        public const int GrowthPercentFieldNumber = 3;
-
-        private static readonly pb::MessageParser<FoodAttributes> _parser =
-            new pb::MessageParser<FoodAttributes>(() => new FoodAttributes());
-
-        private static readonly pb::FieldCodec<global::AllEnum.ItemEffect> _repeated_itemEffect_codec
-            = pb::FieldCodec.ForEnum(10, x => (int)x, x => (global::AllEnum.ItemEffect)x);
-
-        private static readonly pb::FieldCodec<float> _repeated_itemEffectPercent_codec
-            = pb::FieldCodec.ForFloat(18);
-
-        private readonly pbc::RepeatedField<global::AllEnum.ItemEffect> itemEffect_ =
-            new pbc::RepeatedField<global::AllEnum.ItemEffect>();
-
-        private readonly pbc::RepeatedField<float> itemEffectPercent_ = new pbc::RepeatedField<float>();
-        private float growthPercent_;
-
-        public FoodAttributes()
-        {
-            OnConstruction();
-        }
-
-        public FoodAttributes(FoodAttributes other) : this()
-        {
-            itemEffect_ = other.itemEffect_.Clone();
-            itemEffectPercent_ = other.itemEffectPercent_.Clone();
-            growthPercent_ = other.growthPercent_;
-        }
-
-        public static pb::MessageParser<FoodAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[86]; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.ItemEffect> ItemEffect
-        {
-            get { return itemEffect_; }
-        }
-
-        public pbc::RepeatedField<float> ItemEffectPercent
-        {
-            get { return itemEffectPercent_; }
-        }
-
-        public float GrowthPercent
-        {
-            get { return growthPercent_; }
-            set { growthPercent_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FoodAttributes Clone()
-        {
-            return new FoodAttributes(this);
-        }
-
-        public bool Equals(FoodAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (!itemEffect_.Equals(other.itemEffect_)) return false;
-            if (!itemEffectPercent_.Equals(other.itemEffectPercent_)) return false;
-            if (GrowthPercent != other.GrowthPercent) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            itemEffect_.WriteTo(output, _repeated_itemEffect_codec);
-            itemEffectPercent_.WriteTo(output, _repeated_itemEffectPercent_codec);
-            if (GrowthPercent != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(GrowthPercent);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            size += itemEffect_.CalculateSize(_repeated_itemEffect_codec);
-            size += itemEffectPercent_.CalculateSize(_repeated_itemEffectPercent_codec);
-            if (GrowthPercent != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(FoodAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            itemEffect_.Add(other.itemEffect_);
-            itemEffectPercent_.Add(other.itemEffectPercent_);
-            if (other.GrowthPercent != 0F)
-            {
-                GrowthPercent = other.GrowthPercent;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 10:
-                    case 8:
-                        {
-                            itemEffect_.AddEntriesFrom(input, _repeated_itemEffect_codec);
-                            break;
-                        }
-                    case 18:
-                    case 21:
-                        {
-                            itemEffectPercent_.AddEntriesFrom(input, _repeated_itemEffectPercent_codec);
-                            break;
-                        }
-                    case 29:
-                        {
-                            GrowthPercent = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FoodAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            hash ^= itemEffect_.GetHashCode();
-            hash ^= itemEffectPercent_.GetHashCode();
-            if (GrowthPercent != 0F) hash ^= GrowthPercent.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class FortModifierAttributes : pb::IMessage<FortModifierAttributes>
-    {
-        /// <summary>Field number for the "modifier_lifetime_seconds" field.</summary>
-        public const int ModifierLifetimeSecondsFieldNumber = 1;
-
-        /// <summary>Field number for the "troy_disk_num_pokemon_spawned" field.</summary>
-        public const int TroyDiskNumPokemonSpawnedFieldNumber = 2;
-
-        private static readonly pb::MessageParser<FortModifierAttributes> _parser =
-            new pb::MessageParser<FortModifierAttributes>(() => new FortModifierAttributes());
-
-        private int modifierLifetimeSeconds_;
-        private int troyDiskNumPokemonSpawned_;
-
-        public FortModifierAttributes()
-        {
-            OnConstruction();
-        }
-
-        public FortModifierAttributes(FortModifierAttributes other) : this()
-        {
-            modifierLifetimeSeconds_ = other.modifierLifetimeSeconds_;
-            troyDiskNumPokemonSpawned_ = other.troyDiskNumPokemonSpawned_;
-        }
-
-        public static pb::MessageParser<FortModifierAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[87]; }
-        }
-
-        public int ModifierLifetimeSeconds
-        {
-            get { return modifierLifetimeSeconds_; }
-            set { modifierLifetimeSeconds_ = value; }
-        }
-
-        public int TroyDiskNumPokemonSpawned
-        {
-            get { return troyDiskNumPokemonSpawned_; }
-            set { troyDiskNumPokemonSpawned_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public FortModifierAttributes Clone()
-        {
-            return new FortModifierAttributes(this);
-        }
-
-        public bool Equals(FortModifierAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ModifierLifetimeSeconds != other.ModifierLifetimeSeconds) return false;
-            if (TroyDiskNumPokemonSpawned != other.TroyDiskNumPokemonSpawned) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ModifierLifetimeSeconds != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(ModifierLifetimeSeconds);
-            }
-            if (TroyDiskNumPokemonSpawned != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(TroyDiskNumPokemonSpawned);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ModifierLifetimeSeconds != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ModifierLifetimeSeconds);
-            }
-            if (TroyDiskNumPokemonSpawned != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TroyDiskNumPokemonSpawned);
-            }
-            return size;
-        }
-
-        public void MergeFrom(FortModifierAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ModifierLifetimeSeconds != 0)
-            {
-                ModifierLifetimeSeconds = other.ModifierLifetimeSeconds;
-            }
-            if (other.TroyDiskNumPokemonSpawned != 0)
-            {
-                TroyDiskNumPokemonSpawned = other.TroyDiskNumPokemonSpawned;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            ModifierLifetimeSeconds = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            TroyDiskNumPokemonSpawned = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as FortModifierAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ModifierLifetimeSeconds != 0) hash ^= ModifierLifetimeSeconds.GetHashCode();
-            if (TroyDiskNumPokemonSpawned != 0) hash ^= TroyDiskNumPokemonSpawned.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class IncenseAttributes : pb::IMessage<IncenseAttributes>
-    {
-        /// <summary>Field number for the "incense_lifetime_seconds" field.</summary>
-        public const int IncenseLifetimeSecondsFieldNumber = 1;
-
-        /// <summary>Field number for the "pokemon_type" field.</summary>
-        public const int PokemonTypeFieldNumber = 2;
-
-        /// <summary>Field number for the "pokemon_incense_type_probability" field.</summary>
-        public const int PokemonIncenseTypeProbabilityFieldNumber = 3;
-
-        /// <summary>Field number for the "standing_time_between_encounters_seconds" field.</summary>
-        public const int StandingTimeBetweenEncountersSecondsFieldNumber = 4;
-
-        /// <summary>Field number for the "moving_time_between_encounter_seconds" field.</summary>
-        public const int MovingTimeBetweenEncounterSecondsFieldNumber = 5;
-
-        /// <summary>Field number for the "distance_required_for_shorter_interval_meters" field.</summary>
-        public const int DistanceRequiredForShorterIntervalMetersFieldNumber = 6;
-
-        /// <summary>Field number for the "pokemon_attracted_length_sec" field.</summary>
-        public const int PokemonAttractedLengthSecFieldNumber = 7;
-
-        private static readonly pb::MessageParser<IncenseAttributes> _parser =
-            new pb::MessageParser<IncenseAttributes>(() => new IncenseAttributes());
-
-        private static readonly pb::FieldCodec<global::AllEnum.PokemonType> _repeated_pokemonType_codec
-            = pb::FieldCodec.ForEnum(18, x => (int)x, x => (global::AllEnum.PokemonType)x);
-
-        private readonly pbc::RepeatedField<global::AllEnum.PokemonType> pokemonType_ =
-            new pbc::RepeatedField<global::AllEnum.PokemonType>();
-
-        private int distanceRequiredForShorterIntervalMeters_;
-        private int incenseLifetimeSeconds_;
-        private int movingTimeBetweenEncounterSeconds_;
-        private int pokemonAttractedLengthSec_;
-        private float pokemonIncenseTypeProbability_;
-        private int standingTimeBetweenEncountersSeconds_;
-
-        public IncenseAttributes()
-        {
-            OnConstruction();
-        }
-
-        public IncenseAttributes(IncenseAttributes other) : this()
-        {
-            incenseLifetimeSeconds_ = other.incenseLifetimeSeconds_;
-            pokemonType_ = other.pokemonType_.Clone();
-            pokemonIncenseTypeProbability_ = other.pokemonIncenseTypeProbability_;
-            standingTimeBetweenEncountersSeconds_ = other.standingTimeBetweenEncountersSeconds_;
-            movingTimeBetweenEncounterSeconds_ = other.movingTimeBetweenEncounterSeconds_;
-            distanceRequiredForShorterIntervalMeters_ = other.distanceRequiredForShorterIntervalMeters_;
-            pokemonAttractedLengthSec_ = other.pokemonAttractedLengthSec_;
-        }
-
-        public static pb::MessageParser<IncenseAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[88]; }
-        }
-
-        public int IncenseLifetimeSeconds
-        {
-            get { return incenseLifetimeSeconds_; }
-            set { incenseLifetimeSeconds_ = value; }
-        }
-
-        public pbc::RepeatedField<global::AllEnum.PokemonType> PokemonType
-        {
-            get { return pokemonType_; }
-        }
-
-        public float PokemonIncenseTypeProbability
-        {
-            get { return pokemonIncenseTypeProbability_; }
-            set { pokemonIncenseTypeProbability_ = value; }
-        }
-
-        public int StandingTimeBetweenEncountersSeconds
-        {
-            get { return standingTimeBetweenEncountersSeconds_; }
-            set { standingTimeBetweenEncountersSeconds_ = value; }
-        }
-
-        public int MovingTimeBetweenEncounterSeconds
-        {
-            get { return movingTimeBetweenEncounterSeconds_; }
-            set { movingTimeBetweenEncounterSeconds_ = value; }
-        }
-
-        public int DistanceRequiredForShorterIntervalMeters
-        {
-            get { return distanceRequiredForShorterIntervalMeters_; }
-            set { distanceRequiredForShorterIntervalMeters_ = value; }
-        }
-
-        public int PokemonAttractedLengthSec
-        {
-            get { return pokemonAttractedLengthSec_; }
-            set { pokemonAttractedLengthSec_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public IncenseAttributes Clone()
-        {
-            return new IncenseAttributes(this);
-        }
-
-        public bool Equals(IncenseAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (IncenseLifetimeSeconds != other.IncenseLifetimeSeconds) return false;
-            if (!pokemonType_.Equals(other.pokemonType_)) return false;
-            if (PokemonIncenseTypeProbability != other.PokemonIncenseTypeProbability) return false;
-            if (StandingTimeBetweenEncountersSeconds != other.StandingTimeBetweenEncountersSeconds) return false;
-            if (MovingTimeBetweenEncounterSeconds != other.MovingTimeBetweenEncounterSeconds) return false;
-            if (DistanceRequiredForShorterIntervalMeters != other.DistanceRequiredForShorterIntervalMeters)
-                return false;
-            if (PokemonAttractedLengthSec != other.PokemonAttractedLengthSec) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (IncenseLifetimeSeconds != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(IncenseLifetimeSeconds);
-            }
-            pokemonType_.WriteTo(output, _repeated_pokemonType_codec);
-            if (PokemonIncenseTypeProbability != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(PokemonIncenseTypeProbability);
-            }
-            if (StandingTimeBetweenEncountersSeconds != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(StandingTimeBetweenEncountersSeconds);
-            }
-            if (MovingTimeBetweenEncounterSeconds != 0)
-            {
-                output.WriteRawTag(40);
-                output.WriteInt32(MovingTimeBetweenEncounterSeconds);
-            }
-            if (DistanceRequiredForShorterIntervalMeters != 0)
-            {
-                output.WriteRawTag(48);
-                output.WriteInt32(DistanceRequiredForShorterIntervalMeters);
-            }
-            if (PokemonAttractedLengthSec != 0)
-            {
-                output.WriteRawTag(56);
-                output.WriteInt32(PokemonAttractedLengthSec);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (IncenseLifetimeSeconds != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(IncenseLifetimeSeconds);
-            }
-            size += pokemonType_.CalculateSize(_repeated_pokemonType_codec);
-            if (PokemonIncenseTypeProbability != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (StandingTimeBetweenEncountersSeconds != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(StandingTimeBetweenEncountersSeconds);
-            }
-            if (MovingTimeBetweenEncounterSeconds != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(MovingTimeBetweenEncounterSeconds);
-            }
-            if (DistanceRequiredForShorterIntervalMeters != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(DistanceRequiredForShorterIntervalMeters);
-            }
-            if (PokemonAttractedLengthSec != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonAttractedLengthSec);
-            }
-            return size;
-        }
-
-        public void MergeFrom(IncenseAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.IncenseLifetimeSeconds != 0)
-            {
-                IncenseLifetimeSeconds = other.IncenseLifetimeSeconds;
-            }
-            pokemonType_.Add(other.pokemonType_);
-            if (other.PokemonIncenseTypeProbability != 0F)
-            {
-                PokemonIncenseTypeProbability = other.PokemonIncenseTypeProbability;
-            }
-            if (other.StandingTimeBetweenEncountersSeconds != 0)
-            {
-                StandingTimeBetweenEncountersSeconds = other.StandingTimeBetweenEncountersSeconds;
-            }
-            if (other.MovingTimeBetweenEncounterSeconds != 0)
-            {
-                MovingTimeBetweenEncounterSeconds = other.MovingTimeBetweenEncounterSeconds;
-            }
-            if (other.DistanceRequiredForShorterIntervalMeters != 0)
-            {
-                DistanceRequiredForShorterIntervalMeters = other.DistanceRequiredForShorterIntervalMeters;
-            }
-            if (other.PokemonAttractedLengthSec != 0)
-            {
-                PokemonAttractedLengthSec = other.PokemonAttractedLengthSec;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            IncenseLifetimeSeconds = input.ReadInt32();
-                            break;
-                        }
-                    case 18:
-                    case 16:
-                        {
-                            pokemonType_.AddEntriesFrom(input, _repeated_pokemonType_codec);
-                            break;
-                        }
-                    case 29:
-                        {
-                            PokemonIncenseTypeProbability = input.ReadFloat();
-                            break;
-                        }
-                    case 32:
-                        {
-                            StandingTimeBetweenEncountersSeconds = input.ReadInt32();
-                            break;
-                        }
-                    case 40:
-                        {
-                            MovingTimeBetweenEncounterSeconds = input.ReadInt32();
-                            break;
-                        }
-                    case 48:
-                        {
-                            DistanceRequiredForShorterIntervalMeters = input.ReadInt32();
-                            break;
-                        }
-                    case 56:
-                        {
-                            PokemonAttractedLengthSec = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as IncenseAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (IncenseLifetimeSeconds != 0) hash ^= IncenseLifetimeSeconds.GetHashCode();
-            hash ^= pokemonType_.GetHashCode();
-            if (PokemonIncenseTypeProbability != 0F) hash ^= PokemonIncenseTypeProbability.GetHashCode();
-            if (StandingTimeBetweenEncountersSeconds != 0) hash ^= StandingTimeBetweenEncountersSeconds.GetHashCode();
-            if (MovingTimeBetweenEncounterSeconds != 0) hash ^= MovingTimeBetweenEncounterSeconds.GetHashCode();
-            if (DistanceRequiredForShorterIntervalMeters != 0)
-                hash ^= DistanceRequiredForShorterIntervalMeters.GetHashCode();
-            if (PokemonAttractedLengthSec != 0) hash ^= PokemonAttractedLengthSec.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class InventoryUpgradeAttributes : pb::IMessage<InventoryUpgradeAttributes>
-    {
-        /// <summary>Field number for the "additional_storage" field.</summary>
-        public const int AdditionalStorageFieldNumber = 1;
-
-        /// <summary>Field number for the "upgrade_type" field.</summary>
-        public const int UpgradeTypeFieldNumber = 2;
-
-        private static readonly pb::MessageParser<InventoryUpgradeAttributes> _parser =
-            new pb::MessageParser<InventoryUpgradeAttributes>(() => new InventoryUpgradeAttributes());
-
-        private int additionalStorage_;
-        private global::AllEnum.InventoryUpgradeType upgradeType_ = 0;
-
-        public InventoryUpgradeAttributes()
-        {
-            OnConstruction();
-        }
-
-        public InventoryUpgradeAttributes(InventoryUpgradeAttributes other) : this()
-        {
-            additionalStorage_ = other.additionalStorage_;
-            upgradeType_ = other.upgradeType_;
-        }
-
-        public static pb::MessageParser<InventoryUpgradeAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[89]; }
-        }
-
-        public int AdditionalStorage
-        {
-            get { return additionalStorage_; }
-            set { additionalStorage_ = value; }
-        }
-
-        public global::AllEnum.InventoryUpgradeType UpgradeType
-        {
-            get { return upgradeType_; }
-            set { upgradeType_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public InventoryUpgradeAttributes Clone()
-        {
-            return new InventoryUpgradeAttributes(this);
-        }
-
-        public bool Equals(InventoryUpgradeAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (AdditionalStorage != other.AdditionalStorage) return false;
-            if (UpgradeType != other.UpgradeType) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (AdditionalStorage != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(AdditionalStorage);
-            }
-            if (UpgradeType != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteEnum((int)UpgradeType);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (AdditionalStorage != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(AdditionalStorage);
-            }
-            if (UpgradeType != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)UpgradeType);
-            }
-            return size;
-        }
-
-        public void MergeFrom(InventoryUpgradeAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.AdditionalStorage != 0)
-            {
-                AdditionalStorage = other.AdditionalStorage;
-            }
-            if (other.UpgradeType != 0)
-            {
-                UpgradeType = other.UpgradeType;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            AdditionalStorage = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            upgradeType_ = (global::AllEnum.InventoryUpgradeType)input.ReadEnum();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as InventoryUpgradeAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (AdditionalStorage != 0) hash ^= AdditionalStorage.GetHashCode();
-            if (UpgradeType != 0) hash ^= UpgradeType.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PokeballAttributes : pb::IMessage<PokeballAttributes>
-    {
-        /// <summary>Field number for the "item_effect" field.</summary>
-        public const int ItemEffectFieldNumber = 1;
-
-        /// <summary>Field number for the "capture_multi" field.</summary>
-        public const int CaptureMultiFieldNumber = 2;
-
-        /// <summary>Field number for the "capture_multi_effect" field.</summary>
-        public const int CaptureMultiEffectFieldNumber = 3;
-
-        /// <summary>Field number for the "item_effect_mod" field.</summary>
-        public const int ItemEffectModFieldNumber = 4;
-
-        private static readonly pb::MessageParser<PokeballAttributes> _parser =
-            new pb::MessageParser<PokeballAttributes>(() => new PokeballAttributes());
-
-        private float captureMulti_;
-        private float captureMultiEffect_;
-        private global::AllEnum.ItemEffect itemEffect_ = 0;
-        private float itemEffectMod_;
-
-        public PokeballAttributes()
-        {
-            OnConstruction();
-        }
-
-        public PokeballAttributes(PokeballAttributes other) : this()
-        {
-            itemEffect_ = other.itemEffect_;
-            captureMulti_ = other.captureMulti_;
-            captureMultiEffect_ = other.captureMultiEffect_;
-            itemEffectMod_ = other.itemEffectMod_;
-        }
-
-        public static pb::MessageParser<PokeballAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[90]; }
-        }
-
-        public global::AllEnum.ItemEffect ItemEffect
-        {
-            get { return itemEffect_; }
-            set { itemEffect_ = value; }
-        }
-
-        public float CaptureMulti
-        {
-            get { return captureMulti_; }
-            set { captureMulti_ = value; }
-        }
-
-        public float CaptureMultiEffect
-        {
-            get { return captureMultiEffect_; }
-            set { captureMultiEffect_ = value; }
-        }
-
-        public float ItemEffectMod
-        {
-            get { return itemEffectMod_; }
-            set { itemEffectMod_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PokeballAttributes Clone()
-        {
-            return new PokeballAttributes(this);
-        }
-
-        public bool Equals(PokeballAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (ItemEffect != other.ItemEffect) return false;
-            if (CaptureMulti != other.CaptureMulti) return false;
-            if (CaptureMultiEffect != other.CaptureMultiEffect) return false;
-            if (ItemEffectMod != other.ItemEffectMod) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (ItemEffect != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteEnum((int)ItemEffect);
-            }
-            if (CaptureMulti != 0F)
-            {
-                output.WriteRawTag(21);
-                output.WriteFloat(CaptureMulti);
-            }
-            if (CaptureMultiEffect != 0F)
-            {
-                output.WriteRawTag(29);
-                output.WriteFloat(CaptureMultiEffect);
-            }
-            if (ItemEffectMod != 0F)
-            {
-                output.WriteRawTag(37);
-                output.WriteFloat(ItemEffectMod);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (ItemEffect != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int)ItemEffect);
-            }
-            if (CaptureMulti != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (CaptureMultiEffect != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (ItemEffectMod != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(PokeballAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.ItemEffect != 0)
-            {
-                ItemEffect = other.ItemEffect;
-            }
-            if (other.CaptureMulti != 0F)
-            {
-                CaptureMulti = other.CaptureMulti;
-            }
-            if (other.CaptureMultiEffect != 0F)
-            {
-                CaptureMultiEffect = other.CaptureMultiEffect;
-            }
-            if (other.ItemEffectMod != 0F)
-            {
-                ItemEffectMod = other.ItemEffectMod;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            itemEffect_ = (global::AllEnum.ItemEffect)input.ReadEnum();
-                            break;
-                        }
-                    case 21:
-                        {
-                            CaptureMulti = input.ReadFloat();
-                            break;
-                        }
-                    case 29:
-                        {
-                            CaptureMultiEffect = input.ReadFloat();
-                            break;
-                        }
-                    case 37:
-                        {
-                            ItemEffectMod = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PokeballAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (ItemEffect != 0) hash ^= ItemEffect.GetHashCode();
-            if (CaptureMulti != 0F) hash ^= CaptureMulti.GetHashCode();
-            if (CaptureMultiEffect != 0F) hash ^= CaptureMultiEffect.GetHashCode();
-            if (ItemEffectMod != 0F) hash ^= ItemEffectMod.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class PotionAttributes : pb::IMessage<PotionAttributes>
-    {
-        /// <summary>Field number for the "sta_percent" field.</summary>
-        public const int StaPercentFieldNumber = 1;
-
-        /// <summary>Field number for the "sta_amount" field.</summary>
-        public const int StaAmountFieldNumber = 2;
-
-        private static readonly pb::MessageParser<PotionAttributes> _parser =
-            new pb::MessageParser<PotionAttributes>(() => new PotionAttributes());
-
-        private int staAmount_;
-        private float staPercent_;
-
-        public PotionAttributes()
-        {
-            OnConstruction();
-        }
-
-        public PotionAttributes(PotionAttributes other) : this()
-        {
-            staPercent_ = other.staPercent_;
-            staAmount_ = other.staAmount_;
-        }
-
-        public static pb::MessageParser<PotionAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[91]; }
-        }
-
-        public float StaPercent
-        {
-            get { return staPercent_; }
-            set { staPercent_ = value; }
-        }
-
-        public int StaAmount
-        {
-            get { return staAmount_; }
-            set { staAmount_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public PotionAttributes Clone()
-        {
-            return new PotionAttributes(this);
-        }
-
-        public bool Equals(PotionAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (StaPercent != other.StaPercent) return false;
-            if (StaAmount != other.StaAmount) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (StaPercent != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(StaPercent);
-            }
-            if (StaAmount != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(StaAmount);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (StaPercent != 0F)
-            {
-                size += 1 + 4;
-            }
-            if (StaAmount != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(StaAmount);
-            }
-            return size;
-        }
-
-        public void MergeFrom(PotionAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.StaPercent != 0F)
-            {
-                StaPercent = other.StaPercent;
-            }
-            if (other.StaAmount != 0)
-            {
-                StaAmount = other.StaAmount;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            StaPercent = input.ReadFloat();
-                            break;
-                        }
-                    case 16:
-                        {
-                            StaAmount = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as PotionAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (StaPercent != 0F) hash ^= StaPercent.GetHashCode();
-            if (StaAmount != 0) hash ^= StaAmount.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class ReviveAttributes : pb::IMessage<ReviveAttributes>
-    {
-        /// <summary>Field number for the "sta_percent" field.</summary>
-        public const int StaPercentFieldNumber = 1;
-
-        private static readonly pb::MessageParser<ReviveAttributes> _parser =
-            new pb::MessageParser<ReviveAttributes>(() => new ReviveAttributes());
-
-        private float staPercent_;
-
-        public ReviveAttributes()
-        {
-            OnConstruction();
-        }
-
-        public ReviveAttributes(ReviveAttributes other) : this()
-        {
-            staPercent_ = other.staPercent_;
-        }
-
-        public static pb::MessageParser<ReviveAttributes> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[92]; }
-        }
-
-        public float StaPercent
-        {
-            get { return staPercent_; }
-            set { staPercent_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public ReviveAttributes Clone()
-        {
-            return new ReviveAttributes(this);
-        }
-
-        public bool Equals(ReviveAttributes other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (StaPercent != other.StaPercent) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (StaPercent != 0F)
-            {
-                output.WriteRawTag(13);
-                output.WriteFloat(StaPercent);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (StaPercent != 0F)
-            {
-                size += 1 + 4;
-            }
-            return size;
-        }
-
-        public void MergeFrom(ReviveAttributes other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.StaPercent != 0F)
-            {
-                StaPercent = other.StaPercent;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 13:
-                        {
-                            StaPercent = input.ReadFloat();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as ReviveAttributes);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (StaPercent != 0F) hash ^= StaPercent.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    /// <summary>
-    ///     POKEMON TRANSFER
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class TransferPokemon : pb::IMessage<TransferPokemon>
-    {
-        /// <summary>Field number for the "PokemonId" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-
-        private static readonly pb::MessageParser<TransferPokemon> _parser =
-            new pb::MessageParser<TransferPokemon>(() => new TransferPokemon());
-
-        private ulong pokemonId_;
-
-        public TransferPokemon()
-        {
-            OnConstruction();
-        }
-
-        public TransferPokemon(TransferPokemon other) : this()
-        {
-            pokemonId_ = other.pokemonId_;
-        }
-
-        public static pb::MessageParser<TransferPokemon> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[93]; }
-        }
-
-        public ulong PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public TransferPokemon Clone()
-        {
-            return new TransferPokemon(this);
-        }
-
-        public bool Equals(TransferPokemon other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokemonId != other.PokemonId) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokemonId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(PokemonId);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokemonId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(TransferPokemon other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokemonId != 0UL)
-            {
-                PokemonId = other.PokemonId;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            PokemonId = input.ReadFixed64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as TransferPokemon);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class TransferPokemonOut : pb::IMessage<TransferPokemonOut>
-    {
-        /// <summary>Field number for the "Status" field.</summary>
-        public const int StatusFieldNumber = 1;
-
-        /// <summary>Field number for the "CandyAwarded" field.</summary>
-        public const int CandyAwardedFieldNumber = 2;
-
-        private static readonly pb::MessageParser<TransferPokemonOut> _parser =
-            new pb::MessageParser<TransferPokemonOut>(() => new TransferPokemonOut());
-
-        private int candyAwarded_;
-        private int status_;
-
-        public TransferPokemonOut()
-        {
-            OnConstruction();
-        }
-
-        public TransferPokemonOut(TransferPokemonOut other) : this()
-        {
-            status_ = other.status_;
-            candyAwarded_ = other.candyAwarded_;
-        }
-
-        public static pb::MessageParser<TransferPokemonOut> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[94]; }
-        }
-
-        public int Status
-        {
-            get { return status_; }
-            set { status_ = value; }
-        }
-
-        public int CandyAwarded
-        {
-            get { return candyAwarded_; }
-            set { candyAwarded_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public TransferPokemonOut Clone()
-        {
-            return new TransferPokemonOut(this);
-        }
-
-        public bool Equals(TransferPokemonOut other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Status != other.Status) return false;
-            if (CandyAwarded != other.CandyAwarded) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Status != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Status);
-            }
-            if (CandyAwarded != 0)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt32(CandyAwarded);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Status != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
-            }
-            if (CandyAwarded != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
-            }
-            return size;
-        }
-
-        public void MergeFrom(TransferPokemonOut other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Status != 0)
-            {
-                Status = other.Status;
-            }
-            if (other.CandyAwarded != 0)
-            {
-                CandyAwarded = other.CandyAwarded;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Status = input.ReadInt32();
-                            break;
-                        }
-                    case 16:
-                        {
-                            CandyAwarded = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as TransferPokemonOut);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Status != 0) hash ^= Status.GetHashCode();
-            if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    /// <summary>
-    ///     EVOLVE
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EvolvePokemon : pb::IMessage<EvolvePokemon>
-    {
-        /// <summary>Field number for the "PokemonId" field.</summary>
-        public const int PokemonIdFieldNumber = 1;
-
-        private static readonly pb::MessageParser<EvolvePokemon> _parser =
-            new pb::MessageParser<EvolvePokemon>(() => new EvolvePokemon());
-
-        private ulong pokemonId_;
-
-        public EvolvePokemon()
-        {
-            OnConstruction();
-        }
-
-        public EvolvePokemon(EvolvePokemon other) : this()
-        {
-            pokemonId_ = other.pokemonId_;
-        }
-
-        public static pb::MessageParser<EvolvePokemon> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[95]; }
-        }
-
-        public ulong PokemonId
-        {
-            get { return pokemonId_; }
-            set { pokemonId_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EvolvePokemon Clone()
-        {
-            return new EvolvePokemon(this);
-        }
-
-        public bool Equals(EvolvePokemon other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (PokemonId != other.PokemonId) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (PokemonId != 0UL)
-            {
-                output.WriteRawTag(9);
-                output.WriteFixed64(PokemonId);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (PokemonId != 0UL)
-            {
-                size += 1 + 8;
-            }
-            return size;
-        }
-
-        public void MergeFrom(EvolvePokemon other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.PokemonId != 0UL)
-            {
-                PokemonId = other.PokemonId;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 9:
-                        {
-                            PokemonId = input.ReadFixed64();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EvolvePokemon);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class EvolvePokemonOut : pb::IMessage<EvolvePokemonOut>
-    {
-        /// <summary>Field number for the "Result" field.</summary>
-        public const int ResultFieldNumber = 1;
-
-        /// <summary>Field number for the "EvolvedPokemon" field.</summary>
-        public const int EvolvedPokemonFieldNumber = 2;
-
-        /// <summary>Field number for the "ExpAwarded" field.</summary>
-        public const int ExpAwardedFieldNumber = 3;
-
-        /// <summary>Field number for the "CandyAwarded" field.</summary>
-        public const int CandyAwardedFieldNumber = 4;
-
-        private static readonly pb::MessageParser<EvolvePokemonOut> _parser =
-            new pb::MessageParser<EvolvePokemonOut>(() => new EvolvePokemonOut());
-
-        private int candyAwarded_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.Pokemon evolvedPokemon_;
-        private int expAwarded_;
-        private int result_;
-
-        public EvolvePokemonOut()
-        {
-            OnConstruction();
-        }
-
-        public EvolvePokemonOut(EvolvePokemonOut other) : this()
-        {
-            result_ = other.result_;
-            EvolvedPokemon = other.evolvedPokemon_ != null ? other.EvolvedPokemon.Clone() : null;
-            expAwarded_ = other.expAwarded_;
-            candyAwarded_ = other.candyAwarded_;
-        }
-
-        public static pb::MessageParser<EvolvePokemonOut> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.PayloadsReflection.Descriptor.MessageTypes[96]; }
-        }
-
-        public int Result
-        {
-            get { return result_; }
-            set { result_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Pokemon EvolvedPokemon
-        {
-            get { return evolvedPokemon_; }
-            set { evolvedPokemon_ = value; }
-        }
-
-        public int ExpAwarded
-        {
-            get { return expAwarded_; }
-            set { expAwarded_ = value; }
-        }
-
-        public int CandyAwarded
-        {
-            get { return candyAwarded_; }
-            set { candyAwarded_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public EvolvePokemonOut Clone()
-        {
-            return new EvolvePokemonOut(this);
-        }
-
-        public bool Equals(EvolvePokemonOut other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Result != other.Result) return false;
-            if (!Equals(EvolvedPokemon, other.EvolvedPokemon)) return false;
-            if (ExpAwarded != other.ExpAwarded) return false;
-            if (CandyAwarded != other.CandyAwarded) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Result != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Result);
-            }
-            if (evolvedPokemon_ != null)
-            {
-                output.WriteRawTag(18);
-                output.WriteMessage(EvolvedPokemon);
-            }
-            if (ExpAwarded != 0)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt32(ExpAwarded);
-            }
-            if (CandyAwarded != 0)
-            {
-                output.WriteRawTag(32);
-                output.WriteInt32(CandyAwarded);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Result != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Result);
-            }
-            if (evolvedPokemon_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(EvolvedPokemon);
-            }
-            if (ExpAwarded != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExpAwarded);
-            }
-            if (CandyAwarded != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
-            }
-            return size;
-        }
-
-        public void MergeFrom(EvolvePokemonOut other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Result != 0)
-            {
-                Result = other.Result;
-            }
-            if (other.evolvedPokemon_ != null)
-            {
-                if (evolvedPokemon_ == null)
-                {
-                    evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.Pokemon();
-                }
-                EvolvedPokemon.MergeFrom(other.EvolvedPokemon);
-            }
-            if (other.ExpAwarded != 0)
-            {
-                ExpAwarded = other.ExpAwarded;
-            }
-            if (other.CandyAwarded != 0)
-            {
-                CandyAwarded = other.CandyAwarded;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                        {
-                            Result = input.ReadInt32();
-                            break;
-                        }
-                    case 18:
-                        {
-                            if (evolvedPokemon_ == null)
-                            {
-                                evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.Pokemon();
-                            }
-                            input.ReadMessage(evolvedPokemon_);
-                            break;
-                        }
-                    case 24:
-                        {
-                            ExpAwarded = input.ReadInt32();
-                            break;
-                        }
-                    case 32:
-                        {
-                            CandyAwarded = input.ReadInt32();
-                            break;
-                        }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as EvolvePokemonOut);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Result != 0) hash ^= Result.GetHashCode();
-            if (evolvedPokemon_ != null) hash ^= EvolvedPokemon.GetHashCode();
-            if (ExpAwarded != 0) hash ^= ExpAwarded.GetHashCode();
-            if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-    }
-
-    #endregion
-}
-
-#endregion Designer generated code
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/GeneratedCode/Request.cs b/PokemonGo/RocketAPI/GeneratedCode/Request.cs
deleted file mode 100644
index a8b1cc7..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/Request.cs
+++ /dev/null
@@ -1,3394 +0,0 @@
-#pragma warning disable 1591, 0612, 3021
-
-#region Designer generated code
-
-#region
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.GeneratedCode
-{
-    /// <summary>Holder for reflection information generated from Request.proto</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class RequestReflection
-    {
-        #region Descriptor
-
-        /// <summary>File descriptor for Request.proto</summary>
-        public static pbr::FileDescriptor Descriptor
-        {
-            get { return descriptor; }
-        }
-
-        private static pbr::FileDescriptor descriptor;
-
-        static RequestReflection()
-        {
-            var descriptorData = global::System.Convert.FromBase64String(
-                string.Concat(
-                    "Cg1SZXF1ZXN0LnByb3RvEiFQb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
-                    "ZENvZGUihAwKB1JlcXVlc3QSEAoIdW5rbm93bjEYASABKAUSDgoGcnBjX2lk",
-                    "GAMgASgDEkUKCHJlcXVlc3RzGAQgAygLMjMuUG9rZW1vbkdvLlJvY2tldEFQ",
-                    "SS5HZW5lcmF0ZWRDb2RlLlJlcXVlc3QuUmVxdWVzdHMSRQoIdW5rbm93bjYY",
-                    "BiABKAsyMy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUmVx",
-                    "dWVzdC5Vbmtub3duNhIQCghsYXRpdHVkZRgHIAEoBhIRCglsb25naXR1ZGUY",
-                    "CCABKAYSEAoIYWx0aXR1ZGUYCSABKAYSQQoEYXV0aBgKIAEoCzIzLlBva2Vt",
-                    "b25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5SZXF1ZXN0LkF1dGhJbmZv",
-                    "EksKC3Vua25vd25hdXRoGAsgASgLMjYuUG9rZW1vbkdvLlJvY2tldEFQSS5H",
-                    "ZW5lcmF0ZWRDb2RlLlJlcXVlc3QuVW5rbm93bkF1dGgSEQoJdW5rbm93bjEy",
-                    "GAwgASgDGkYKC1Vua25vd25BdXRoEhEKCXVua25vd243MRgBIAEoDBIRCgl0",
-                    "aW1lc3RhbXAYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGikKCFJlcXVlc3Rz",
-                    "EgwKBHR5cGUYASABKAUSDwoHbWVzc2FnZRgCIAEoDBocCghVbmtub3duMxIQ",
-                    "Cgh1bmtub3duNBgBIAEoCRqKAQoIVW5rbm93bjYSEAoIdW5rbm93bjEYASAB",
-                    "KAUSTgoIdW5rbm93bjIYAiABKAsyPC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdl",
-                    "bmVyYXRlZENvZGUuUmVxdWVzdC5Vbmtub3duNi5Vbmtub3duMhocCghVbmtu",
-                    "b3duMhIQCgh1bmtub3duMRgBIAEoDBqQAQoIQXV0aEluZm8SEAoIcHJvdmlk",
-                    "ZXIYASABKAkSRgoFdG9rZW4YAiABKAsyNy5Qb2tlbW9uR28uUm9ja2V0QVBJ",
-                    "LkdlbmVyYXRlZENvZGUuUmVxdWVzdC5BdXRoSW5mby5KV1QaKgoDSldUEhAK",
-                    "CGNvbnRlbnRzGAEgASgJEhEKCXVua25vd24xMxgCIAEoBRotChFQbGF5ZXJV",
-                    "cGRhdGVQcm90bxILCgNMYXQYASABKAYSCwoDTG5nGAIgASgGGlwKEU1hcE9i",
-                    "amVjdHNSZXF1ZXN0Eg8KB2NlbGxJZHMYASABKAwSEQoJdW5rbm93bjE0GAIg",
-                    "ASgMEhAKCGxhdGl0dWRlGAMgASgGEhEKCWxvbmdpdHVkZRgEIAEoBhqDAQoR",
-                    "Rm9ydFNlYXJjaFJlcXVlc3QSCgoCSWQYASABKAwSGAoQUGxheWVyTGF0RGVn",
-                    "cmVlcxgCIAEoBhIYChBQbGF5ZXJMbmdEZWdyZWVzGAMgASgGEhYKDkZvcnRM",
-                    "YXREZWdyZWVzGAQgASgGEhYKDkZvcnRMbmdEZWdyZWVzGAUgASgGGkUKEkZv",
-                    "cnREZXRhaWxzUmVxdWVzdBIKCgJJZBgBIAEoDBIQCghMYXRpdHVkZRgCIAEo",
-                    "BhIRCglMb25naXR1ZGUYAyABKAYacQoQRW5jb3VudGVyUmVxdWVzdBITCgtF",
-                    "bmNvdW50ZXJJZBgBIAEoBhIUCgxTcGF3bnBvaW50SWQYAiABKAkSGAoQUGxh",
-                    "eWVyTGF0RGVncmVlcxgDIAEoBhIYChBQbGF5ZXJMbmdEZWdyZWVzGAQgASgG",
-                    "GrwBChNDYXRjaFBva2Vtb25SZXF1ZXN0EhMKC0VuY291bnRlcklkGAEgASgG",
-                    "EhAKCFBva2ViYWxsGAIgASgFEh0KFU5vcm1hbGl6ZWRSZXRpY2xlU2l6ZRgD",
-                    "IAEoBhIWCg5TcGF3blBvaW50R3VpZBgEIAEoCRISCgpIaXRQb2tlbW9uGAUg",
-                    "ASgFEhQKDFNwaW5Nb2RpZmllchgGIAEoBhIdChVOb3JtYWxpemVkSGl0UG9z",
-                    "aXRpb24YByABKAYaHAoMU2V0dGluZ3NHdWlkEgwKBGd1aWQYASABKAwaFAoE",
-                    "VGltZRIMCgR0aW1lGAEgASgDYgZwcm90bzM="));
-            descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-                new pbr::FileDescriptor[] {},
-                new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[]
-                {
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request),
-                        global::PokemonGo.RocketAPI.GeneratedCode.Request.Parser,
-                        new[]
-                        {
-                            "Unknown1", "RpcId", "Requests", "Unknown6", "Latitude", "Longitude", "Altitude", "Auth",
-                            "Unknownauth", "Unknown12"
-                        }, null, null, new pbr::GeneratedClrTypeInfo[]
-                        {
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.UnknownAuth),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.UnknownAuth.Parser,
-                                new[] {"Unknown71", "Timestamp", "Unknown73"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests.Parser,
-                                new[] {"Type", "Message"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown3),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown3.Parser,
-                                new[] {"Unknown4"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Parser,
-                                new[] {"Unknown1", "Unknown2"}, null, null,
-                                new pbr::GeneratedClrTypeInfo[]
-                                {
-                                    new pbr::GeneratedClrTypeInfo(
-                                        typeof(
-                                            global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Types.
-                                                Unknown2),
-                                        global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Types
-                                            .Unknown2.Parser, new[] {"Unknown1"}, null, null, null)
-                                }),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Parser,
-                                new[] {"Provider", "Token"}, null, null,
-                                new pbr::GeneratedClrTypeInfo[]
-                                {
-                                    new pbr::GeneratedClrTypeInfo(
-                                        typeof(
-                                            global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Types.
-                                                JWT),
-                                        global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Types.JWT
-                                            .Parser, new[] {"Contents", "Unknown13"}, null, null, null)
-                                }),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.PlayerUpdateProto),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.PlayerUpdateProto.Parser,
-                                new[] {"Lat", "Lng"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.MapObjectsRequest),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.MapObjectsRequest.Parser,
-                                new[] {"CellIds", "Unknown14", "Latitude", "Longitude"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortSearchRequest),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortSearchRequest.Parser,
-                                new[]
-                                {"Id", "PlayerLatDegrees", "PlayerLngDegrees", "FortLatDegrees", "FortLngDegrees"},
-                                null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortDetailsRequest),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortDetailsRequest.Parser,
-                                new[] {"Id", "Latitude", "Longitude"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.EncounterRequest),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.EncounterRequest.Parser,
-                                new[] {"EncounterId", "SpawnpointId", "PlayerLatDegrees", "PlayerLngDegrees"}, null,
-                                null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.CatchPokemonRequest),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.CatchPokemonRequest.Parser,
-                                new[]
-                                {
-                                    "EncounterId", "Pokeball", "NormalizedReticleSize", "SpawnPointGuid", "HitPokemon",
-                                    "SpinModifier", "NormalizedHitPosition"
-                                }, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.SettingsGuid),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.SettingsGuid.Parser,
-                                new[] {"Guid"}, null, null, null),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Time),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Time.Parser, new[] {"Time_"},
-                                null, null, null)
-                        })
-                }));
-        }
-
-        #endregion
-    }
-
-    #region Messages
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Request : pb::IMessage<Request>
-    {
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-
-        /// <summary>Field number for the "rpc_id" field.</summary>
-        public const int RpcIdFieldNumber = 3;
-
-        /// <summary>Field number for the "requests" field.</summary>
-        public const int RequestsFieldNumber = 4;
-
-        /// <summary>Field number for the "unknown6" field.</summary>
-        public const int Unknown6FieldNumber = 6;
-
-        /// <summary>Field number for the "latitude" field.</summary>
-        public const int LatitudeFieldNumber = 7;
-
-        /// <summary>Field number for the "longitude" field.</summary>
-        public const int LongitudeFieldNumber = 8;
-
-        /// <summary>Field number for the "altitude" field.</summary>
-        public const int AltitudeFieldNumber = 9;
-
-        /// <summary>Field number for the "auth" field.</summary>
-        public const int AuthFieldNumber = 10;
-
-        /// <summary>Field number for the "unknownauth" field.</summary>
-        public const int UnknownauthFieldNumber = 11;
-
-        /// <summary>Field number for the "unknown12" field.</summary>
-        public const int Unknown12FieldNumber = 12;
-
-        private static readonly pb::MessageParser<Request> _parser = new pb::MessageParser<Request>(() => new Request());
-
-        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests>
-            _repeated_requests_codec
-                = pb::FieldCodec.ForMessage(34, global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests.Parser);
-
-        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests> requests_
-            = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests>();
-
-        private ulong altitude_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo auth_;
-        private ulong latitude_;
-        private ulong longitude_;
-        private long rpcId_;
-        private int unknown1_;
-        private long unknown12_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6 unknown6_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.UnknownAuth unknownauth_;
-
-        public Request()
-        {
-            OnConstruction();
-        }
-
-        public Request(Request other) : this()
-        {
-            unknown1_ = other.unknown1_;
-            rpcId_ = other.rpcId_;
-            requests_ = other.requests_.Clone();
-            Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-            latitude_ = other.latitude_;
-            longitude_ = other.longitude_;
-            altitude_ = other.altitude_;
-            Auth = other.auth_ != null ? other.Auth.Clone() : null;
-            Unknownauth = other.unknownauth_ != null ? other.Unknownauth.Clone() : null;
-            unknown12_ = other.unknown12_;
-        }
-
-        public static pb::MessageParser<Request> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.RequestReflection.Descriptor.MessageTypes[0]; }
-        }
-
-        public int Unknown1
-        {
-            get { return unknown1_; }
-            set { unknown1_ = value; }
-        }
-
-        public long RpcId
-        {
-            get { return rpcId_; }
-            set { rpcId_ = value; }
-        }
-
-        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Requests> Requests
-        {
-            get { return requests_; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6 Unknown6
-        {
-            get { return unknown6_; }
-            set { unknown6_ = value; }
-        }
-
-        public ulong Latitude
-        {
-            get { return latitude_; }
-            set { latitude_ = value; }
-        }
-
-        public ulong Longitude
-        {
-            get { return longitude_; }
-            set { longitude_ = value; }
-        }
-
-        public ulong Altitude
-        {
-            get { return altitude_; }
-            set { altitude_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo Auth
-        {
-            get { return auth_; }
-            set { auth_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.UnknownAuth Unknownauth
-        {
-            get { return unknownauth_; }
-            set { unknownauth_ = value; }
-        }
-
-        public long Unknown12
-        {
-            get { return unknown12_; }
-            set { unknown12_ = value; }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public Request Clone()
-        {
-            return new Request(this);
-        }
-
-        public bool Equals(Request other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Unknown1 != other.Unknown1) return false;
-            if (RpcId != other.RpcId) return false;
-            if (!requests_.Equals(other.requests_)) return false;
-            if (!Equals(Unknown6, other.Unknown6)) return false;
-            if (Latitude != other.Latitude) return false;
-            if (Longitude != other.Longitude) return false;
-            if (Altitude != other.Altitude) return false;
-            if (!Equals(Auth, other.Auth)) return false;
-            if (!Equals(Unknownauth, other.Unknownauth)) return false;
-            if (Unknown12 != other.Unknown12) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Unknown1 != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Unknown1);
-            }
-            if (RpcId != 0L)
-            {
-                output.WriteRawTag(24);
-                output.WriteInt64(RpcId);
-            }
-            requests_.WriteTo(output, _repeated_requests_codec);
-            if (unknown6_ != null)
-            {
-                output.WriteRawTag(50);
-                output.WriteMessage(Unknown6);
-            }
-            if (Latitude != 0UL)
-            {
-                output.WriteRawTag(57);
-                output.WriteFixed64(Latitude);
-            }
-            if (Longitude != 0UL)
-            {
-                output.WriteRawTag(65);
-                output.WriteFixed64(Longitude);
-            }
-            if (Altitude != 0UL)
-            {
-                output.WriteRawTag(73);
-                output.WriteFixed64(Altitude);
-            }
-            if (auth_ != null)
-            {
-                output.WriteRawTag(82);
-                output.WriteMessage(Auth);
-            }
-            if (unknownauth_ != null)
-            {
-                output.WriteRawTag(90);
-                output.WriteMessage(Unknownauth);
-            }
-            if (Unknown12 != 0L)
-            {
-                output.WriteRawTag(96);
-                output.WriteInt64(Unknown12);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Unknown1 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-            }
-            if (RpcId != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(RpcId);
-            }
-            size += requests_.CalculateSize(_repeated_requests_codec);
-            if (unknown6_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-            }
-            if (Latitude != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (Longitude != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (Altitude != 0UL)
-            {
-                size += 1 + 8;
-            }
-            if (auth_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Auth);
-            }
-            if (unknownauth_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknownauth);
-            }
-            if (Unknown12 != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown12);
-            }
-            return size;
-        }
-
-        public void MergeFrom(Request other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Unknown1 != 0)
-            {
-                Unknown1 = other.Unknown1;
-            }
-            if (other.RpcId != 0L)
-            {
-                RpcId = other.RpcId;
-            }
-            requests_.Add(other.requests_);
-            if (other.unknown6_ != null)
-            {
-                if (unknown6_ == null)
-                {
-                    unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6();
-                }
-                Unknown6.MergeFrom(other.Unknown6);
-            }
-            if (other.Latitude != 0UL)
-            {
-                Latitude = other.Latitude;
-            }
-            if (other.Longitude != 0UL)
-            {
-                Longitude = other.Longitude;
-            }
-            if (other.Altitude != 0UL)
-            {
-                Altitude = other.Altitude;
-            }
-            if (other.auth_ != null)
-            {
-                if (auth_ == null)
-                {
-                    auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo();
-                }
-                Auth.MergeFrom(other.Auth);
-            }
-            if (other.unknownauth_ != null)
-            {
-                if (unknownauth_ == null)
-                {
-                    unknownauth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.UnknownAuth();
-                }
-                Unknownauth.MergeFrom(other.Unknownauth);
-            }
-            if (other.Unknown12 != 0L)
-            {
-                Unknown12 = other.Unknown12;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                    {
-                        Unknown1 = input.ReadInt32();
-                        break;
-                    }
-                    case 24:
-                    {
-                        RpcId = input.ReadInt64();
-                        break;
-                    }
-                    case 34:
-                    {
-                        requests_.AddEntriesFrom(input, _repeated_requests_codec);
-                        break;
-                    }
-                    case 50:
-                    {
-                        if (unknown6_ == null)
-                        {
-                            unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6();
-                        }
-                        input.ReadMessage(unknown6_);
-                        break;
-                    }
-                    case 57:
-                    {
-                        Latitude = input.ReadFixed64();
-                        break;
-                    }
-                    case 65:
-                    {
-                        Longitude = input.ReadFixed64();
-                        break;
-                    }
-                    case 73:
-                    {
-                        Altitude = input.ReadFixed64();
-                        break;
-                    }
-                    case 82:
-                    {
-                        if (auth_ == null)
-                        {
-                            auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo();
-                        }
-                        input.ReadMessage(auth_);
-                        break;
-                    }
-                    case 90:
-                    {
-                        if (unknownauth_ == null)
-                        {
-                            unknownauth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.UnknownAuth();
-                        }
-                        input.ReadMessage(unknownauth_);
-                        break;
-                    }
-                    case 96:
-                    {
-                        Unknown12 = input.ReadInt64();
-                        break;
-                    }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as Request);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-            if (RpcId != 0L) hash ^= RpcId.GetHashCode();
-            hash ^= requests_.GetHashCode();
-            if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-            if (Latitude != 0UL) hash ^= Latitude.GetHashCode();
-            if (Longitude != 0UL) hash ^= Longitude.GetHashCode();
-            if (Altitude != 0UL) hash ^= Altitude.GetHashCode();
-            if (auth_ != null) hash ^= Auth.GetHashCode();
-            if (unknownauth_ != null) hash ^= Unknownauth.GetHashCode();
-            if (Unknown12 != 0L) hash ^= Unknown12.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the Request message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class UnknownAuth : pb::IMessage<UnknownAuth>
-            {
-                /// <summary>Field number for the "unknown71" field.</summary>
-                public const int Unknown71FieldNumber = 1;
-
-                /// <summary>Field number for the "timestamp" field.</summary>
-                public const int TimestampFieldNumber = 2;
-
-                /// <summary>Field number for the "unknown73" field.</summary>
-                public const int Unknown73FieldNumber = 3;
-
-                private static readonly pb::MessageParser<UnknownAuth> _parser =
-                    new pb::MessageParser<UnknownAuth>(() => new UnknownAuth());
-
-                private long timestamp_;
-                private pb::ByteString unknown71_ = pb::ByteString.Empty;
-                private pb::ByteString unknown73_ = pb::ByteString.Empty;
-
-                public UnknownAuth()
-                {
-                    OnConstruction();
-                }
-
-                public UnknownAuth(UnknownAuth other) : this()
-                {
-                    unknown71_ = other.unknown71_;
-                    timestamp_ = other.timestamp_;
-                    unknown73_ = other.unknown73_;
-                }
-
-                public static pb::MessageParser<UnknownAuth> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[0]; }
-                }
-
-                public pb::ByteString Unknown71
-                {
-                    get { return unknown71_; }
-                    set { unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public long Timestamp
-                {
-                    get { return timestamp_; }
-                    set { timestamp_ = value; }
-                }
-
-                public pb::ByteString Unknown73
-                {
-                    get { return unknown73_; }
-                    set { unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public UnknownAuth Clone()
-                {
-                    return new UnknownAuth(this);
-                }
-
-                public bool Equals(UnknownAuth other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Unknown71 != other.Unknown71) return false;
-                    if (Timestamp != other.Timestamp) return false;
-                    if (Unknown73 != other.Unknown73) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Unknown71.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteBytes(Unknown71);
-                    }
-                    if (Timestamp != 0L)
-                    {
-                        output.WriteRawTag(16);
-                        output.WriteInt64(Timestamp);
-                    }
-                    if (Unknown73.Length != 0)
-                    {
-                        output.WriteRawTag(26);
-                        output.WriteBytes(Unknown73);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Unknown71.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-                    }
-                    if (Timestamp != 0L)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
-                    }
-                    if (Unknown73.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(UnknownAuth other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Unknown71.Length != 0)
-                    {
-                        Unknown71 = other.Unknown71;
-                    }
-                    if (other.Timestamp != 0L)
-                    {
-                        Timestamp = other.Timestamp;
-                    }
-                    if (other.Unknown73.Length != 0)
-                    {
-                        Unknown73 = other.Unknown73;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Unknown71 = input.ReadBytes();
-                                break;
-                            }
-                            case 16:
-                            {
-                                Timestamp = input.ReadInt64();
-                                break;
-                            }
-                            case 26:
-                            {
-                                Unknown73 = input.ReadBytes();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as UnknownAuth);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-                    if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
-                    if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Requests : pb::IMessage<Requests>
-            {
-                /// <summary>Field number for the "type" field.</summary>
-                public const int TypeFieldNumber = 1;
-
-                /// <summary>Field number for the "message" field.</summary>
-                public const int MessageFieldNumber = 2;
-
-                private static readonly pb::MessageParser<Requests> _parser =
-                    new pb::MessageParser<Requests>(() => new Requests());
-
-                private pb::ByteString message_ = pb::ByteString.Empty;
-                private int type_;
-
-                public Requests()
-                {
-                    OnConstruction();
-                }
-
-                public Requests(Requests other) : this()
-                {
-                    type_ = other.type_;
-                    message_ = other.message_;
-                }
-
-                public static pb::MessageParser<Requests> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[1]; }
-                }
-
-                public int Type
-                {
-                    get { return type_; }
-                    set { type_ = value; }
-                }
-
-                public pb::ByteString Message
-                {
-                    get { return message_; }
-                    set { message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public Requests Clone()
-                {
-                    return new Requests(this);
-                }
-
-                public bool Equals(Requests other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Type != other.Type) return false;
-                    if (Message != other.Message) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Type != 0)
-                    {
-                        output.WriteRawTag(8);
-                        output.WriteInt32(Type);
-                    }
-                    if (Message.Length != 0)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteBytes(Message);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Type != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Type);
-                    }
-                    if (Message.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Message);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(Requests other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Type != 0)
-                    {
-                        Type = other.Type;
-                    }
-                    if (other.Message.Length != 0)
-                    {
-                        Message = other.Message;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 8:
-                            {
-                                Type = input.ReadInt32();
-                                break;
-                            }
-                            case 18:
-                            {
-                                Message = input.ReadBytes();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as Requests);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Type != 0) hash ^= Type.GetHashCode();
-                    if (Message.Length != 0) hash ^= Message.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Unknown3 : pb::IMessage<Unknown3>
-            {
-                /// <summary>Field number for the "unknown4" field.</summary>
-                public const int Unknown4FieldNumber = 1;
-
-                private static readonly pb::MessageParser<Unknown3> _parser =
-                    new pb::MessageParser<Unknown3>(() => new Unknown3());
-
-                private string unknown4_ = "";
-
-                public Unknown3()
-                {
-                    OnConstruction();
-                }
-
-                public Unknown3(Unknown3 other) : this()
-                {
-                    unknown4_ = other.unknown4_;
-                }
-
-                public static pb::MessageParser<Unknown3> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[2]; }
-                }
-
-                public string Unknown4
-                {
-                    get { return unknown4_; }
-                    set { unknown4_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public Unknown3 Clone()
-                {
-                    return new Unknown3(this);
-                }
-
-                public bool Equals(Unknown3 other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Unknown4 != other.Unknown4) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Unknown4.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteString(Unknown4);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Unknown4.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeStringSize(Unknown4);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(Unknown3 other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Unknown4.Length != 0)
-                    {
-                        Unknown4 = other.Unknown4;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Unknown4 = input.ReadString();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as Unknown3);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Unknown4.Length != 0) hash ^= Unknown4.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Unknown6 : pb::IMessage<Unknown6>
-            {
-                /// <summary>Field number for the "unknown1" field.</summary>
-                public const int Unknown1FieldNumber = 1;
-
-                /// <summary>Field number for the "unknown2" field.</summary>
-                public const int Unknown2FieldNumber = 2;
-
-                private static readonly pb::MessageParser<Unknown6> _parser =
-                    new pb::MessageParser<Unknown6>(() => new Unknown6());
-
-                private int unknown1_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Types.Unknown2 unknown2_;
-
-                public Unknown6()
-                {
-                    OnConstruction();
-                }
-
-                public Unknown6(Unknown6 other) : this()
-                {
-                    unknown1_ = other.unknown1_;
-                    Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-                }
-
-                public static pb::MessageParser<Unknown6> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[3]; }
-                }
-
-                public int Unknown1
-                {
-                    get { return unknown1_; }
-                    set { unknown1_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Types.Unknown2 Unknown2
-                {
-                    get { return unknown2_; }
-                    set { unknown2_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public Unknown6 Clone()
-                {
-                    return new Unknown6(this);
-                }
-
-                public bool Equals(Unknown6 other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Unknown1 != other.Unknown1) return false;
-                    if (!Equals(Unknown2, other.Unknown2)) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Unknown1 != 0)
-                    {
-                        output.WriteRawTag(8);
-                        output.WriteInt32(Unknown1);
-                    }
-                    if (unknown2_ != null)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteMessage(Unknown2);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Unknown1 != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-                    }
-                    if (unknown2_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(Unknown6 other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Unknown1 != 0)
-                    {
-                        Unknown1 = other.Unknown1;
-                    }
-                    if (other.unknown2_ != null)
-                    {
-                        if (unknown2_ == null)
-                        {
-                            unknown2_ =
-                                new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Types.Unknown2();
-                        }
-                        Unknown2.MergeFrom(other.Unknown2);
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 8:
-                            {
-                                Unknown1 = input.ReadInt32();
-                                break;
-                            }
-                            case 18:
-                            {
-                                if (unknown2_ == null)
-                                {
-                                    unknown2_ =
-                                        new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Types.
-                                            Unknown2();
-                                }
-                                input.ReadMessage(unknown2_);
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as Unknown6);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-                    if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                #region Nested types
-
-                /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-                public static partial class Types
-                {
-                    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-                    public sealed partial class Unknown2 : pb::IMessage<Unknown2>
-                    {
-                        /// <summary>Field number for the "unknown1" field.</summary>
-                        public const int Unknown1FieldNumber = 1;
-
-                        private static readonly pb::MessageParser<Unknown2> _parser =
-                            new pb::MessageParser<Unknown2>(() => new Unknown2());
-
-                        private pb::ByteString unknown1_ = pb::ByteString.Empty;
-
-                        public Unknown2()
-                        {
-                            OnConstruction();
-                        }
-
-                        public Unknown2(Unknown2 other) : this()
-                        {
-                            unknown1_ = other.unknown1_;
-                        }
-
-                        public static pb::MessageParser<Unknown2> Parser
-                        {
-                            get { return _parser; }
-                        }
-
-                        public static pbr::MessageDescriptor Descriptor
-                        {
-                            get
-                            {
-                                return
-                                    global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Unknown6.Descriptor
-                                        .NestedTypes[0];
-                            }
-                        }
-
-                        public pb::ByteString Unknown1
-                        {
-                            get { return unknown1_; }
-                            set { unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                        }
-
-                        pbr::MessageDescriptor pb::IMessage.Descriptor
-                        {
-                            get { return Descriptor; }
-                        }
-
-                        public Unknown2 Clone()
-                        {
-                            return new Unknown2(this);
-                        }
-
-                        public bool Equals(Unknown2 other)
-                        {
-                            if (ReferenceEquals(other, null))
-                            {
-                                return false;
-                            }
-                            if (ReferenceEquals(other, this))
-                            {
-                                return true;
-                            }
-                            if (Unknown1 != other.Unknown1) return false;
-                            return true;
-                        }
-
-                        public void WriteTo(pb::CodedOutputStream output)
-                        {
-                            if (Unknown1.Length != 0)
-                            {
-                                output.WriteRawTag(10);
-                                output.WriteBytes(Unknown1);
-                            }
-                        }
-
-                        public int CalculateSize()
-                        {
-                            var size = 0;
-                            if (Unknown1.Length != 0)
-                            {
-                                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-                            }
-                            return size;
-                        }
-
-                        public void MergeFrom(Unknown2 other)
-                        {
-                            if (other == null)
-                            {
-                                return;
-                            }
-                            if (other.Unknown1.Length != 0)
-                            {
-                                Unknown1 = other.Unknown1;
-                            }
-                        }
-
-                        public void MergeFrom(pb::CodedInputStream input)
-                        {
-                            uint tag;
-                            while ((tag = input.ReadTag()) != 0)
-                            {
-                                switch (tag)
-                                {
-                                    default:
-                                        input.SkipLastField();
-                                        break;
-                                    case 10:
-                                    {
-                                        Unknown1 = input.ReadBytes();
-                                        break;
-                                    }
-                                }
-                            }
-                        }
-
-                        public override bool Equals(object other)
-                        {
-                            return Equals(other as Unknown2);
-                        }
-
-                        public override int GetHashCode()
-                        {
-                            var hash = 1;
-                            if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-                            return hash;
-                        }
-
-                        partial void OnConstruction();
-
-                        public override string ToString()
-                        {
-                            return pb::JsonFormatter.ToDiagnosticString(this);
-                        }
-                    }
-                }
-
-                #endregion
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class AuthInfo : pb::IMessage<AuthInfo>
-            {
-                /// <summary>Field number for the "provider" field.</summary>
-                public const int ProviderFieldNumber = 1;
-
-                /// <summary>Field number for the "token" field.</summary>
-                public const int TokenFieldNumber = 2;
-
-                private static readonly pb::MessageParser<AuthInfo> _parser =
-                    new pb::MessageParser<AuthInfo>(() => new AuthInfo());
-
-                private string provider_ = "";
-                private global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Types.JWT token_;
-
-                public AuthInfo()
-                {
-                    OnConstruction();
-                }
-
-                public AuthInfo(AuthInfo other) : this()
-                {
-                    provider_ = other.provider_;
-                    Token = other.token_ != null ? other.Token.Clone() : null;
-                }
-
-                public static pb::MessageParser<AuthInfo> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[4]; }
-                }
-
-                public string Provider
-                {
-                    get { return provider_; }
-                    set { provider_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Types.JWT Token
-                {
-                    get { return token_; }
-                    set { token_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public AuthInfo Clone()
-                {
-                    return new AuthInfo(this);
-                }
-
-                public bool Equals(AuthInfo other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Provider != other.Provider) return false;
-                    if (!Equals(Token, other.Token)) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Provider.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteString(Provider);
-                    }
-                    if (token_ != null)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteMessage(Token);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Provider.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeStringSize(Provider);
-                    }
-                    if (token_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Token);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(AuthInfo other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Provider.Length != 0)
-                    {
-                        Provider = other.Provider;
-                    }
-                    if (other.token_ != null)
-                    {
-                        if (token_ == null)
-                        {
-                            token_ = new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Types.JWT();
-                        }
-                        Token.MergeFrom(other.Token);
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Provider = input.ReadString();
-                                break;
-                            }
-                            case 18:
-                            {
-                                if (token_ == null)
-                                {
-                                    token_ =
-                                        new global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Types.JWT();
-                                }
-                                input.ReadMessage(token_);
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as AuthInfo);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Provider.Length != 0) hash ^= Provider.GetHashCode();
-                    if (token_ != null) hash ^= Token.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                #region Nested types
-
-                /// <summary>Container for nested types declared in the AuthInfo message type.</summary>
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-                public static partial class Types
-                {
-                    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-                    public sealed partial class JWT : pb::IMessage<JWT>
-                    {
-                        /// <summary>Field number for the "contents" field.</summary>
-                        public const int ContentsFieldNumber = 1;
-
-                        /// <summary>Field number for the "unknown13" field.</summary>
-                        public const int Unknown13FieldNumber = 2;
-
-                        private static readonly pb::MessageParser<JWT> _parser =
-                            new pb::MessageParser<JWT>(() => new JWT());
-
-                        private string contents_ = "";
-                        private int unknown13_;
-
-                        public JWT()
-                        {
-                            OnConstruction();
-                        }
-
-                        public JWT(JWT other) : this()
-                        {
-                            contents_ = other.contents_;
-                            unknown13_ = other.unknown13_;
-                        }
-
-                        public static pb::MessageParser<JWT> Parser
-                        {
-                            get { return _parser; }
-                        }
-
-                        public static pbr::MessageDescriptor Descriptor
-                        {
-                            get
-                            {
-                                return
-                                    global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.AuthInfo.Descriptor
-                                        .NestedTypes[0];
-                            }
-                        }
-
-                        public string Contents
-                        {
-                            get { return contents_; }
-                            set { contents_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                        }
-
-                        public int Unknown13
-                        {
-                            get { return unknown13_; }
-                            set { unknown13_ = value; }
-                        }
-
-                        pbr::MessageDescriptor pb::IMessage.Descriptor
-                        {
-                            get { return Descriptor; }
-                        }
-
-                        public JWT Clone()
-                        {
-                            return new JWT(this);
-                        }
-
-                        public bool Equals(JWT other)
-                        {
-                            if (ReferenceEquals(other, null))
-                            {
-                                return false;
-                            }
-                            if (ReferenceEquals(other, this))
-                            {
-                                return true;
-                            }
-                            if (Contents != other.Contents) return false;
-                            if (Unknown13 != other.Unknown13) return false;
-                            return true;
-                        }
-
-                        public void WriteTo(pb::CodedOutputStream output)
-                        {
-                            if (Contents.Length != 0)
-                            {
-                                output.WriteRawTag(10);
-                                output.WriteString(Contents);
-                            }
-                            if (Unknown13 != 0)
-                            {
-                                output.WriteRawTag(16);
-                                output.WriteInt32(Unknown13);
-                            }
-                        }
-
-                        public int CalculateSize()
-                        {
-                            var size = 0;
-                            if (Contents.Length != 0)
-                            {
-                                size += 1 + pb::CodedOutputStream.ComputeStringSize(Contents);
-                            }
-                            if (Unknown13 != 0)
-                            {
-                                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown13);
-                            }
-                            return size;
-                        }
-
-                        public void MergeFrom(JWT other)
-                        {
-                            if (other == null)
-                            {
-                                return;
-                            }
-                            if (other.Contents.Length != 0)
-                            {
-                                Contents = other.Contents;
-                            }
-                            if (other.Unknown13 != 0)
-                            {
-                                Unknown13 = other.Unknown13;
-                            }
-                        }
-
-                        public void MergeFrom(pb::CodedInputStream input)
-                        {
-                            uint tag;
-                            while ((tag = input.ReadTag()) != 0)
-                            {
-                                switch (tag)
-                                {
-                                    default:
-                                        input.SkipLastField();
-                                        break;
-                                    case 10:
-                                    {
-                                        Contents = input.ReadString();
-                                        break;
-                                    }
-                                    case 16:
-                                    {
-                                        Unknown13 = input.ReadInt32();
-                                        break;
-                                    }
-                                }
-                            }
-                        }
-
-                        public override bool Equals(object other)
-                        {
-                            return Equals(other as JWT);
-                        }
-
-                        public override int GetHashCode()
-                        {
-                            var hash = 1;
-                            if (Contents.Length != 0) hash ^= Contents.GetHashCode();
-                            if (Unknown13 != 0) hash ^= Unknown13.GetHashCode();
-                            return hash;
-                        }
-
-                        partial void OnConstruction();
-
-                        public override string ToString()
-                        {
-                            return pb::JsonFormatter.ToDiagnosticString(this);
-                        }
-                    }
-                }
-
-                #endregion
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class PlayerUpdateProto : pb::IMessage<PlayerUpdateProto>
-            {
-                /// <summary>Field number for the "Lat" field.</summary>
-                public const int LatFieldNumber = 1;
-
-                /// <summary>Field number for the "Lng" field.</summary>
-                public const int LngFieldNumber = 2;
-
-                private static readonly pb::MessageParser<PlayerUpdateProto> _parser =
-                    new pb::MessageParser<PlayerUpdateProto>(() => new PlayerUpdateProto());
-
-                private ulong lat_;
-                private ulong lng_;
-
-                public PlayerUpdateProto()
-                {
-                    OnConstruction();
-                }
-
-                public PlayerUpdateProto(PlayerUpdateProto other) : this()
-                {
-                    lat_ = other.lat_;
-                    lng_ = other.lng_;
-                }
-
-                public static pb::MessageParser<PlayerUpdateProto> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[5]; }
-                }
-
-                public ulong Lat
-                {
-                    get { return lat_; }
-                    set { lat_ = value; }
-                }
-
-                public ulong Lng
-                {
-                    get { return lng_; }
-                    set { lng_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public PlayerUpdateProto Clone()
-                {
-                    return new PlayerUpdateProto(this);
-                }
-
-                public bool Equals(PlayerUpdateProto other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Lat != other.Lat) return false;
-                    if (Lng != other.Lng) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Lat != 0UL)
-                    {
-                        output.WriteRawTag(9);
-                        output.WriteFixed64(Lat);
-                    }
-                    if (Lng != 0UL)
-                    {
-                        output.WriteRawTag(17);
-                        output.WriteFixed64(Lng);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Lat != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (Lng != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(PlayerUpdateProto other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Lat != 0UL)
-                    {
-                        Lat = other.Lat;
-                    }
-                    if (other.Lng != 0UL)
-                    {
-                        Lng = other.Lng;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 9:
-                            {
-                                Lat = input.ReadFixed64();
-                                break;
-                            }
-                            case 17:
-                            {
-                                Lng = input.ReadFixed64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as PlayerUpdateProto);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Lat != 0UL) hash ^= Lat.GetHashCode();
-                    if (Lng != 0UL) hash ^= Lng.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class MapObjectsRequest : pb::IMessage<MapObjectsRequest>
-            {
-                /// <summary>Field number for the "cellIds" field.</summary>
-                public const int CellIdsFieldNumber = 1;
-
-                /// <summary>Field number for the "unknown14" field.</summary>
-                public const int Unknown14FieldNumber = 2;
-
-                /// <summary>Field number for the "latitude" field.</summary>
-                public const int LatitudeFieldNumber = 3;
-
-                /// <summary>Field number for the "longitude" field.</summary>
-                public const int LongitudeFieldNumber = 4;
-
-                private static readonly pb::MessageParser<MapObjectsRequest> _parser =
-                    new pb::MessageParser<MapObjectsRequest>(() => new MapObjectsRequest());
-
-                private pb::ByteString cellIds_ = pb::ByteString.Empty;
-                private ulong latitude_;
-                private ulong longitude_;
-                private pb::ByteString unknown14_ = pb::ByteString.Empty;
-
-                public MapObjectsRequest()
-                {
-                    OnConstruction();
-                }
-
-                public MapObjectsRequest(MapObjectsRequest other) : this()
-                {
-                    cellIds_ = other.cellIds_;
-                    unknown14_ = other.unknown14_;
-                    latitude_ = other.latitude_;
-                    longitude_ = other.longitude_;
-                }
-
-                public static pb::MessageParser<MapObjectsRequest> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[6]; }
-                }
-
-                public pb::ByteString CellIds
-                {
-                    get { return cellIds_; }
-                    set { cellIds_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public pb::ByteString Unknown14
-                {
-                    get { return unknown14_; }
-                    set { unknown14_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public ulong Latitude
-                {
-                    get { return latitude_; }
-                    set { latitude_ = value; }
-                }
-
-                public ulong Longitude
-                {
-                    get { return longitude_; }
-                    set { longitude_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public MapObjectsRequest Clone()
-                {
-                    return new MapObjectsRequest(this);
-                }
-
-                public bool Equals(MapObjectsRequest other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (CellIds != other.CellIds) return false;
-                    if (Unknown14 != other.Unknown14) return false;
-                    if (Latitude != other.Latitude) return false;
-                    if (Longitude != other.Longitude) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (CellIds.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteBytes(CellIds);
-                    }
-                    if (Unknown14.Length != 0)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteBytes(Unknown14);
-                    }
-                    if (Latitude != 0UL)
-                    {
-                        output.WriteRawTag(25);
-                        output.WriteFixed64(Latitude);
-                    }
-                    if (Longitude != 0UL)
-                    {
-                        output.WriteRawTag(33);
-                        output.WriteFixed64(Longitude);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (CellIds.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(CellIds);
-                    }
-                    if (Unknown14.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown14);
-                    }
-                    if (Latitude != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (Longitude != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(MapObjectsRequest other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.CellIds.Length != 0)
-                    {
-                        CellIds = other.CellIds;
-                    }
-                    if (other.Unknown14.Length != 0)
-                    {
-                        Unknown14 = other.Unknown14;
-                    }
-                    if (other.Latitude != 0UL)
-                    {
-                        Latitude = other.Latitude;
-                    }
-                    if (other.Longitude != 0UL)
-                    {
-                        Longitude = other.Longitude;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                CellIds = input.ReadBytes();
-                                break;
-                            }
-                            case 18:
-                            {
-                                Unknown14 = input.ReadBytes();
-                                break;
-                            }
-                            case 25:
-                            {
-                                Latitude = input.ReadFixed64();
-                                break;
-                            }
-                            case 33:
-                            {
-                                Longitude = input.ReadFixed64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as MapObjectsRequest);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (CellIds.Length != 0) hash ^= CellIds.GetHashCode();
-                    if (Unknown14.Length != 0) hash ^= Unknown14.GetHashCode();
-                    if (Latitude != 0UL) hash ^= Latitude.GetHashCode();
-                    if (Longitude != 0UL) hash ^= Longitude.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class FortSearchRequest : pb::IMessage<FortSearchRequest>
-            {
-                /// <summary>Field number for the "Id" field.</summary>
-                public const int IdFieldNumber = 1;
-
-                /// <summary>Field number for the "PlayerLatDegrees" field.</summary>
-                public const int PlayerLatDegreesFieldNumber = 2;
-
-                /// <summary>Field number for the "PlayerLngDegrees" field.</summary>
-                public const int PlayerLngDegreesFieldNumber = 3;
-
-                /// <summary>Field number for the "FortLatDegrees" field.</summary>
-                public const int FortLatDegreesFieldNumber = 4;
-
-                /// <summary>Field number for the "FortLngDegrees" field.</summary>
-                public const int FortLngDegreesFieldNumber = 5;
-
-                private static readonly pb::MessageParser<FortSearchRequest> _parser =
-                    new pb::MessageParser<FortSearchRequest>(() => new FortSearchRequest());
-
-                private ulong fortLatDegrees_;
-                private ulong fortLngDegrees_;
-                private pb::ByteString id_ = pb::ByteString.Empty;
-                private ulong playerLatDegrees_;
-                private ulong playerLngDegrees_;
-
-                public FortSearchRequest()
-                {
-                    OnConstruction();
-                }
-
-                public FortSearchRequest(FortSearchRequest other) : this()
-                {
-                    id_ = other.id_;
-                    playerLatDegrees_ = other.playerLatDegrees_;
-                    playerLngDegrees_ = other.playerLngDegrees_;
-                    fortLatDegrees_ = other.fortLatDegrees_;
-                    fortLngDegrees_ = other.fortLngDegrees_;
-                }
-
-                public static pb::MessageParser<FortSearchRequest> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[7]; }
-                }
-
-                public pb::ByteString Id
-                {
-                    get { return id_; }
-                    set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public ulong PlayerLatDegrees
-                {
-                    get { return playerLatDegrees_; }
-                    set { playerLatDegrees_ = value; }
-                }
-
-                public ulong PlayerLngDegrees
-                {
-                    get { return playerLngDegrees_; }
-                    set { playerLngDegrees_ = value; }
-                }
-
-                public ulong FortLatDegrees
-                {
-                    get { return fortLatDegrees_; }
-                    set { fortLatDegrees_ = value; }
-                }
-
-                public ulong FortLngDegrees
-                {
-                    get { return fortLngDegrees_; }
-                    set { fortLngDegrees_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public FortSearchRequest Clone()
-                {
-                    return new FortSearchRequest(this);
-                }
-
-                public bool Equals(FortSearchRequest other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Id != other.Id) return false;
-                    if (PlayerLatDegrees != other.PlayerLatDegrees) return false;
-                    if (PlayerLngDegrees != other.PlayerLngDegrees) return false;
-                    if (FortLatDegrees != other.FortLatDegrees) return false;
-                    if (FortLngDegrees != other.FortLngDegrees) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Id.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteBytes(Id);
-                    }
-                    if (PlayerLatDegrees != 0UL)
-                    {
-                        output.WriteRawTag(17);
-                        output.WriteFixed64(PlayerLatDegrees);
-                    }
-                    if (PlayerLngDegrees != 0UL)
-                    {
-                        output.WriteRawTag(25);
-                        output.WriteFixed64(PlayerLngDegrees);
-                    }
-                    if (FortLatDegrees != 0UL)
-                    {
-                        output.WriteRawTag(33);
-                        output.WriteFixed64(FortLatDegrees);
-                    }
-                    if (FortLngDegrees != 0UL)
-                    {
-                        output.WriteRawTag(41);
-                        output.WriteFixed64(FortLngDegrees);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Id.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Id);
-                    }
-                    if (PlayerLatDegrees != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (PlayerLngDegrees != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (FortLatDegrees != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (FortLngDegrees != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(FortSearchRequest other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Id.Length != 0)
-                    {
-                        Id = other.Id;
-                    }
-                    if (other.PlayerLatDegrees != 0UL)
-                    {
-                        PlayerLatDegrees = other.PlayerLatDegrees;
-                    }
-                    if (other.PlayerLngDegrees != 0UL)
-                    {
-                        PlayerLngDegrees = other.PlayerLngDegrees;
-                    }
-                    if (other.FortLatDegrees != 0UL)
-                    {
-                        FortLatDegrees = other.FortLatDegrees;
-                    }
-                    if (other.FortLngDegrees != 0UL)
-                    {
-                        FortLngDegrees = other.FortLngDegrees;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Id = input.ReadBytes();
-                                break;
-                            }
-                            case 17:
-                            {
-                                PlayerLatDegrees = input.ReadFixed64();
-                                break;
-                            }
-                            case 25:
-                            {
-                                PlayerLngDegrees = input.ReadFixed64();
-                                break;
-                            }
-                            case 33:
-                            {
-                                FortLatDegrees = input.ReadFixed64();
-                                break;
-                            }
-                            case 41:
-                            {
-                                FortLngDegrees = input.ReadFixed64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as FortSearchRequest);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Id.Length != 0) hash ^= Id.GetHashCode();
-                    if (PlayerLatDegrees != 0UL) hash ^= PlayerLatDegrees.GetHashCode();
-                    if (PlayerLngDegrees != 0UL) hash ^= PlayerLngDegrees.GetHashCode();
-                    if (FortLatDegrees != 0UL) hash ^= FortLatDegrees.GetHashCode();
-                    if (FortLngDegrees != 0UL) hash ^= FortLngDegrees.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class FortDetailsRequest : pb::IMessage<FortDetailsRequest>
-            {
-                /// <summary>Field number for the "Id" field.</summary>
-                public const int IdFieldNumber = 1;
-
-                /// <summary>Field number for the "Latitude" field.</summary>
-                public const int LatitudeFieldNumber = 2;
-
-                /// <summary>Field number for the "Longitude" field.</summary>
-                public const int LongitudeFieldNumber = 3;
-
-                private static readonly pb::MessageParser<FortDetailsRequest> _parser =
-                    new pb::MessageParser<FortDetailsRequest>(() => new FortDetailsRequest());
-
-                private pb::ByteString id_ = pb::ByteString.Empty;
-                private ulong latitude_;
-                private ulong longitude_;
-
-                public FortDetailsRequest()
-                {
-                    OnConstruction();
-                }
-
-                public FortDetailsRequest(FortDetailsRequest other) : this()
-                {
-                    id_ = other.id_;
-                    latitude_ = other.latitude_;
-                    longitude_ = other.longitude_;
-                }
-
-                public static pb::MessageParser<FortDetailsRequest> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[8]; }
-                }
-
-                public pb::ByteString Id
-                {
-                    get { return id_; }
-                    set { id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public ulong Latitude
-                {
-                    get { return latitude_; }
-                    set { latitude_ = value; }
-                }
-
-                public ulong Longitude
-                {
-                    get { return longitude_; }
-                    set { longitude_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public FortDetailsRequest Clone()
-                {
-                    return new FortDetailsRequest(this);
-                }
-
-                public bool Equals(FortDetailsRequest other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Id != other.Id) return false;
-                    if (Latitude != other.Latitude) return false;
-                    if (Longitude != other.Longitude) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Id.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteBytes(Id);
-                    }
-                    if (Latitude != 0UL)
-                    {
-                        output.WriteRawTag(17);
-                        output.WriteFixed64(Latitude);
-                    }
-                    if (Longitude != 0UL)
-                    {
-                        output.WriteRawTag(25);
-                        output.WriteFixed64(Longitude);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Id.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Id);
-                    }
-                    if (Latitude != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (Longitude != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(FortDetailsRequest other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Id.Length != 0)
-                    {
-                        Id = other.Id;
-                    }
-                    if (other.Latitude != 0UL)
-                    {
-                        Latitude = other.Latitude;
-                    }
-                    if (other.Longitude != 0UL)
-                    {
-                        Longitude = other.Longitude;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Id = input.ReadBytes();
-                                break;
-                            }
-                            case 17:
-                            {
-                                Latitude = input.ReadFixed64();
-                                break;
-                            }
-                            case 25:
-                            {
-                                Longitude = input.ReadFixed64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as FortDetailsRequest);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Id.Length != 0) hash ^= Id.GetHashCode();
-                    if (Latitude != 0UL) hash ^= Latitude.GetHashCode();
-                    if (Longitude != 0UL) hash ^= Longitude.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class EncounterRequest : pb::IMessage<EncounterRequest>
-            {
-                /// <summary>Field number for the "EncounterId" field.</summary>
-                public const int EncounterIdFieldNumber = 1;
-
-                /// <summary>Field number for the "SpawnpointId" field.</summary>
-                public const int SpawnpointIdFieldNumber = 2;
-
-                /// <summary>Field number for the "PlayerLatDegrees" field.</summary>
-                public const int PlayerLatDegreesFieldNumber = 3;
-
-                /// <summary>Field number for the "PlayerLngDegrees" field.</summary>
-                public const int PlayerLngDegreesFieldNumber = 4;
-
-                private static readonly pb::MessageParser<EncounterRequest> _parser =
-                    new pb::MessageParser<EncounterRequest>(() => new EncounterRequest());
-
-                private ulong encounterId_;
-                private ulong playerLatDegrees_;
-                private ulong playerLngDegrees_;
-                private string spawnpointId_ = "";
-
-                public EncounterRequest()
-                {
-                    OnConstruction();
-                }
-
-                public EncounterRequest(EncounterRequest other) : this()
-                {
-                    encounterId_ = other.encounterId_;
-                    spawnpointId_ = other.spawnpointId_;
-                    playerLatDegrees_ = other.playerLatDegrees_;
-                    playerLngDegrees_ = other.playerLngDegrees_;
-                }
-
-                public static pb::MessageParser<EncounterRequest> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[9]; }
-                }
-
-                public ulong EncounterId
-                {
-                    get { return encounterId_; }
-                    set { encounterId_ = value; }
-                }
-
-                public string SpawnpointId
-                {
-                    get { return spawnpointId_; }
-                    set { spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public ulong PlayerLatDegrees
-                {
-                    get { return playerLatDegrees_; }
-                    set { playerLatDegrees_ = value; }
-                }
-
-                public ulong PlayerLngDegrees
-                {
-                    get { return playerLngDegrees_; }
-                    set { playerLngDegrees_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public EncounterRequest Clone()
-                {
-                    return new EncounterRequest(this);
-                }
-
-                public bool Equals(EncounterRequest other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (EncounterId != other.EncounterId) return false;
-                    if (SpawnpointId != other.SpawnpointId) return false;
-                    if (PlayerLatDegrees != other.PlayerLatDegrees) return false;
-                    if (PlayerLngDegrees != other.PlayerLngDegrees) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (EncounterId != 0UL)
-                    {
-                        output.WriteRawTag(9);
-                        output.WriteFixed64(EncounterId);
-                    }
-                    if (SpawnpointId.Length != 0)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteString(SpawnpointId);
-                    }
-                    if (PlayerLatDegrees != 0UL)
-                    {
-                        output.WriteRawTag(25);
-                        output.WriteFixed64(PlayerLatDegrees);
-                    }
-                    if (PlayerLngDegrees != 0UL)
-                    {
-                        output.WriteRawTag(33);
-                        output.WriteFixed64(PlayerLngDegrees);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (EncounterId != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (SpawnpointId.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
-                    }
-                    if (PlayerLatDegrees != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (PlayerLngDegrees != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(EncounterRequest other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.EncounterId != 0UL)
-                    {
-                        EncounterId = other.EncounterId;
-                    }
-                    if (other.SpawnpointId.Length != 0)
-                    {
-                        SpawnpointId = other.SpawnpointId;
-                    }
-                    if (other.PlayerLatDegrees != 0UL)
-                    {
-                        PlayerLatDegrees = other.PlayerLatDegrees;
-                    }
-                    if (other.PlayerLngDegrees != 0UL)
-                    {
-                        PlayerLngDegrees = other.PlayerLngDegrees;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 9:
-                            {
-                                EncounterId = input.ReadFixed64();
-                                break;
-                            }
-                            case 18:
-                            {
-                                SpawnpointId = input.ReadString();
-                                break;
-                            }
-                            case 25:
-                            {
-                                PlayerLatDegrees = input.ReadFixed64();
-                                break;
-                            }
-                            case 33:
-                            {
-                                PlayerLngDegrees = input.ReadFixed64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as EncounterRequest);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-                    if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
-                    if (PlayerLatDegrees != 0UL) hash ^= PlayerLatDegrees.GetHashCode();
-                    if (PlayerLngDegrees != 0UL) hash ^= PlayerLngDegrees.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class CatchPokemonRequest : pb::IMessage<CatchPokemonRequest>
-            {
-                /// <summary>Field number for the "EncounterId" field.</summary>
-                public const int EncounterIdFieldNumber = 1;
-
-                /// <summary>Field number for the "Pokeball" field.</summary>
-                public const int PokeballFieldNumber = 2;
-
-                /// <summary>Field number for the "NormalizedReticleSize" field.</summary>
-                public const int NormalizedReticleSizeFieldNumber = 3;
-
-                /// <summary>Field number for the "SpawnPointGuid" field.</summary>
-                public const int SpawnPointGuidFieldNumber = 4;
-
-                /// <summary>Field number for the "HitPokemon" field.</summary>
-                public const int HitPokemonFieldNumber = 5;
-
-                /// <summary>Field number for the "SpinModifier" field.</summary>
-                public const int SpinModifierFieldNumber = 6;
-
-                /// <summary>Field number for the "NormalizedHitPosition" field.</summary>
-                public const int NormalizedHitPositionFieldNumber = 7;
-
-                private static readonly pb::MessageParser<CatchPokemonRequest> _parser =
-                    new pb::MessageParser<CatchPokemonRequest>(() => new CatchPokemonRequest());
-
-                private ulong encounterId_;
-                private int hitPokemon_;
-                private ulong normalizedHitPosition_;
-                private ulong normalizedReticleSize_;
-                private int pokeball_;
-                private string spawnPointGuid_ = "";
-                private ulong spinModifier_;
-
-                public CatchPokemonRequest()
-                {
-                    OnConstruction();
-                }
-
-                public CatchPokemonRequest(CatchPokemonRequest other) : this()
-                {
-                    encounterId_ = other.encounterId_;
-                    pokeball_ = other.pokeball_;
-                    normalizedReticleSize_ = other.normalizedReticleSize_;
-                    spawnPointGuid_ = other.spawnPointGuid_;
-                    hitPokemon_ = other.hitPokemon_;
-                    spinModifier_ = other.spinModifier_;
-                    normalizedHitPosition_ = other.normalizedHitPosition_;
-                }
-
-                public static pb::MessageParser<CatchPokemonRequest> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[10]; }
-                }
-
-                public ulong EncounterId
-                {
-                    get { return encounterId_; }
-                    set { encounterId_ = value; }
-                }
-
-                public int Pokeball
-                {
-                    get { return pokeball_; }
-                    set { pokeball_ = value; }
-                }
-
-                public ulong NormalizedReticleSize
-                {
-                    get { return normalizedReticleSize_; }
-                    set { normalizedReticleSize_ = value; }
-                }
-
-                public string SpawnPointGuid
-                {
-                    get { return spawnPointGuid_; }
-                    set { spawnPointGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public int HitPokemon
-                {
-                    get { return hitPokemon_; }
-                    set { hitPokemon_ = value; }
-                }
-
-                public ulong SpinModifier
-                {
-                    get { return spinModifier_; }
-                    set { spinModifier_ = value; }
-                }
-
-                public ulong NormalizedHitPosition
-                {
-                    get { return normalizedHitPosition_; }
-                    set { normalizedHitPosition_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public CatchPokemonRequest Clone()
-                {
-                    return new CatchPokemonRequest(this);
-                }
-
-                public bool Equals(CatchPokemonRequest other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (EncounterId != other.EncounterId) return false;
-                    if (Pokeball != other.Pokeball) return false;
-                    if (NormalizedReticleSize != other.NormalizedReticleSize) return false;
-                    if (SpawnPointGuid != other.SpawnPointGuid) return false;
-                    if (HitPokemon != other.HitPokemon) return false;
-                    if (SpinModifier != other.SpinModifier) return false;
-                    if (NormalizedHitPosition != other.NormalizedHitPosition) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (EncounterId != 0UL)
-                    {
-                        output.WriteRawTag(9);
-                        output.WriteFixed64(EncounterId);
-                    }
-                    if (Pokeball != 0)
-                    {
-                        output.WriteRawTag(16);
-                        output.WriteInt32(Pokeball);
-                    }
-                    if (NormalizedReticleSize != 0UL)
-                    {
-                        output.WriteRawTag(25);
-                        output.WriteFixed64(NormalizedReticleSize);
-                    }
-                    if (SpawnPointGuid.Length != 0)
-                    {
-                        output.WriteRawTag(34);
-                        output.WriteString(SpawnPointGuid);
-                    }
-                    if (HitPokemon != 0)
-                    {
-                        output.WriteRawTag(40);
-                        output.WriteInt32(HitPokemon);
-                    }
-                    if (SpinModifier != 0UL)
-                    {
-                        output.WriteRawTag(49);
-                        output.WriteFixed64(SpinModifier);
-                    }
-                    if (NormalizedHitPosition != 0UL)
-                    {
-                        output.WriteRawTag(57);
-                        output.WriteFixed64(NormalizedHitPosition);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (EncounterId != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (Pokeball != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
-                    }
-                    if (NormalizedReticleSize != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (SpawnPointGuid.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointGuid);
-                    }
-                    if (HitPokemon != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt32Size(HitPokemon);
-                    }
-                    if (SpinModifier != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    if (NormalizedHitPosition != 0UL)
-                    {
-                        size += 1 + 8;
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(CatchPokemonRequest other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.EncounterId != 0UL)
-                    {
-                        EncounterId = other.EncounterId;
-                    }
-                    if (other.Pokeball != 0)
-                    {
-                        Pokeball = other.Pokeball;
-                    }
-                    if (other.NormalizedReticleSize != 0UL)
-                    {
-                        NormalizedReticleSize = other.NormalizedReticleSize;
-                    }
-                    if (other.SpawnPointGuid.Length != 0)
-                    {
-                        SpawnPointGuid = other.SpawnPointGuid;
-                    }
-                    if (other.HitPokemon != 0)
-                    {
-                        HitPokemon = other.HitPokemon;
-                    }
-                    if (other.SpinModifier != 0UL)
-                    {
-                        SpinModifier = other.SpinModifier;
-                    }
-                    if (other.NormalizedHitPosition != 0UL)
-                    {
-                        NormalizedHitPosition = other.NormalizedHitPosition;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 9:
-                            {
-                                EncounterId = input.ReadFixed64();
-                                break;
-                            }
-                            case 16:
-                            {
-                                Pokeball = input.ReadInt32();
-                                break;
-                            }
-                            case 25:
-                            {
-                                NormalizedReticleSize = input.ReadFixed64();
-                                break;
-                            }
-                            case 34:
-                            {
-                                SpawnPointGuid = input.ReadString();
-                                break;
-                            }
-                            case 40:
-                            {
-                                HitPokemon = input.ReadInt32();
-                                break;
-                            }
-                            case 49:
-                            {
-                                SpinModifier = input.ReadFixed64();
-                                break;
-                            }
-                            case 57:
-                            {
-                                NormalizedHitPosition = input.ReadFixed64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as CatchPokemonRequest);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
-                    if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
-                    if (NormalizedReticleSize != 0UL) hash ^= NormalizedReticleSize.GetHashCode();
-                    if (SpawnPointGuid.Length != 0) hash ^= SpawnPointGuid.GetHashCode();
-                    if (HitPokemon != 0) hash ^= HitPokemon.GetHashCode();
-                    if (SpinModifier != 0UL) hash ^= SpinModifier.GetHashCode();
-                    if (NormalizedHitPosition != 0UL) hash ^= NormalizedHitPosition.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class SettingsGuid : pb::IMessage<SettingsGuid>
-            {
-                /// <summary>Field number for the "guid" field.</summary>
-                public const int GuidFieldNumber = 1;
-
-                private static readonly pb::MessageParser<SettingsGuid> _parser =
-                    new pb::MessageParser<SettingsGuid>(() => new SettingsGuid());
-
-                private pb::ByteString guid_ = pb::ByteString.Empty;
-
-                public SettingsGuid()
-                {
-                    OnConstruction();
-                }
-
-                public SettingsGuid(SettingsGuid other) : this()
-                {
-                    guid_ = other.guid_;
-                }
-
-                public static pb::MessageParser<SettingsGuid> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[11]; }
-                }
-
-                public pb::ByteString Guid
-                {
-                    get { return guid_; }
-                    set { guid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public SettingsGuid Clone()
-                {
-                    return new SettingsGuid(this);
-                }
-
-                public bool Equals(SettingsGuid other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Guid != other.Guid) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Guid.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteBytes(Guid);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Guid.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Guid);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(SettingsGuid other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Guid.Length != 0)
-                    {
-                        Guid = other.Guid;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Guid = input.ReadBytes();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as SettingsGuid);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Guid.Length != 0) hash ^= Guid.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Time : pb::IMessage<Time>
-            {
-                /// <summary>Field number for the "time" field.</summary>
-                public const int Time_FieldNumber = 1;
-
-                private static readonly pb::MessageParser<Time> _parser = new pb::MessageParser<Time>(() => new Time());
-                private long time_;
-
-                public Time()
-                {
-                    OnConstruction();
-                }
-
-                public Time(Time other) : this()
-                {
-                    time_ = other.time_;
-                }
-
-                public static pb::MessageParser<Time> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[12]; }
-                }
-
-                public long Time_
-                {
-                    get { return time_; }
-                    set { time_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public Time Clone()
-                {
-                    return new Time(this);
-                }
-
-                public bool Equals(Time other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Time_ != other.Time_) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Time_ != 0L)
-                    {
-                        output.WriteRawTag(8);
-                        output.WriteInt64(Time_);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Time_ != 0L)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Time_);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(Time other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Time_ != 0L)
-                    {
-                        Time_ = other.Time_;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 8:
-                            {
-                                Time_ = input.ReadInt64();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as Time);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Time_ != 0L) hash ^= Time_.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-        }
-
-        #endregion
-    }
-
-    #endregion
-}
-
-#endregion Designer generated code
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/GeneratedCode/Response.cs b/PokemonGo/RocketAPI/GeneratedCode/Response.cs
deleted file mode 100644
index 6b06b68..0000000
--- a/PokemonGo/RocketAPI/GeneratedCode/Response.cs
+++ /dev/null
@@ -1,927 +0,0 @@
-#pragma warning disable 1591, 0612, 3021
-
-#region Designer generated code
-
-#region
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.GeneratedCode
-{
-    /// <summary>Holder for reflection information generated from Response.proto</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public static partial class ResponseReflection
-    {
-        #region Descriptor
-
-        /// <summary>File descriptor for Response.proto</summary>
-        public static pbr::FileDescriptor Descriptor
-        {
-            get { return descriptor; }
-        }
-
-        private static pbr::FileDescriptor descriptor;
-
-        static ResponseReflection()
-        {
-            var descriptorData = global::System.Convert.FromBase64String(
-                string.Concat(
-                    "Cg5SZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0",
-                    "ZWRDb2RlIr0DCghSZXNwb25zZRIQCgh1bmtub3duMRgBIAEoBRIQCgh1bmtu",
-                    "b3duMhgCIAEoAxIPCgdhcGlfdXJsGAMgASgJEkYKCHVua25vd242GAYgASgL",
-                    "MjQuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLlJlc3BvbnNl",
-                    "LlVua25vd242Ej4KBGF1dGgYByABKAsyMC5Qb2tlbW9uR28uUm9ja2V0QVBJ",
-                    "LkdlbmVyYXRlZENvZGUuUmVzcG9uc2UuQXV0aBIPCgdwYXlsb2FkGGQgAygM",
-                    "EhQKDGVycm9yTWVzc2FnZRhlIAEoCRqLAQoIVW5rbm93bjYSEAoIdW5rbm93",
-                    "bjEYASABKAUSTwoIdW5rbm93bjIYAiABKAsyPS5Qb2tlbW9uR28uUm9ja2V0",
-                    "QVBJLkdlbmVyYXRlZENvZGUuUmVzcG9uc2UuVW5rbm93bjYuVW5rbm93bjIa",
-                    "HAoIVW5rbm93bjISEAoIdW5rbm93bjEYASABKAwaPwoEQXV0aBIRCgl1bmtu",
-                    "b3duNzEYASABKAwSEQoJdGltZXN0YW1wGAIgASgDEhEKCXVua25vd243MxgD",
-                    "IAEoDGIGcHJvdG8z"));
-            descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-                new pbr::FileDescriptor[] {},
-                new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[]
-                {
-                    new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response),
-                        global::PokemonGo.RocketAPI.GeneratedCode.Response.Parser,
-                        new[] {"Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Auth", "Payload", "ErrorMessage"}, null,
-                        null, new pbr::GeneratedClrTypeInfo[]
-                        {
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Parser,
-                                new[] {"Unknown1", "Unknown2"}, null, null,
-                                new pbr::GeneratedClrTypeInfo[]
-                                {
-                                    new pbr::GeneratedClrTypeInfo(
-                                        typeof(
-                                            global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.
-                                                Unknown2),
-                                        global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2
-                                            .Parser, new[] {"Unknown1"}, null, null, null)
-                                }),
-                            new pbr::GeneratedClrTypeInfo(
-                                typeof(global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth),
-                                global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth.Parser,
-                                new[] {"Unknown71", "Timestamp", "Unknown73"}, null, null, null)
-                        })
-                }));
-        }
-
-        #endregion
-    }
-
-    #region Messages
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    public sealed partial class Response : pb::IMessage<Response>
-    {
-        /// <summary>Field number for the "unknown1" field.</summary>
-        public const int Unknown1FieldNumber = 1;
-
-        /// <summary>Field number for the "unknown2" field.</summary>
-        public const int Unknown2FieldNumber = 2;
-
-        /// <summary>Field number for the "api_url" field.</summary>
-        public const int ApiUrlFieldNumber = 3;
-
-        /// <summary>Field number for the "unknown6" field.</summary>
-        public const int Unknown6FieldNumber = 6;
-
-        /// <summary>Field number for the "auth" field.</summary>
-        public const int AuthFieldNumber = 7;
-
-        /// <summary>Field number for the "payload" field.</summary>
-        public const int PayloadFieldNumber = 100;
-
-        /// <summary>Field number for the "errorMessage" field.</summary>
-        public const int ErrorMessageFieldNumber = 101;
-
-        private static readonly pb::MessageParser<Response> _parser =
-            new pb::MessageParser<Response>(() => new Response());
-
-        private static readonly pb::FieldCodec<pb::ByteString> _repeated_payload_codec
-            = pb::FieldCodec.ForBytes(802);
-
-        private readonly pbc::RepeatedField<pb::ByteString> payload_ = new pbc::RepeatedField<pb::ByteString>();
-        private string apiUrl_ = "";
-        private global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth auth_;
-        private string errorMessage_ = "";
-        private int unknown1_;
-        private long unknown2_;
-        private global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6 unknown6_;
-
-        public Response()
-        {
-            OnConstruction();
-        }
-
-        public Response(Response other) : this()
-        {
-            unknown1_ = other.unknown1_;
-            unknown2_ = other.unknown2_;
-            apiUrl_ = other.apiUrl_;
-            Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
-            Auth = other.auth_ != null ? other.Auth.Clone() : null;
-            payload_ = other.payload_.Clone();
-            errorMessage_ = other.errorMessage_;
-        }
-
-        public static pb::MessageParser<Response> Parser
-        {
-            get { return _parser; }
-        }
-
-        public static pbr::MessageDescriptor Descriptor
-        {
-            get { return global::PokemonGo.RocketAPI.GeneratedCode.ResponseReflection.Descriptor.MessageTypes[0]; }
-        }
-
-        public int Unknown1
-        {
-            get { return unknown1_; }
-            set { unknown1_ = value; }
-        }
-
-        public long Unknown2
-        {
-            get { return unknown2_; }
-            set { unknown2_ = value; }
-        }
-
-        public string ApiUrl
-        {
-            get { return apiUrl_; }
-            set { apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6 Unknown6
-        {
-            get { return unknown6_; }
-            set { unknown6_ = value; }
-        }
-
-        public global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth Auth
-        {
-            get { return auth_; }
-            set { auth_ = value; }
-        }
-
-        public pbc::RepeatedField<pb::ByteString> Payload
-        {
-            get { return payload_; }
-        }
-
-        public string ErrorMessage
-        {
-            get { return errorMessage_; }
-            set { errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-        }
-
-        pbr::MessageDescriptor pb::IMessage.Descriptor
-        {
-            get { return Descriptor; }
-        }
-
-        public Response Clone()
-        {
-            return new Response(this);
-        }
-
-        public bool Equals(Response other)
-        {
-            if (ReferenceEquals(other, null))
-            {
-                return false;
-            }
-            if (ReferenceEquals(other, this))
-            {
-                return true;
-            }
-            if (Unknown1 != other.Unknown1) return false;
-            if (Unknown2 != other.Unknown2) return false;
-            if (ApiUrl != other.ApiUrl) return false;
-            if (!Equals(Unknown6, other.Unknown6)) return false;
-            if (!Equals(Auth, other.Auth)) return false;
-            if (!payload_.Equals(other.payload_)) return false;
-            if (ErrorMessage != other.ErrorMessage) return false;
-            return true;
-        }
-
-        public void WriteTo(pb::CodedOutputStream output)
-        {
-            if (Unknown1 != 0)
-            {
-                output.WriteRawTag(8);
-                output.WriteInt32(Unknown1);
-            }
-            if (Unknown2 != 0L)
-            {
-                output.WriteRawTag(16);
-                output.WriteInt64(Unknown2);
-            }
-            if (ApiUrl.Length != 0)
-            {
-                output.WriteRawTag(26);
-                output.WriteString(ApiUrl);
-            }
-            if (unknown6_ != null)
-            {
-                output.WriteRawTag(50);
-                output.WriteMessage(Unknown6);
-            }
-            if (auth_ != null)
-            {
-                output.WriteRawTag(58);
-                output.WriteMessage(Auth);
-            }
-            payload_.WriteTo(output, _repeated_payload_codec);
-            if (ErrorMessage.Length != 0)
-            {
-                output.WriteRawTag(170, 6);
-                output.WriteString(ErrorMessage);
-            }
-        }
-
-        public int CalculateSize()
-        {
-            var size = 0;
-            if (Unknown1 != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-            }
-            if (Unknown2 != 0L)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
-            }
-            if (ApiUrl.Length != 0)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
-            }
-            if (unknown6_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
-            }
-            if (auth_ != null)
-            {
-                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Auth);
-            }
-            size += payload_.CalculateSize(_repeated_payload_codec);
-            if (ErrorMessage.Length != 0)
-            {
-                size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
-            }
-            return size;
-        }
-
-        public void MergeFrom(Response other)
-        {
-            if (other == null)
-            {
-                return;
-            }
-            if (other.Unknown1 != 0)
-            {
-                Unknown1 = other.Unknown1;
-            }
-            if (other.Unknown2 != 0L)
-            {
-                Unknown2 = other.Unknown2;
-            }
-            if (other.ApiUrl.Length != 0)
-            {
-                ApiUrl = other.ApiUrl;
-            }
-            if (other.unknown6_ != null)
-            {
-                if (unknown6_ == null)
-                {
-                    unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6();
-                }
-                Unknown6.MergeFrom(other.Unknown6);
-            }
-            if (other.auth_ != null)
-            {
-                if (auth_ == null)
-                {
-                    auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth();
-                }
-                Auth.MergeFrom(other.Auth);
-            }
-            payload_.Add(other.payload_);
-            if (other.ErrorMessage.Length != 0)
-            {
-                ErrorMessage = other.ErrorMessage;
-            }
-        }
-
-        public void MergeFrom(pb::CodedInputStream input)
-        {
-            uint tag;
-            while ((tag = input.ReadTag()) != 0)
-            {
-                switch (tag)
-                {
-                    default:
-                        input.SkipLastField();
-                        break;
-                    case 8:
-                    {
-                        Unknown1 = input.ReadInt32();
-                        break;
-                    }
-                    case 16:
-                    {
-                        Unknown2 = input.ReadInt64();
-                        break;
-                    }
-                    case 26:
-                    {
-                        ApiUrl = input.ReadString();
-                        break;
-                    }
-                    case 50:
-                    {
-                        if (unknown6_ == null)
-                        {
-                            unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6();
-                        }
-                        input.ReadMessage(unknown6_);
-                        break;
-                    }
-                    case 58:
-                    {
-                        if (auth_ == null)
-                        {
-                            auth_ = new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Auth();
-                        }
-                        input.ReadMessage(auth_);
-                        break;
-                    }
-                    case 802:
-                    {
-                        payload_.AddEntriesFrom(input, _repeated_payload_codec);
-                        break;
-                    }
-                    case 810:
-                    {
-                        ErrorMessage = input.ReadString();
-                        break;
-                    }
-                }
-            }
-        }
-
-        public override bool Equals(object other)
-        {
-            return Equals(other as Response);
-        }
-
-        public override int GetHashCode()
-        {
-            var hash = 1;
-            if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-            if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
-            if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
-            if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
-            if (auth_ != null) hash ^= Auth.GetHashCode();
-            hash ^= payload_.GetHashCode();
-            if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
-            return hash;
-        }
-
-        partial void OnConstruction();
-
-        public override string ToString()
-        {
-            return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        #region Nested types
-
-        /// <summary>Container for nested types declared in the Response message type.</summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-        public static partial class Types
-        {
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Unknown6 : pb::IMessage<Unknown6>
-            {
-                /// <summary>Field number for the "unknown1" field.</summary>
-                public const int Unknown1FieldNumber = 1;
-
-                /// <summary>Field number for the "unknown2" field.</summary>
-                public const int Unknown2FieldNumber = 2;
-
-                private static readonly pb::MessageParser<Unknown6> _parser =
-                    new pb::MessageParser<Unknown6>(() => new Unknown6());
-
-                private int unknown1_;
-                private global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2 unknown2_;
-
-                public Unknown6()
-                {
-                    OnConstruction();
-                }
-
-                public Unknown6(Unknown6 other) : this()
-                {
-                    unknown1_ = other.unknown1_;
-                    Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
-                }
-
-                public static pb::MessageParser<Unknown6> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Response.Descriptor.NestedTypes[0]; }
-                }
-
-                public int Unknown1
-                {
-                    get { return unknown1_; }
-                    set { unknown1_ = value; }
-                }
-
-                public global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2 Unknown2
-                {
-                    get { return unknown2_; }
-                    set { unknown2_ = value; }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public Unknown6 Clone()
-                {
-                    return new Unknown6(this);
-                }
-
-                public bool Equals(Unknown6 other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Unknown1 != other.Unknown1) return false;
-                    if (!Equals(Unknown2, other.Unknown2)) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Unknown1 != 0)
-                    {
-                        output.WriteRawTag(8);
-                        output.WriteInt32(Unknown1);
-                    }
-                    if (unknown2_ != null)
-                    {
-                        output.WriteRawTag(18);
-                        output.WriteMessage(Unknown2);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Unknown1 != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
-                    }
-                    if (unknown2_ != null)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(Unknown6 other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Unknown1 != 0)
-                    {
-                        Unknown1 = other.Unknown1;
-                    }
-                    if (other.unknown2_ != null)
-                    {
-                        if (unknown2_ == null)
-                        {
-                            unknown2_ =
-                                new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.Unknown2();
-                        }
-                        Unknown2.MergeFrom(other.Unknown2);
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 8:
-                            {
-                                Unknown1 = input.ReadInt32();
-                                break;
-                            }
-                            case 18:
-                            {
-                                if (unknown2_ == null)
-                                {
-                                    unknown2_ =
-                                        new global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Types.
-                                            Unknown2();
-                                }
-                                input.ReadMessage(unknown2_);
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as Unknown6);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
-                    if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-
-                #region Nested types
-
-                /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
-                [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-                public static partial class Types
-                {
-                    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-                    public sealed partial class Unknown2 : pb::IMessage<Unknown2>
-                    {
-                        /// <summary>Field number for the "unknown1" field.</summary>
-                        public const int Unknown1FieldNumber = 1;
-
-                        private static readonly pb::MessageParser<Unknown2> _parser =
-                            new pb::MessageParser<Unknown2>(() => new Unknown2());
-
-                        private pb::ByteString unknown1_ = pb::ByteString.Empty;
-
-                        public Unknown2()
-                        {
-                            OnConstruction();
-                        }
-
-                        public Unknown2(Unknown2 other) : this()
-                        {
-                            unknown1_ = other.unknown1_;
-                        }
-
-                        public static pb::MessageParser<Unknown2> Parser
-                        {
-                            get { return _parser; }
-                        }
-
-                        public static pbr::MessageDescriptor Descriptor
-                        {
-                            get
-                            {
-                                return
-                                    global::PokemonGo.RocketAPI.GeneratedCode.Response.Types.Unknown6.Descriptor
-                                        .NestedTypes[0];
-                            }
-                        }
-
-                        public pb::ByteString Unknown1
-                        {
-                            get { return unknown1_; }
-                            set { unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                        }
-
-                        pbr::MessageDescriptor pb::IMessage.Descriptor
-                        {
-                            get { return Descriptor; }
-                        }
-
-                        public Unknown2 Clone()
-                        {
-                            return new Unknown2(this);
-                        }
-
-                        public bool Equals(Unknown2 other)
-                        {
-                            if (ReferenceEquals(other, null))
-                            {
-                                return false;
-                            }
-                            if (ReferenceEquals(other, this))
-                            {
-                                return true;
-                            }
-                            if (Unknown1 != other.Unknown1) return false;
-                            return true;
-                        }
-
-                        public void WriteTo(pb::CodedOutputStream output)
-                        {
-                            if (Unknown1.Length != 0)
-                            {
-                                output.WriteRawTag(10);
-                                output.WriteBytes(Unknown1);
-                            }
-                        }
-
-                        public int CalculateSize()
-                        {
-                            var size = 0;
-                            if (Unknown1.Length != 0)
-                            {
-                                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
-                            }
-                            return size;
-                        }
-
-                        public void MergeFrom(Unknown2 other)
-                        {
-                            if (other == null)
-                            {
-                                return;
-                            }
-                            if (other.Unknown1.Length != 0)
-                            {
-                                Unknown1 = other.Unknown1;
-                            }
-                        }
-
-                        public void MergeFrom(pb::CodedInputStream input)
-                        {
-                            uint tag;
-                            while ((tag = input.ReadTag()) != 0)
-                            {
-                                switch (tag)
-                                {
-                                    default:
-                                        input.SkipLastField();
-                                        break;
-                                    case 10:
-                                    {
-                                        Unknown1 = input.ReadBytes();
-                                        break;
-                                    }
-                                }
-                            }
-                        }
-
-                        public override bool Equals(object other)
-                        {
-                            return Equals(other as Unknown2);
-                        }
-
-                        public override int GetHashCode()
-                        {
-                            var hash = 1;
-                            if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
-                            return hash;
-                        }
-
-                        partial void OnConstruction();
-
-                        public override string ToString()
-                        {
-                            return pb::JsonFormatter.ToDiagnosticString(this);
-                        }
-                    }
-                }
-
-                #endregion
-            }
-
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public sealed partial class Auth : pb::IMessage<Auth>
-            {
-                /// <summary>Field number for the "unknown71" field.</summary>
-                public const int Unknown71FieldNumber = 1;
-
-                /// <summary>Field number for the "timestamp" field.</summary>
-                public const int TimestampFieldNumber = 2;
-
-                /// <summary>Field number for the "unknown73" field.</summary>
-                public const int Unknown73FieldNumber = 3;
-
-                private static readonly pb::MessageParser<Auth> _parser = new pb::MessageParser<Auth>(() => new Auth());
-                private long timestamp_;
-                private pb::ByteString unknown71_ = pb::ByteString.Empty;
-                private pb::ByteString unknown73_ = pb::ByteString.Empty;
-
-                public Auth()
-                {
-                    OnConstruction();
-                }
-
-                public Auth(Auth other) : this()
-                {
-                    unknown71_ = other.unknown71_;
-                    timestamp_ = other.timestamp_;
-                    unknown73_ = other.unknown73_;
-                }
-
-                public static pb::MessageParser<Auth> Parser
-                {
-                    get { return _parser; }
-                }
-
-                public static pbr::MessageDescriptor Descriptor
-                {
-                    get { return global::PokemonGo.RocketAPI.GeneratedCode.Response.Descriptor.NestedTypes[1]; }
-                }
-
-                public pb::ByteString Unknown71
-                {
-                    get { return unknown71_; }
-                    set { unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                public long Timestamp
-                {
-                    get { return timestamp_; }
-                    set { timestamp_ = value; }
-                }
-
-                public pb::ByteString Unknown73
-                {
-                    get { return unknown73_; }
-                    set { unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); }
-                }
-
-                pbr::MessageDescriptor pb::IMessage.Descriptor
-                {
-                    get { return Descriptor; }
-                }
-
-                public Auth Clone()
-                {
-                    return new Auth(this);
-                }
-
-                public bool Equals(Auth other)
-                {
-                    if (ReferenceEquals(other, null))
-                    {
-                        return false;
-                    }
-                    if (ReferenceEquals(other, this))
-                    {
-                        return true;
-                    }
-                    if (Unknown71 != other.Unknown71) return false;
-                    if (Timestamp != other.Timestamp) return false;
-                    if (Unknown73 != other.Unknown73) return false;
-                    return true;
-                }
-
-                public void WriteTo(pb::CodedOutputStream output)
-                {
-                    if (Unknown71.Length != 0)
-                    {
-                        output.WriteRawTag(10);
-                        output.WriteBytes(Unknown71);
-                    }
-                    if (Timestamp != 0L)
-                    {
-                        output.WriteRawTag(16);
-                        output.WriteInt64(Timestamp);
-                    }
-                    if (Unknown73.Length != 0)
-                    {
-                        output.WriteRawTag(26);
-                        output.WriteBytes(Unknown73);
-                    }
-                }
-
-                public int CalculateSize()
-                {
-                    var size = 0;
-                    if (Unknown71.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
-                    }
-                    if (Timestamp != 0L)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
-                    }
-                    if (Unknown73.Length != 0)
-                    {
-                        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
-                    }
-                    return size;
-                }
-
-                public void MergeFrom(Auth other)
-                {
-                    if (other == null)
-                    {
-                        return;
-                    }
-                    if (other.Unknown71.Length != 0)
-                    {
-                        Unknown71 = other.Unknown71;
-                    }
-                    if (other.Timestamp != 0L)
-                    {
-                        Timestamp = other.Timestamp;
-                    }
-                    if (other.Unknown73.Length != 0)
-                    {
-                        Unknown73 = other.Unknown73;
-                    }
-                }
-
-                public void MergeFrom(pb::CodedInputStream input)
-                {
-                    uint tag;
-                    while ((tag = input.ReadTag()) != 0)
-                    {
-                        switch (tag)
-                        {
-                            default:
-                                input.SkipLastField();
-                                break;
-                            case 10:
-                            {
-                                Unknown71 = input.ReadBytes();
-                                break;
-                            }
-                            case 16:
-                            {
-                                Timestamp = input.ReadInt64();
-                                break;
-                            }
-                            case 26:
-                            {
-                                Unknown73 = input.ReadBytes();
-                                break;
-                            }
-                        }
-                    }
-                }
-
-                public override bool Equals(object other)
-                {
-                    return Equals(other as Auth);
-                }
-
-                public override int GetHashCode()
-                {
-                    var hash = 1;
-                    if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
-                    if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
-                    if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
-                    return hash;
-                }
-
-                partial void OnConstruction();
-
-                public override string ToString()
-                {
-                    return pb::JsonFormatter.ToDiagnosticString(this);
-                }
-            }
-        }
-
-        #endregion
-    }
-
-    #endregion
-}
-
-#endregion Designer generated code
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/HttpClientHelper.cs b/PokemonGo/RocketAPI/Helpers/HttpClientHelper.cs
deleted file mode 100644
index ebfc286..0000000
--- a/PokemonGo/RocketAPI/Helpers/HttpClientHelper.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-#region
-
-using System.Collections.Generic;
-using System.Net;
-using System.Net.Http;
-using System.Threading.Tasks;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    public static class HttpClientHelper
-    {
-        public static async Task<TResponse> PostFormEncodedAsync<TResponse>(string url,
-            params KeyValuePair<string, string>[] keyValuePairs)
-        {
-            var handler = new HttpClientHandler
-            {
-                AutomaticDecompression = DecompressionMethods.GZip,
-                AllowAutoRedirect = false
-            };
-
-            using (var tempHttpClient = new HttpClient(handler))
-            {
-                var response = await tempHttpClient.PostAsync(url, new FormUrlEncodedContent(keyValuePairs));
-                return await response.Content.ReadAsAsync<TResponse>();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/ProtoHelper.cs b/PokemonGo/RocketAPI/Helpers/ProtoHelper.cs
deleted file mode 100644
index 91dcb0d..0000000
--- a/PokemonGo/RocketAPI/Helpers/ProtoHelper.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-#region
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    public class ProtoHelper
-    {
-        public static byte[] EncodeUlongList(List<ulong> integers)
-        {
-            var output = new List<byte>();
-            foreach (var integer in integers.OrderBy(c => c))
-            {
-                output.AddRange(VarintBitConverter.GetVarintBytes(integer));
-            }
-
-            return output.ToArray();
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/RandomHelper.cs b/PokemonGo/RocketAPI/Helpers/RandomHelper.cs
deleted file mode 100644
index 169aaf1..0000000
--- a/PokemonGo/RocketAPI/Helpers/RandomHelper.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-#region
-
-using System;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    public class RandomHelper
-    {
-        private static readonly Random _random = new Random();
-
-        public static long GetLongRandom(long min, long max)
-        {
-            var buf = new byte[8];
-            _random.NextBytes(buf);
-            var longRand = BitConverter.ToInt64(buf, 0);
-
-            return Math.Abs(longRand%(max - min)) + min;
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/RequestBuilder.cs b/PokemonGo/RocketAPI/Helpers/RequestBuilder.cs
deleted file mode 100644
index 686d630..0000000
--- a/PokemonGo/RocketAPI/Helpers/RequestBuilder.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-#region
-
-using System.Linq;
-using PokemonGo.RocketAPI.Enums;
-using PokemonGo.RocketAPI.GeneratedCode;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    public static class RequestBuilder
-    {
-        public static Request GetInitialRequest(string authToken, AuthType authType, double lat, double lng,
-            double altitude, params Request.Types.Requests[] customRequests)
-        {
-            return new Request
-            {
-                Altitude = Utils.FloatAsUlong(altitude),
-                Auth = new Request.Types.AuthInfo
-                {
-                    Provider = authType == AuthType.Google ? "google" : "ptc",
-                    Token = new Request.Types.AuthInfo.Types.JWT
-                    {
-                        Contents = authToken,
-                        Unknown13 = 14
-                    }
-                },
-                Latitude = Utils.FloatAsUlong(lat),
-                Longitude = Utils.FloatAsUlong(lng),
-                RpcId = 1469378659230941192,
-                Unknown1 = 2,
-                Unknown12 = 989, //Required otherwise we receive incompatible protocol
-                Requests =
-                {
-                    customRequests
-                }
-            };
-        }
-
-        public static Request GetInitialRequest(string authToken, AuthType authType, double lat, double lng,
-            double altitude, params RequestType[] customRequestTypes)
-        {
-            var customRequests = customRequestTypes.ToList().Select(c => new Request.Types.Requests {Type = (int) c});
-            return GetInitialRequest(authToken, authType, lat, lng, altitude, customRequests.ToArray());
-        }
-
-        public static Request GetRequest(Request.Types.UnknownAuth unknownAuth, double lat, double lng, double altitude,
-            params Request.Types.Requests[] customRequests)
-        {
-            return new Request
-            {
-                Altitude = Utils.FloatAsUlong(altitude),
-                Unknownauth = unknownAuth,
-                Latitude = Utils.FloatAsUlong(lat),
-                Longitude = Utils.FloatAsUlong(lng),
-                RpcId = 1469378659230941192,
-                Unknown1 = 2,
-                Unknown12 = 989, //Required otherwise we receive incompatible protocol
-                Requests =
-                {
-                    customRequests
-                }
-            };
-        }
-
-        public static Request GetRequest(Request.Types.UnknownAuth unknownAuth, double lat, double lng, double altitude,
-            params RequestType[] customRequestTypes)
-        {
-            var customRequests = customRequestTypes.ToList().Select(c => new Request.Types.Requests {Type = (int) c});
-            return GetRequest(unknownAuth, lat, lng, altitude, customRequests.ToArray());
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/RetryHandler.cs b/PokemonGo/RocketAPI/Helpers/RetryHandler.cs
deleted file mode 100644
index f472155..0000000
--- a/PokemonGo/RocketAPI/Helpers/RetryHandler.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-#region
-
-using System;
-using System.Net;
-using System.Net.Http;
-using System.Threading;
-using System.Threading.Tasks;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    internal class RetryHandler : DelegatingHandler
-    {
-        private const int MaxRetries = 100000;
-
-        public RetryHandler(HttpMessageHandler innerHandler)
-            : base(innerHandler)
-        {
-        }
-
-        protected override async Task<HttpResponseMessage> SendAsync(
-            HttpRequestMessage request,
-            CancellationToken cancellationToken)
-        {
-            for (var i = 0; i <= MaxRetries; i++)
-            {
-                try
-                {
-                    var response = await base.SendAsync(request, cancellationToken);
-                    if (response.StatusCode == HttpStatusCode.BadGateway)
-                        throw new Exception(); //todo: proper implementation
-
-                    return response;
-                }
-                catch (Exception)
-                {
-                    Console.WriteLine(
-                        $"[{DateTime.Now.ToString("HH:mm:ss")}] [#{i} of {MaxRetries}] retry request {request.RequestUri}");
-                    if (i < MaxRetries)
-                    {
-                        await Task.Delay(1000);
-                        continue;
-                    }
-                    throw;
-                }
-            }
-            return null;
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/S2Helper.cs b/PokemonGo/RocketAPI/Helpers/S2Helper.cs
deleted file mode 100644
index b8996c9..0000000
--- a/PokemonGo/RocketAPI/Helpers/S2Helper.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-#region
-
-using System.Collections.Generic;
-using System.Linq;
-using Google.Common.Geometry;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    public class S2Helper
-    {
-        public static List<ulong> GetNearbyCellIds(double longitude, double latitude)
-        {
-            var nearbyCellIds = new List<S2CellId>();
-
-            var cellId = S2CellId.FromLatLng(S2LatLng.FromDegrees(latitude, longitude)).ParentForLevel(15);
-                //.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent;
-
-            nearbyCellIds.Add(cellId);
-            for (var i = 0; i < 10; i++)
-            {
-                nearbyCellIds.Add(GetPrevious(cellId, i));
-                nearbyCellIds.Add(GetNext(cellId, i));
-            }
-
-            return nearbyCellIds.Select(c => c.Id).OrderBy(c => c).ToList();
-        }
-
-        private static S2CellId GetNext(S2CellId cellId, int depth)
-        {
-            if (depth < 0)
-                return cellId;
-
-            depth--;
-
-            return GetNext(cellId.Next, depth);
-        }
-
-        private static S2CellId GetPrevious(S2CellId cellId, int depth)
-        {
-            if (depth < 0)
-                return cellId;
-
-            depth--;
-
-            return GetPrevious(cellId.Previous, depth);
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Helpers/Utils.cs b/PokemonGo/RocketAPI/Helpers/Utils.cs
deleted file mode 100644
index 13727c2..0000000
--- a/PokemonGo/RocketAPI/Helpers/Utils.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-#region
-
-using System;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Helpers
-{
-    public class Utils
-    {
-        public static ulong FloatAsUlong(double value)
-        {
-            var bytes = BitConverter.GetBytes(value);
-            return BitConverter.ToUInt64(bytes, 0);
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/ILatLong.cs b/PokemonGo/RocketAPI/ILatLong.cs
deleted file mode 100644
index c0fd3fc..0000000
--- a/PokemonGo/RocketAPI/ILatLong.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PokemonGo.RocketAPI
-{
-    public interface ILatLong
-    {
-        double Latitude { get; }
-        double Longitude { get; }
-    }
-
-    public class LatLong : Tuple<double, double>, ILatLong
-    {
-        public LatLong(double item1, double item2) : base(item1, item2)
-        {
-        }
-
-        public double Latitude
-        {
-            get
-            {
-                return this.Item1;
-            }
-        }
-        public double Longitude
-        {
-            get
-            {
-                return this.Item2;
-            }
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/ISettings.cs b/PokemonGo/RocketAPI/ISettings.cs
deleted file mode 100644
index 6174471..0000000
--- a/PokemonGo/RocketAPI/ISettings.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-#region
-
-using PokemonGo.RocketAPI.Enums;
-using System.Collections.Generic;
-using System.Runtime.CompilerServices;
-
-#endregion
-
-namespace PokemonGo.RocketAPI
-{
-    public interface ISettings
-    {
-        AuthType AuthType { get; }
-        double DefaultLatitude { get; set; }
-        double DefaultLongitude { get; set; }
-        string LevelOutput { get; }
-        int LevelTimeInterval { get; }
-        string GoogleRefreshToken { get; set; }
-        string PtcPassword { get; }
-        string PtcUsername { get; }
-        string Email { get; }
-        string Password { get; }
-        bool EvolveAllGivenPokemons { get; }
-        string TransferType { get; }
-        int TransferCPThreshold { get; }
-        int TransferIVThreshold { get; }
-        int TravelSpeed { get; }
-        int ImageSize { get; }
-        bool Recycler { get; }
-        ICollection<KeyValuePair<AllEnum.ItemId, int>> ItemRecycleFilter { get; }
-        int RecycleItemsInterval { get; }
-        string Language { get; }
-        string RazzBerryMode { get; }
-        double RazzBerrySetting { get; }
-        bool CatchPokemon { get; }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Login/GoogleLogin.cs b/PokemonGo/RocketAPI/Login/GoogleLogin.cs
deleted file mode 100644
index 10c9c70..0000000
--- a/PokemonGo/RocketAPI/Login/GoogleLogin.cs
+++ /dev/null
@@ -1,180 +0,0 @@
-using PokemonGo.RocketAPI.Exceptions;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Net.Http;
-using System.Security.Cryptography;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PokemonGo.RocketAPI.Login
-{
-    public class GoogleLogin : ILoginType
-    {
-        private readonly string password;
-        private readonly string email;
-
-        public GoogleLogin(string email, string password)
-        {
-            this.email = email;
-            this.password = password;
-        }
-
-        public async Task<string> GetAccessToken()
-        {
-            var _GPSOresponse = await PerformMasterLoginAsync(email, password).ConfigureAwait(false);
-            string token;
-            if (!_GPSOresponse.TryGetValue("Token", out token))
-                throw new LoginFailedException();
-
-            var oauthResponse = await PerformOAuthAsync(
-            token,
-            "audience:server:client_id:848232511240-7so421jotr2609rmqakceuu1luuq0ptb.apps.googleusercontent.com",
-            "com.nianticlabs.pokemongo",
-            "321187995bc7cdc2b5fc91b11a96e2baa8602c62",
-            email).ConfigureAwait(false);
-            return oauthResponse["Auth"];
-        }
-
-        private static string b64Key = "AAAAgMom/1a/v0lblO2Ubrt60J2gcuXSljGFQXgcyZWveWLEwo6prwgi3" +
-            "iJIZdodyhKZQrNWp5nKJ3srRXcUW+F1BD3baEVGcmEgqaLZUNBjm057pK" +
-            "RI16kB0YppeGx5qIQ5QjKzsR8ETQbKLNWgRY0QRNVz34kMJR3P/LgHax/" +
-            "6rmf5AAAAAwEAAQ==";
-
-        private static RSAParameters androidKey = GoogleKeyUtils.KeyFromB64(b64Key);
-
-        private static string version = "0.0.5";
-        private static string authUrl = "https://android.clients.google.com/auth";
-        private static string userAgent = "GPSOAuthSharp/" + version;
-
-        private async static Task<IDictionary<string, string>> PerformAuthRequestAsync(IDictionary<string, string> data)
-        {
-            var handler = new HttpClientHandler
-            {
-                AutomaticDecompression = DecompressionMethods.GZip,
-                AllowAutoRedirect = false
-            };
-            using (var tempHttpClient = new HttpClient(handler))
-            {
-                tempHttpClient.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
-
-                HttpResponseMessage response;
-                using (var formUrlEncodedContent = new FormUrlEncodedContent(data))
-                {
-                    response = await tempHttpClient.PostAsync(authUrl, formUrlEncodedContent).ConfigureAwait(false);
-                }
-
-                var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
-                return GoogleKeyUtils.ParseAuthResponse(content);
-            }
-        }
-
-        private static IDictionary<string, string> GenerateBaseRequest(string email, string encryptedPassword, string service)
-            => new Dictionary<string, string> {
-                { "accountType", "HOSTED_OR_GOOGLE" },
-                { "Email", email },
-                { "has_permission", "1" },
-                { "EncryptedPasswd",  encryptedPassword},
-                { "service", service },
-                { "source", "android" },
-                { "device_country", "us" },
-                { "operatorCountry", "us" },
-                { "lang", "en" },
-                { "sdk_version", "21" }
-            };
-
-        private static Task<IDictionary<string, string>> PerformMasterLoginAsync(string email, string password)
-        {
-            var signature = GoogleKeyUtils.CreateSignature(email, password, androidKey);
-            var request = GenerateBaseRequest(email, signature, "ac2dm");
-            request.Add("add_account", "1");
-            return PerformAuthRequestAsync(request);
-        }
-
-        private static Task<IDictionary<string, string>> PerformOAuthAsync(string masterToken, string service, string app, string clientSig, string email)
-        {
-            var request = GenerateBaseRequest(email, masterToken, service);
-            request.Add("app", app);
-            request.Add("client_sig", clientSig);
-            return PerformAuthRequestAsync(request);
-        }
-    }
-
-    internal class GoogleKeyUtils
-    {
-        // key_from_b64
-        // BitConverter has different endianness, hence the Reverse()
-        public static RSAParameters KeyFromB64(string b64Key)
-        {
-            var decoded = Convert.FromBase64String(b64Key);
-            var modLength = BitConverter.ToInt32(decoded.Take(4).Reverse().ToArray(), 0);
-            var mod = decoded.Skip(4).Take(modLength).ToArray();
-            var expLength = BitConverter.ToInt32(decoded.Skip(modLength + 4).Take(4).Reverse().ToArray(), 0);
-            var exponent = decoded.Skip(modLength + 8).Take(expLength).ToArray();
-            var rsaKeyInfo = new RSAParameters
-            {
-                Modulus = mod,
-                Exponent = exponent
-            };
-            return rsaKeyInfo;
-        }
-
-        // key_to_struct
-        // Python version returns a string, but we use byte[] to get the same results
-        public static byte[] KeyToStruct(RSAParameters key)
-        {
-            byte[] modLength = { 0x00, 0x00, 0x00, 0x80 };
-            var mod = key.Modulus;
-            byte[] expLength = { 0x00, 0x00, 0x00, 0x03 };
-            var exponent = key.Exponent;
-            return DataTypeUtils.CombineBytes(modLength, mod, expLength, exponent);
-        }
-
-        // parse_auth_response
-        public static Dictionary<string, string> ParseAuthResponse(string text)
-        {
-            var responseData = new Dictionary<string, string>();
-            foreach (string line in text.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries))
-            {
-                var parts = line.Split('=');
-                responseData.Add(parts[0], parts[1]);
-            }
-            return responseData;
-        }
-
-        // signature
-        public static string CreateSignature(string email, string password, RSAParameters key)
-        {
-            using (var rsa = new RSACryptoServiceProvider())
-            {
-                rsa.ImportParameters(key);
-                var sha1 = SHA1.Create();
-                byte[] prefix = { 0x00 };
-                var hash = sha1.ComputeHash(GoogleKeyUtils.KeyToStruct(key)).Take(4).ToArray();
-                var encrypted = rsa.Encrypt(Encoding.UTF8.GetBytes(email + "\x00" + password), true);
-                return DataTypeUtils.UrlSafeBase64(DataTypeUtils.CombineBytes(prefix, hash, encrypted));
-            }
-        }
-
-        private class DataTypeUtils
-        {
-            public static string UrlSafeBase64(byte[] byteArray)
-            {
-                return Convert.ToBase64String(byteArray).Replace('+', '-').Replace('/', '_');
-            }
-
-            public static byte[] CombineBytes(params byte[][] arrays)
-            {
-                var rv = new byte[arrays.Sum(a => a.Length)];
-                var offset = 0;
-                foreach (byte[] array in arrays)
-                {
-                    Buffer.BlockCopy(array, 0, rv, offset, array.Length);
-                    offset += array.Length;
-                }
-                return rv;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Login/ILoginType.cs b/PokemonGo/RocketAPI/Login/ILoginType.cs
deleted file mode 100644
index 0c102a0..0000000
--- a/PokemonGo/RocketAPI/Login/ILoginType.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Threading.Tasks;
-
-namespace PokemonGo.RocketAPI.Login
-{
-    /// <summary>
-    /// Interface for the login into the game using either Google or PTC
-    /// </summary>
-    interface ILoginType
-    {
-        /// <summary>
-        /// Gets the access token.
-        /// </summary>
-        /// <returns></returns>
-        Task<string> GetAccessToken();
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Login/PtcLogin.cs b/PokemonGo/RocketAPI/Login/PtcLogin.cs
deleted file mode 100644
index 0cf6b04..0000000
--- a/PokemonGo/RocketAPI/Login/PtcLogin.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-using Newtonsoft.Json;
-using PokemonGo.RocketAPI.Exceptions;
-using System.Collections.Generic;
-using System.Net;
-using System.Net.Http;
-using System.Threading.Tasks;
-using System.Web;
-
-namespace PokemonGo.RocketAPI.Login
-{
-    class PtcLogin : ILoginType
-    {
-        readonly string password;
-        readonly string username;
-
-        public PtcLogin(string username, string password)
-        {
-            this.username = username;
-            this.password = password;
-        }
-        public async Task<string> GetAccessToken()
-        {
-            var handler = new HttpClientHandler
-            {
-                AutomaticDecompression = DecompressionMethods.GZip,
-                AllowAutoRedirect = false
-            };
-
-            using (var tempHttpClient = new HttpClient(handler))
-            {
-                //Get session cookie
-                var sessionData = await GetSessionCookie(tempHttpClient).ConfigureAwait(false);
-
-                //Login
-                var ticketId = await GetLoginTicket(username, password, tempHttpClient, sessionData).ConfigureAwait(false);
-
-                //Get tokenvar
-                return await GetToken(tempHttpClient, ticketId).ConfigureAwait(false);
-            }
-        }
-
-        private static string ExtracktTicketFromResponse(HttpResponseMessage loginResp)
-        {
-            var location = loginResp.Headers.Location;
-            if (location == null)
-                throw new LoginFailedException();
-
-            var ticketId = HttpUtility.ParseQueryString(location.Query)["ticket"];
-
-            if (ticketId == null)
-                throw new PtcOfflineException();
-
-            return ticketId;
-        }
-
-        private static IDictionary<string, string> GenerateLoginRequest(SessionData sessionData, string user, string pass)
-            => new Dictionary<string, string>
-            {
-                { "lt", sessionData.Lt },
-                { "execution", sessionData.Execution },
-                { "_eventId", "submit" },
-                { "username", user },
-                { "password", pass }
-            };
-
-        private static IDictionary<string, string> GenerateTokenVarRequest(string ticketId)
-            => new Dictionary<string, string>
-            {
-                {"client_id", "mobile-app_pokemon-go"},
-                {"redirect_uri", "https://www.nianticlabs.com/pokemongo/error"},
-                {"client_secret", "w8ScCUXJQc6kXKw8FiOhd8Fixzht18Dq3PEVkUCP5ZPxtgyWsbTvWHFLm2wNY0JR"},
-                {"grant_type", "refresh_token"},
-                {"code", ticketId}
-            };
-
-        private static async Task<string> GetLoginTicket(string username, string password, HttpClient tempHttpClient, SessionData sessionData)
-        {
-            HttpResponseMessage loginResp;
-            var loginRequest = GenerateLoginRequest(sessionData, username, password);
-            using (var formUrlEncodedContent = new FormUrlEncodedContent(loginRequest))
-            {
-                loginResp = await tempHttpClient.PostAsync(Resources.PtcLoginUrl, formUrlEncodedContent).ConfigureAwait(false);
-            }
-
-            var ticketId = ExtracktTicketFromResponse(loginResp);
-            return ticketId;
-        }
-
-        private static async Task<SessionData> GetSessionCookie(HttpClient tempHttpClient)
-        {
-            var sessionResp = await tempHttpClient.GetAsync(Resources.PtcLoginUrl).ConfigureAwait(false);
-            var data = await sessionResp.Content.ReadAsStringAsync().ConfigureAwait(false);
-            var sessionData = JsonConvert.DeserializeObject<SessionData>(data);
-            return sessionData;
-        }
-
-        private static async Task<string> GetToken(HttpClient tempHttpClient, string ticketId)
-        {
-            HttpResponseMessage tokenResp;
-            var tokenRequest = GenerateTokenVarRequest(ticketId);
-            using (var formUrlEncodedContent = new FormUrlEncodedContent(tokenRequest))
-            {
-                tokenResp = await tempHttpClient.PostAsync(Resources.PtcLoginOauth, formUrlEncodedContent).ConfigureAwait(false);
-            }
-
-            var tokenData = await tokenResp.Content.ReadAsStringAsync().ConfigureAwait(false);
-            return HttpUtility.ParseQueryString(tokenData)["access_token"];
-        }
-
-        private class SessionData
-        {
-            public string Lt { get; set; }
-            public string Execution { get; set; }
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
deleted file mode 100644
index 3dc6681..0000000
--- a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>PokemonGo.RocketAPI</RootNamespace>
-    <AssemblyName>Pokemon Go Rocket API</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="C5, Version=2.2.5073.27396, Culture=neutral, PublicKeyToken=282361b99ded7e8e, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\C5.2.2.5073.27396\lib\portable-net40+sl50+wp80+win\C5.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Google.Protobuf.3.0.0-beta3\lib\dotnet\Google.Protobuf.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\S2Geometry.1.0.3\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.VarintBitConverter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\VarintBitConverter.1.0.0.0\lib\Net40\System.VarintBitConverter.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System.Web" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Extensions\LatLongExtensions.cs" />
-    <Compile Include="ILatLong.cs" />
-    <Compile Include="Enums\AuthType.cs" />
-    <Compile Include="Enums\MiscEnums.cs" />
-    <Compile Include="Enums\RequestType.cs" />
-    <Compile Include="Exceptions\LoginFailedException.cs" />
-    <Compile Include="Exceptions\PtcOfflineException.cs" />
-    <Compile Include="Extensions\DateTimeExtensions.cs" />
-    <Compile Include="GeneratedCode\AllEnum.cs" />
-    <Compile Include="GeneratedCode\Payloads.cs" />
-    <Compile Include="GeneratedCode\Request.cs" />
-    <Compile Include="GeneratedCode\Response.cs" />
-    <Compile Include="Helpers\HttpClientHelper.cs" />
-    <Compile Include="Helpers\ProtoHelper.cs" />
-    <Compile Include="Helpers\RetryHandler.cs" />
-    <Compile Include="Helpers\S2Helper.cs" />
-    <Compile Include="Helpers\Utils.cs" />
-    <Compile Include="ISettings.cs" />
-    <Compile Include="Login\GoogleLogin.cs" />
-    <Compile Include="Login\ILoginType.cs" />
-    <Compile Include="Login\PtcLogin.cs" />
-    <None Include="app.config" />
-    <Compile Include="Client.cs" />
-    <Compile Include="Extensions\HttpClientExtensions.cs" />
-    <Compile Include="Helpers\RandomHelper.cs" />
-    <Compile Include="Helpers\RequestBuilder.cs" />
-    <Compile Include="ProtoAdditions.cs" />
-    <Compile Include="Resources.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="ClassDiagram1.cd" />
-    <None Include="packages.config" />
-    <None Include="Proto\AllEnum.proto" />
-    <None Include="Proto\Payloads.proto" />
-    <None Include="Proto\Response.proto" />
-    <None Include="Proto\Request.proto" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/AllEnum.proto b/PokemonGo/RocketAPI/Proto/AllEnum.proto
deleted file mode 100644
index 47799ed..0000000
--- a/PokemonGo/RocketAPI/Proto/AllEnum.proto
+++ /dev/null
@@ -1,766 +0,0 @@
-syntax = "proto3";
-
-package AllEnum;
-
-enum RpcDirection {
-  UNKNOWN = 0;
-  RESPONSE = 1;
-  REQUEST = 2;
-}
-
-enum TeamColor {
-  NEUTRAL = 0;
-  BLUE = 1;
-  RED = 2;
-  YELLOW = 3;
-}
-
-
-enum RequestMethod {
-  METHOD_UNSET = 0;
-  PLAYER_UPDATE = 1;
-  GET_PLAYER = 2;
-  GET_INVENTORY = 4;
-  DOWNLOAD_SETTINGS = 5;
-  DOWNLOAD_ITEM_TEMPLATES = 6;
-  DOWNLOAD_REMOTE_CONFIG_VERSION = 7;
-  FORT_SEARCH = 101;
-  ENCOUNTER = 102;
-  CATCH_POKEMON = 103;
-  FORT_DETAILS = 104;
-  ITEM_USE = 105;
-  GET_MAP_OBJECTS = 106;
-  FORT_DEPLOY_POKEMON = 110;
-  FORT_RECALL_POKEMON = 111;
-  RELEASE_POKEMON = 112;
-  USE_ITEM_POTION = 113;
-  USE_ITEM_CAPTURE = 114;
-  USE_ITEM_FLEE = 115;
-  USE_ITEM_REVIVE = 116;
-  TRADE_SEARCH = 117;
-  TRADE_OFFER = 118;
-  TRADE_RESPONSE = 119;
-  TRADE_RESULT = 120;
-  GET_PLAYER_PROFILE = 121;
-  GET_ITEM_PACK = 122;
-  BUY_ITEM_PACK = 123;
-  BUY_GEM_PACK = 124;
-  EVOLVE_POKEMON = 125;
-  GET_HATCHED_EGGS = 126;
-  ENCOUNTER_TUTORIAL_COMPLETE = 127;
-  LEVEL_UP_REWARDS = 128;
-  CHECK_AWARDED_BADGES = 129;
-  USE_ITEM_GYM = 133;
-  GET_GYM_DETAILS = 134;
-  START_GYM_BATTLE = 135;
-  ATTACK_GYM = 136;
-  RECYCLE_INVENTORY_ITEM = 137;
-  COLLECT_DAILY_BONUS = 138;
-  USE_ITEM_XP_BOOST = 139;
-  USE_ITEM_EGG_INCUBATOR = 140;
-  USE_INCENSE = 141;
-  GET_INCENSE_POKEMON = 142;
-  INCENSE_ENCOUNTER = 143;
-  ADD_FORT_MODIFIER = 144;
-  DISK_ENCOUNTER = 145;
-  COLLECT_DAILY_DEFENDER_BONUS = 146;
-  UPGRADE_POKEMON = 147;
-  SET_FAVORITE_POKEMON = 148;
-  NICKNAME_POKEMON = 149;
-  EQUIP_BADGE = 150;
-  SET_CONTACT_SETTINGS = 151;
-  GET_ASSET_DIGEST = 300;
-  GET_DOWNLOAD_URLS = 301;
-  GET_SUGGESTED_CODENAMES = 401;
-  CHECK_CODENAME_AVAILABLE = 402;
-  CLAIM_CODENAME = 403;
-  SET_AVATAR = 404;
-  SET_PLAYER_TEAM = 405;
-  MARK_TUTORIAL_COMPLETE = 406;
-  LOAD_SPAWN_POINTS = 500;
-  ECHO = 666;
-  DEBUG_UPDATE_INVENTORY = 700;
-  DEBUG_DELETE_PLAYER = 701;
-  SFIDA_REGISTRATION = 800;
-  SFIDA_ACTION_LOG = 801;
-  SFIDA_CERTIFICATION = 802;
-  SFIDA_UPDATE = 803;
-  SFIDA_ACTION = 804;
-  SFIDA_DOWSER = 805;
-  SFIDA_CAPTURE = 806;
-}
-
-enum PokemonMove {
-  MOVE_UNSET = 0;
-  THUNDER_SHOCK = 1;
-  QUICK_ATTACK = 2;
-  SCRATCH = 3;
-  EMBER = 4;
-  VINE_WHIP = 5;
-  TACKLE = 6;
-  RAZOR_LEAF = 7;
-  TAKE_DOWN = 8;
-  WATER_GUN = 9;
-  BITE = 10;
-  POUND = 11;
-  DOUBLE_SLAP = 12;
-  WRAP = 13;
-  HYPER_BEAM = 14;
-  LICK = 15;
-  DARK_PULSE = 16;
-  SMOG = 17;
-  SLUDGE = 18;
-  METAL_CLAW = 19;
-  VICE_GRIP = 20;
-  FLAME_WHEEL = 21;
-  MEGAHORN = 22;
-  WING_ATTACK = 23;
-  FLAMETHROWER = 24;
-  SUCKER_PUNCH = 25;
-  DIG = 26;
-  LOW_KICK = 27;
-  CROSS_CHOP = 28;
-  PSYCHO_CUT = 29;
-  PSYBEAM = 30;
-  EARTHQUAKE = 31;
-  STONE_EDGE = 32;
-  ICE_PUNCH = 33;
-  HEART_STAMP = 34;
-  DISCHARGE = 35;
-  FLASH_CANNON = 36;
-  PECK = 37;
-  DRILL_PECK = 38;
-  ICE_BEAM = 39;
-  BLIZZARD = 40;
-  AIR_SLASH = 41;
-  HEAT_WAVE = 42;
-  TWINEEDLE = 43;
-  POISON_JAB = 44;
-  AERIAL_ACE = 45;
-  DRILL_RUN = 46;
-  PETAL_BLIZZARD = 47;
-  MEGA_DRAIN = 48;
-  BUG_BUZZ = 49;
-  POISON_FANG = 50;
-  NIGHT_SLASH = 51;
-  SLASH = 52;
-  BUBBLE_BEAM = 53;
-  SUBMISSION = 54;
-  KARATE_CHOP = 55;
-  LOW_SWEEP = 56;
-  AQUA_JET = 57;
-  AQUA_TAIL = 58;
-  SEED_BOMB = 59;
-  PSYSHOCK = 60;
-  ROCK_THROW = 61;
-  ANCIENT_POWER = 62;
-  ROCK_TOMB = 63;
-  ROCK_SLIDE = 64;
-  POWER_GEM = 65;
-  SHADOW_SNEAK = 66;
-  SHADOW_PUNCH = 67;
-  SHADOW_CLAW = 68;
-  OMINOUS_WIND = 69;
-  SHADOW_BALL = 70;
-  BULLET_PUNCH = 71;
-  MAGNET_BOMB = 72;
-  STEEL_WING = 73;
-  IRON_HEAD = 74;
-  PARABOLIC_CHARGE = 75;
-  SPARK = 76;
-  THUNDER_PUNCH = 77;
-  THUNDER = 78;
-  THUNDERBOLT = 79;
-  TWISTER = 80;
-  DRAGON_BREATH = 81;
-  DRAGON_PULSE = 82;
-  DRAGON_CLAW = 83;
-  DISARMING_VOICE = 84;
-  DRAINING_KISS = 85;
-  DAZZLING_GLEAM = 86;
-  MOONBLAST = 87;
-  PLAY_ROUGH = 88;
-  CROSS_POISON = 89;
-  SLUDGE_BOMB = 90;
-  SLUDGE_WAVE = 91;
-  GUNK_SHOT = 92;
-  MUD_SHOT = 93;
-  BONE_CLUB = 94;
-  BULLDOZE = 95;
-  MUD_BOMB = 96;
-  FURY_CUTTER = 97;
-  BUG_BITE = 98;
-  SIGNAL_BEAM = 99;
-  X_SCISSOR = 100;
-  FLAME_CHARGE = 101;
-  FLAME_BURST = 102;
-  FIRE_BLAST = 103;
-  BRINE = 104;
-  WATER_PULSE = 105;
-  SCALD = 106;
-  HYDRO_PUMP = 107;
-  PSYCHIC = 108;
-  PSYSTRIKE = 109;
-  ICE_SHARD = 110;
-  ICY_WIND = 111;
-  FROST_BREATH = 112;
-  ABSORB = 113;
-  GIGA_DRAIN = 114;
-  FIRE_PUNCH = 115;
-  SOLAR_BEAM = 116;
-  LEAF_BLADE = 117;
-  POWER_WHIP = 118;
-  SPLASH = 119;
-  ACID = 120;
-  AIR_CUTTER = 121;
-  HURRICANE = 122;
-  BRICK_BREAK = 123;
-  CUT = 124;
-  SWIFT = 125;
-  HORN_ATTACK = 126;
-  STOMP = 127;
-  HEADBUTT = 128;
-  HYPER_FANG = 129;
-  SLAM = 130;
-  BODY_SLAM = 131;
-  REST = 132;
-  STRUGGLE = 133;
-  SCALD_BLASTOISE = 134;
-  HYDRO_PUMP_BLASTOISE = 135;
-  WRAP_GREEN = 136;
-  WRAP_PINK = 137;
-  FURY_CUTTER_FAST = 200;
-  BUG_BITE_FAST = 201;
-  BITE_FAST = 202;
-  SUCKER_PUNCH_FAST = 203;
-  DRAGON_BREATH_FAST = 204;
-  THUNDER_SHOCK_FAST = 205;
-  SPARK_FAST = 206;
-  LOW_KICK_FAST = 207;
-  KARATE_CHOP_FAST = 208;
-  EMBER_FAST = 209;
-  WING_ATTACK_FAST = 210;
-  PECK_FAST = 211;
-  LICK_FAST = 212;
-  SHADOW_CLAW_FAST = 213;
-  VINE_WHIP_FAST = 214;
-  RAZOR_LEAF_FAST = 215;
-  MUD_SHOT_FAST = 216;
-  ICE_SHARD_FAST = 217;
-  FROST_BREATH_FAST = 218;
-  QUICK_ATTACK_FAST = 219;
-  SCRATCH_FAST = 220;
-  TACKLE_FAST = 221;
-  POUND_FAST = 222;
-  CUT_FAST = 223;
-  POISON_JAB_FAST = 224;
-  ACID_FAST = 225;
-  PSYCHO_CUT_FAST = 226;
-  ROCK_THROW_FAST = 227;
-  METAL_CLAW_FAST = 228;
-  BULLET_PUNCH_FAST = 229;
-  WATER_GUN_FAST = 230;
-  SPLASH_FAST = 231;
-  WATER_GUN_FAST_BLASTOISE = 232;
-  MUD_SLAP_FAST = 233;
-  ZEN_HEADBUTT_FAST = 234;
-  CONFUSION_FAST = 235;
-  POISON_STING_FAST = 236;
-  BUBBLE_FAST = 237;
-  FEINT_ATTACK_FAST = 238;
-  STEEL_WING_FAST = 239;
-  FIRE_FANG_FAST = 240;
-  ROCK_SMASH_FAST = 241;
-}
-
-enum ItemId {
-  ITEM_UNKNOWN = 0;
-  ITEM_POKE_BALL = 1;
-  ITEM_GREAT_BALL = 2;
-  ITEM_ULTRA_BALL = 3;
-  ITEM_MASTER_BALL = 4;
-  ITEM_POTION = 101;
-  ITEM_SUPER_POTION = 102;
-  ITEM_HYPER_POTION = 103;
-  ITEM_MAX_POTION = 104;
-  ITEM_REVIVE = 201;
-  ITEM_MAX_REVIVE = 202;
-  ITEM_LUCKY_EGG = 301;
-  ITEM_INCENSE_ORDINARY = 401;
-  ITEM_INCENSE_SPICY = 402;
-  ITEM_INCENSE_COOL = 403;
-  ITEM_INCENSE_FLORAL = 404;
-  ITEM_TROY_DISK = 501;
-  ITEM_X_ATTACK = 602;
-  ITEM_X_DEFENSE = 603;
-  ITEM_X_MIRACLE = 604;
-  ITEM_RAZZ_BERRY = 701;
-  ITEM_BLUK_BERRY = 702;
-  ITEM_NANAB_BERRY = 703;
-  ITEM_WEPAR_BERRY = 704;
-  ITEM_PINAP_BERRY = 705;
-  ITEM_SPECIAL_CAMERA = 801;
-  ITEM_INCUBATOR_BASIC_UNLIMITED = 901;
-  ITEM_INCUBATOR_BASIC = 902;
-  ITEM_POKEMON_STORAGE_UPGRADE = 1001;
-  ITEM_ITEM_STORAGE_UPGRADE = 1002;
-}
-
-enum InventoryUpgradeType {
-  UPGRADE_UNSET = 0;
-  INCREASE_ITEM_STORAGE = 1;
-  INCREASE_POKEMON_STORAGE = 2;
-}
-
-enum EggIncubatorType {
-  INCUBATOR_UNSET = 0;
-  INCUBATOR_DISTANCE = 1;
-}
-
-enum PokemonFamilyId {
-  FAMILY_UNSET = 0;
-  FAMILY_BULBASAUR = 1;
-  FAMILY_CHARMANDER = 4;
-  FAMILY_SQUIRTLE = 7;
-  FAMILY_CATERPIE = 10;
-  FAMILY_WEEDLE = 13;
-  FAMILY_PIDGEY = 16;
-  FAMILY_RATTATA = 19;
-  FAMILY_SPEAROW = 21;
-  FAMILY_EKANS = 23;
-  FAMILY_PIKACHU = 25;
-  FAMILY_SANDSHREW = 27;
-  FAMILY_NIDORAN = 29;
-  FAMILY_NIDORAN2 = 32;
-  FAMILY_CLEFAIRY = 35;
-  FAMILY_VULPIX = 37;
-  FAMILY_JIGGLYPUFF = 39;
-  FAMILY_ZUBAT = 41;
-  FAMILY_ODDISH = 43;
-  FAMILY_PARAS = 46;
-  FAMILY_VENONAT = 48;
-  FAMILY_DIGLETT = 50;
-  FAMILY_MEOWTH = 52;
-  FAMILY_PSYDUCK = 54;
-  FAMILY_MANKEY = 56;
-  FAMILY_GROWLITHE = 58;
-  FAMILY_POLIWAG = 60;
-  FAMILY_ABRA = 63;
-  FAMILY_MACHOP = 66;
-  FAMILY_BELLSPROUT = 69;
-  FAMILY_TENTACOOL = 72;
-  FAMILY_GEODUDE = 74;
-  FAMILY_PONYTA = 77;
-  FAMILY_SLOWPOKE = 79;
-  FAMILY_MAGNEMITE = 81;
-  FAMILY_FARFETCHD = 83;
-  FAMILY_DODUO = 84;
-  FAMILY_SEEL = 86;
-  FAMILY_GRIMER = 88;
-  FAMILY_SHELLDER = 90;
-  FAMILY_GASTLY = 92;
-  FAMILY_ONIX = 95;
-  FAMILY_DROWZEE = 96;
-  FAMILY_KRABBY = 98;
-  FAMILY_VOLTORB = 100;
-  FAMILY_EXEGGCUTE = 102;
-  FAMILY_CUBONE = 104;
-  FAMILY_HITMONLEE = 106;
-  FAMILY_HITMONCHAN = 107;
-  FAMILY_LICKITUNG = 108;
-  FAMILY_KOFFING = 109;
-  FAMILY_RHYHORN = 111;
-  FAMILY_CHANSEY = 113;
-  FAMILY_TANGELA = 114;
-  FAMILY_KANGASKHAN = 115;
-  FAMILY_HORSEA = 116;
-  FAMILY_GOLDEEN = 118;
-  FAMILY_STARYU = 120;
-  FAMILY_MR_MIME = 122;
-  FAMILY_SCYTHER = 123;
-  FAMILY_JYNX = 124;
-  FAMILY_ELECTABUZZ = 125;
-  FAMILY_MAGMAR = 126;
-  FAMILY_PINSIR = 127;
-  FAMILY_TAUROS = 128;
-  FAMILY_MAGIKARP = 129;
-  FAMILY_LAPRAS = 131;
-  FAMILY_DITTO = 132;
-  FAMILY_EEVEE = 133;
-  FAMILY_PORYGON = 137;
-  FAMILY_OMANYTE = 138;
-  FAMILY_KABUTO = 140;
-  FAMILY_AERODACTYL = 142;
-  FAMILY_SNORLAX = 143;
-  FAMILY_ARTICUNO = 144;
-  FAMILY_ZAPDOS = 145;
-  FAMILY_MOLTRES = 146;
-  FAMILY_DRATINI = 147;
-  FAMILY_MEWTWO = 150;
-  FAMILY_MEW = 151;
-}
-
-enum MapObjectsStatus {
-  UNSET_STATUS = 0;
-  SUCCESS = 1;
-  LOCATION_UNSET = 2;
-}
-
-enum FortType {
-  GYM = 0;
-  CHECKPOINT = 1;
-}
-
-enum PokemonId {
-  MISSINGNO = 0;
-  BULBASAUR = 1;
-  IVYSAUR = 2;
-  VENUSAUR = 3;
-  CHARMANDER = 4;
-  CHARMELEON = 5;
-  CHARIZARD = 6;
-  SQUIRTLE = 7;
-  WARTORTLE = 8;
-  BLASTOISE = 9;
-  CATERPIE = 10;
-  METAPOD = 11;
-  BUTTERFREE = 12;
-  WEEDLE = 13;
-  KAKUNA = 14;
-  BEEDRILL = 15;
-  PIDGEY = 16;
-  PIDGEOTTO = 17;
-  PIDGEOT = 18;
-  RATTATA = 19;
-  RATICATE = 20;
-  SPEAROW = 21;
-  FEAROW = 22;
-  EKANS = 23;
-  ARBOK = 24;
-  PIKACHU = 25;
-  RAICHU = 26;
-  SANDSHREW = 27;
-  SANDLASH = 28;
-  NIDORAN_FEMALE = 29;
-  NIDORINA = 30;
-  NIDOQUEEN = 31;
-  NIDORAN_MALE = 32;
-  NIDORINO = 33;
-  NIDOKING = 34;
-  CLEFAIRY  = 35;
-  CLEFABLE = 36;
-  VULPIX = 37;
-  NINETALES = 38;
-  JIGGLYPUFF = 39;
-  WIGGLYTUFF = 40;
-  ZUBAT = 41;
-  GOLBAT = 42;
-  ODDISH = 43;
-  GLOOM = 44;
-  VILEPLUME = 45;
-  PARAS = 46;
-  PARASECT = 47;
-  VENONAT = 48;
-  VENOMOTH = 49;
-  DIGLETT = 50;
-  DUGTRIO = 51;
-  MEOWTH = 52;
-  PERSIAN = 53;
-  PSYDUCK = 54;
-  GOLDUCK = 55;
-  MANKEY = 56;
-  PRIMEAPE = 57;
-  GROWLITHE = 58;
-  ARCANINE = 59;
-  POLIWAG = 60;
-  POLIWHIRL = 61;
-  POLIWRATH = 62;
-  ABRA = 63;
-  KADABRA = 64;
-  ALAKHAZAM = 65;
-  MACHOP = 66;
-  MACHOKE = 67;
-  MACHAMP = 68;
-  BELLSPROUT = 69;
-  WEEPINBELL = 70;
-  VICTREEBELL = 71;
-  TENTACOOL = 72;
-  TENTACRUEL = 73;
-  GEODUGE = 74;
-  GRAVELER = 75;
-  GOLEM = 76;
-  PONYTA = 77;
-  RAPIDASH = 78;
-  SLOWPOKE = 79;
-  SLOWBRO = 80;
-  MAGNEMITE = 81;
-  MAGNETON = 82;
-  FARFETCHD = 83;
-  DODUO = 84;
-  DODRIO = 85;
-  SEEL = 86;
-  DEWGONG = 87;
-  GRIMER = 88;
-  MUK = 89;
-  SHELLDER = 90;
-  CLOYSTER = 91;
-  GASTLY = 92;
-  HAUNTER = 93;
-  GENGAR = 94;
-  ONIX = 95;
-  DROWZEE = 96;
-  HYPNO = 97;
-  KRABBY = 98;
-  KINGLER = 99;
-  VOLTORB = 100;
-  ELECTRODE = 101;
-  EXEGGCUTE = 102;
-  EXEGGUTOR = 103;
-  CUBONE = 104;
-  MAROWAK = 105;
-  HITMONLEE = 106;
-  HITMONCHAN = 107;
-  LICKITUNG = 108;
-  KOFFING = 109;
-  WEEZING = 110;
-  RHYHORN = 111;
-  RHYDON = 112;
-  CHANSEY = 113;
-  TANGELA = 114;
-  KANGASKHAN = 115;
-  HORSEA = 116;
-  SEADRA = 117;
-  GOLDEEN = 118;
-  SEAKING = 119;
-  STARYU = 120;
-  STARMIE = 121;
-  MR_MIME = 122;
-  SCYTHER = 123;
-  JYNX = 124;
-  ELECTABUZZ = 125;
-  MAGMAR = 126;
-  PINSIR = 127;
-  TAUROS = 128;
-  MAGIKARP = 129;
-  GYARADOS = 130;
-  LAPRAS = 131;
-  DITTO = 132;
-  EEVEE = 133;
-  VAPOREON = 134;
-  JOLTEON = 135;
-  FLAREON = 136;
-  PORYGON = 137;
-  OMANYTE = 138;
-  OMASTAR = 139;
-  KABUTO = 140;
-  KABUTOPS = 141;
-  AERODACTYL = 142;
-  SNORLAX = 143;
-  ARTICUNO = 144;
-  ZAPDOS = 145;
-  MOLTRES = 146;
-  DRATINI = 147;
-  DRAGONAIR = 148;
-  DRAGONITE = 149;
-  MEWTWO = 150;
-  MEW = 151;
-}
-
-enum FortSponsor {
-  UNSET_SPONSOR = 0;
-  MCDONALDS = 1;
-  POKEMON_STORE = 2;
-}
-
-enum FortRenderingType {
-  DEFAULT = 0;
-  INTERNAL_TEST = 1;
-}
-
-enum ItemType {
-        ITEM_TYPE_NONE = 0;
-        ITEM_TYPE_POKEBALL = 1;
-        ITEM_TYPE_POTION = 2;
-        ITEM_TYPE_REVIVE = 3;
-        ITEM_TYPE_MAP = 4;
-        ITEM_TYPE_BATTLE = 5;
-        ITEM_TYPE_FOOD = 6;
-        ITEM_TYPE_CAMERA = 7;
-        ITEM_TYPE_DISK = 8;
-        ITEM_TYPE_INCUBATOR = 9;
-        ITEM_TYPE_INCENSE = 10;
-        ITEM_TYPE_XP_BOOST = 11;
-        ITEM_TYPE_INVENTORY_UPGRADE = 12;
-}
-
-enum ItemCategory {
-  ITEM_CATEGORY_NONE = 0;
-  ITEM_CATEGORY_POKEBALL = 1;
-  ITEM_CATEGORY_FOOD = 2;
-  ITEM_CATEGORY_MEDICINE = 3;
-  ITEM_CATEGORY_BOOST = 4;
-  ITEM_CATEGORY_UTILITES = 5;
-  ITEM_CATEGORY_CAMERA = 6;
-  ITEM_CATEGORY_DISK = 7;
-  ITEM_CATEGORY_INCUBATOR = 8;
-  ITEM_CATEGORY_INCENSE = 9;
-  ITEM_CATEGORY_XP_BOOST = 10;
-  ITEM_CATEGORY_INVENTORY_UPGRADE = 11;
-}
-
-enum ItemEffect {
-        ITEM_EFFECT_NONE = 0;
-        ITEM_EFFECT_CAP_NO_FLEE = 1000;
-        ITEM_EFFECT_CAP_NO_MOVEMENT = 1002;
-        ITEM_EFFECT_CAP_NO_THREAT = 1003;
-        ITEM_EFFECT_CAP_TARGET_MAX = 1004;
-        ITEM_EFFECT_CAP_TARGET_SLOW = 1005;
-        ITEM_EFFECT_CAP_CHANCE_NIGHT = 1006;
-        ITEM_EFFECT_CAP_CHANCE_TRAINER = 1007;
-        ITEM_EFFECT_CAP_CHANCE_FIRST_THROW = 1008;
-        ITEM_EFFECT_CAP_CHANCE_LEGEND = 1009;
-        ITEM_EFFECT_CAP_CHANCE_HEAVY = 1010;
-        ITEM_EFFECT_CAP_CHANCE_REPEAT = 1011;
-        ITEM_EFFECT_CAP_CHANCE_MULTI_THROW = 1012;
-        ITEM_EFFECT_CAP_CHANCE_ALWAYS = 1013;
-        ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW = 1014;
-}
-
-enum ActivityType {
-  ACTIVITY_UNKNOWN = 0;
-  ACTIVITY_CATCH_POKEMON = 1;
-  ACTIVITY_CATCH_LEGEND_POKEMON = 2;
-  ACTIVITY_FLEE_POKEMON = 3;
-  ACTIVITY_DEFEAT_FORT = 4;
-  ACTIVITY_EVOLVE_POKEMON = 5;
-  ACTIVITY_HATCH_EGG = 6;
-  ACTIVITY_WALK_KM = 7;
-  ACTIVITY_POKEDEX_ENTRY_NEW = 8;
-  ACTIVITY_CATCH_FIRST_THROW = 9;
-  ACTIVITY_CATCH_NICE_THROW = 10;
-  ACTIVITY_CATCH_GREAT_THROW = 11;
-  ACTIVITY_CATCH_EXCELLENT_THROW = 12;
-  ACTIVITY_CATCH_CURVEBALL = 13;
-  ACTIVITY_CATCH_FIRST_CATCH_OF_DAY = 14;
-  ACTIVITY_CATCH_MILESTONE = 15;
-  ACTIVITY_TRAIN_POKEMON = 16;
-  ACTIVITY_SEARCH_FORT = 17;
-  ACTIVITY_RELEASE_POKEMON = 18;
-  ACTIVITY_HATCH_EGG_SMALL_BONUS = 19;
-  ACTIVITY_HATCH_EGG_MEDIUM_BONUS = 20;
-  ACTIVITY_HATCH_EGG_LARGE_BONUS = 21;
-  ACTIVITY_DEFEAT_GYM_DEFENDER = 22;
-  ACTIVITY_DEFEAT_GYM_LEADER = 23;
-}
-
-enum BadgeType {
-  BADGE_UNSET = 0;
-  BADGE_TRAVEL_KM = 1;
-  BADGE_POKEDEX_ENTRIES = 2;
-  BADGE_CAPTURE_TOTAL = 3;
-  BADGE_DEFEATED_FORT = 4;
-  BADGE_EVOLVED_TOTAL = 5;
-  BADGE_HATCHED_TOTAL = 6;
-  BADGE_ENCOUNTERED_TOTAL = 7;
-  BADGE_POKESTOPS_VISITED = 8;
-  BADGE_UNIQUE_POKESTOPS = 9;
-  BADGE_POKEBALL_THROWN = 10;
-  BADGE_BIG_MAGIKARP = 11;
-  BADGE_DEPLOYED_TOTAL = 12;
-  BADGE_BATTLE_ATTACK_WON = 13;
-  BADGE_BATTLE_TRAINING_WON = 14;
-  BADGE_BATTLE_DEFEND_WON = 15;
-  BADGE_PRESTIGE_RAISED = 16;
-  BADGE_PRESTIGE_DROPPED = 17;
-  BADGE_TYPE_NORMAL = 18;
-  BADGE_TYPE_FIGHTING = 19;
-  BADGE_TYPE_FLYING = 20;
-  BADGE_TYPE_POISON = 21;
-  BADGE_TYPE_GROUND = 22;
-  BADGE_TYPE_ROCK = 23;
-  BADGE_TYPE_BUG = 24;
-  BADGE_TYPE_GHOST = 25;
-  BADGE_TYPE_STEEL = 26;
-  BADGE_TYPE_FIRE = 27;
-  BADGE_TYPE_WATER = 28;
-  BADGE_TYPE_GRASS = 29;
-  BADGE_TYPE_ELECTRIC = 30;
-  BADGE_TYPE_PSYCHIC = 31;
-  BADGE_TYPE_ICE = 32;
-  BADGE_TYPE_DRAGON = 33;
-  BADGE_TYPE_DARK = 34;
-  BADGE_TYPE_FAIRY = 35;
-  BADGE_SMALL_RATTATA = 36;
-  BADGE_PIKACHU = 37;
-}
-
-enum HoloIapItemCategory {
-        IAP_CATEGORY_NONE = 0;
-        IAP_CATEGORY_BUNDLE = 1;
-        IAP_CATEGORY_ITEMS = 2;
-        IAP_CATEGORY_UPGRADES = 3;
-        IAP_CATEGORY_POKECOINS = 4;
-}
-
-enum CameraInterpolation {
-        CAM_INTERP_CUT = 0;
-        CAM_INTERP_LINEAR = 1;
-        CAM_INTERP_SMOOTH = 2;
-        CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE = 3;
-        CAM_INTERP_DEPENDS = 4;
-}
-
-enum CameraTarget {
-        CAM_TARGET_ATTACKER = 0;
-        CAM_TARGET_ATTACKER_EDGE = 1;
-        CAM_TARGET_ATTACKER_GROUND = 2;
-        CAM_TARGET_DEFENDER = 3;
-        CAM_TARGET_DEFENDER_EDGE = 4;
-        CAM_TARGET_DEFENDER_GROUND = 5;
-        CAM_TARGET_ATTACKER_DEFENDER = 6;
-        CAM_TARGET_ATTACKER_DEFENDER_EDGE = 7;
-        CAM_TARGET_DEFENDER_ATTACKER = 8;
-        CAM_TARGET_DEFENDER_ATTACKER_EDGE = 9;
-        CAM_TARGET_ATTACKER_DEFENDER_MIRROR = 11;
-        CAM_TARGET_SHOULDER_ATTACKER_DEFENDER = 12;
-        CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR = 13;
-        CAM_TARGET_ATTACKER_DEFENDER_WORLD = 14;
-}
-
-enum PokemonType {
-  POKEMON_TYPE_NONE = 0;
-  POKEMON_TYPE_NORMAL = 1;
-  POKEMON_TYPE_FIGHTING = 2;
-  POKEMON_TYPE_FLYING = 3;
-  POKEMON_TYPE_POISON = 4;
-  POKEMON_TYPE_GROUND = 5;
-  POKEMON_TYPE_ROCK = 6;
-  POKEMON_TYPE_BUG = 7;
-  POKEMON_TYPE_GHOST = 8;
-  POKEMON_TYPE_STEEL = 9;
-  POKEMON_TYPE_FIRE = 10;
-  POKEMON_TYPE_WATER = 11;
-  POKEMON_TYPE_GRASS = 12;
-  POKEMON_TYPE_ELECTRIC = 13;
-  POKEMON_TYPE_PSYCHIC = 14;
-  POKEMON_TYPE_ICE = 15;
-  POKEMON_TYPE_DRAGON = 16;
-  POKEMON_TYPE_DARK = 17;
-  POKEMON_TYPE_FAIRY = 18;
-}
-
-enum PokemonMovementType {
-  MOVEMENT_STATIC = 0;
-  MOVEMENT_JUMP = 1;
-  MOVEMENT_VERTICAL = 2;
-  MOVEMENT_PSYCHIC = 3;
-  MOVEMENT_ELECTRIC = 4;
-  MOVEMENT_FLYING = 5;
-  MOVEMENT_HOVERING = 6;
-}
-
-enum PokemonClass {
-  NORMAL = 0;
-  LEGENDARY = 1;
-  MYTHIC = 2;
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/Payloads.proto b/PokemonGo/RocketAPI/Proto/Payloads.proto
deleted file mode 100644
index 3b71b5b..0000000
--- a/PokemonGo/RocketAPI/Proto/Payloads.proto
+++ /dev/null
@@ -1,909 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-import "AllEnum.proto";
-
-message GetPlayerResponse {
-    int32 unknown1 = 1;
-    Profile profile = 2;
-}
-
-message Profile {
-  int64 creation_time = 1;
-  string username = 2;
-  AllEnum.TeamColor team = 5;
-  bytes tutorial = 7;
-  AvatarDetails avatar = 8;
-  int32 poke_storage = 9;
-  int32 item_storage = 10;
-  DailyBonus daily_bonus = 11;
-  bytes unknown12 = 12;
-  bytes unknown13 = 13;
-  repeated Currency currency = 14;
-}
-
-message DailyBonus {
-  int64 NextCollectTimestampMs = 1;
-  int64 NextDefenderBonusCollectTimestampMs = 2;
-}
-
-message Currency {
-  string type = 1;
-  int32 amount = 2;
-}
-
-message AvatarDetails {
-  int32 unknown2 = 2;
-  int32 unknown3 = 3;
-  int32 unknown9 = 9;
-  int32 unknown10 = 10;
-}
-
-message DownloadSettingsRequest {
-  string hash = 1;
-}
-
-message GetInventoryResponse {
-  bool success = 1;
-  InventoryDelta inventory_delta = 2;
-}
-
-message InventoryDelta {
-  int64 original_timestamp_ms = 1;
-  int64 new_timestamp_ms = 2;
-  repeated InventoryItem inventory_items = 3;
-}
-
-message InventoryItem {
-  int64 modified_timestamp_ms = 1;
-  int64 deleted_item_key = 2;
-  InventoryItemData inventory_item_data = 3;
-}
-
-message InventoryItemData {
-  PokemonData pokemon = 1;
-  Item item = 2;
-  PokedexEntry pokedex_entry = 3;
-  PlayerStats player_stats = 4;
-  PlayerCurrency player_currency = 5;
-  PlayerCamera player_camera = 6;
-  InventoryUpgrades inventory_upgrades = 7;
-  AppliedItems applied_items = 8;
-  EggIncubators egg_incubators = 9;
-  PokemonFamily pokemon_family = 10;
-}
-
-message Pokemon {
-  int32 id = 1;
-  AllEnum.PokemonId pokemon_type = 2;
-  int32 cp = 3;
-  int32 stamina = 4;
-  int32 stamina_max = 5;
-  AllEnum.PokemonMove move_1 = 6;
-  AllEnum.PokemonMove move_2 = 7;
-  int32 deployed_fort_id = 8;
-  string owner_name = 9;
-  bool is_egg = 10;
-  int32 egg_km_walked_target = 11;
-  int32 egg_km_walked_start = 12;
-  int32 origin = 14;
-  float height_m = 15;
-  float weight_kg = 16;
-  int32 individual_attack = 17;
-  int32 individual_defense = 18;
-  int32 individual_stamina = 19;
-  int32 cp_multiplier = 20;
-  int32 pokeball = 21;
-  uint64 captured_cell_id = 22;
-  int32 battles_attacked = 23;
-  int32 battles_defended = 24;
-  int32 egg_incubator_id = 25;
-  uint64 creation_time_ms = 26;
-  int32 num_upgrades = 27;
-  int32 additional_cp_multiplier = 28;
-  int32 favorite = 29;
-  string nickname = 30;
-  int32 from_fort = 31;
-}
-
-message Item {
-  AllEnum.ItemType item = 1;
-  int32 count = 2;
-  bool unseen = 3;
-}
-
-message PokedexEntry {
-  int32 pokedex_entry_number = 1;
-  int32 times_encountered = 2;
-  int32 times_captured = 3;
-  int32 evolution_stone_pieces = 4;
-  int32 evolution_stones = 5;
-}
-
-message PlayerStats {
-  int32 level = 1;
-  int64 experience = 2;
-  int64 prev_level_xp = 3;
-  int64 next_level_xp = 4;
-  float km_walked = 5;
-  int32 pokemons_encountered = 6;
-  int32 unique_pokedex_entries = 7;
-  int32 pokemons_captured = 8;
-  int32 evolutions = 9;
-  int32 poke_stop_visits = 10;
-  int32 pokeballs_thrown = 11;
-  int32 eggs_hatched = 12;
-  int32 big_magikarp_caught = 13;
-  int32 battle_attack_won = 14;
-  int32 battle_attack_total = 15;
-  int32 battle_defended_won = 16;
-  int32 battle_training_won = 17;
-  int32 battle_training_total = 18;
-  int32 prestige_raised_total = 19;
-  int32 prestige_dropped_total = 20;
-  int32 pokemon_deployed = 21;
-  bytes pokemon_caught_by_type = 22; // TODO: repeated PokemonType ??
-  int32 small_rattata_caught = 23;
-}
-
-message PlayerCurrency {
-  int32 gems = 1;
-}
-
-message PlayerCamera {
-  bool is_default_camera = 1;
-}
-
-message InventoryUpgrades {
-  repeated InventoryUpgrade inventory_upgrades = 1;
-}
-
-message InventoryUpgrade {
-  AllEnum.ItemType item = 1;
-  AllEnum.InventoryUpgradeType upgrade_type = 2;
-  int32 additional_storage = 3;
-}
-
-message AppliedItems {
-  AppliedItem item = 4;
-}
-
-message AppliedItem {
-  AllEnum.ItemId item_type = 1;
-  AllEnum.ItemType item_type_category = 2;
-  int64 expire_ms = 3;
-  int64 applied_ms = 4;
-}
-
-message EggIncubators {
-  EggIncubator egg_incubator = 1;
-}
-
-message EggIncubator {
-  string item_id = 1;
-  AllEnum.ItemType item_type = 2;
-  AllEnum.EggIncubatorType incubator_type = 3;
-  int32 uses_remaining = 4;
-  int64 pokemon_id = 5; // TODO: Check if is PokemonType
-  double start_km_walked = 6;
-  double target_km_walked = 7;
-}
-
-message PokemonFamily {
-  AllEnum.PokemonFamilyId family_id = 1;
-  int32 candy = 2;
-}
-
-message GetMapObjectsRequest {
-  bytes cell_id = 1;
-  bytes since_timestamp_ms = 2;
-  double latitude = 3;
-  double longitude = 4;
-}
-
-message GetMapObjectsResponse {
-  repeated MapCell map_cells = 1;
-  AllEnum.MapObjectsStatus status = 2;
-}
-
-message MapCell {
-  // S2 geographic area that the cell covers (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/)
-  uint64 s2_cell_id = 1;
-  int64 current_timestamp_ms = 2;
-  repeated FortData forts = 3;
-  repeated SpawnPoint spawn_points = 4;
-  repeated string deleted_objects = 6;
-  bool is_truncated_list = 7;
-  repeated FortSummary fort_summaries = 8;
-  repeated SpawnPoint decimated_spawn_points = 9;
-
-  // Pokemon within 2 steps or less.
-  repeated WildPokemon wild_pokemons = 5;
-  // Pokemon within 1 step or none.
-  repeated MapPokemon catchable_pokemons = 10;
-  // Pokemon farther away than 2 steps, but still in the area.
-  repeated NearbyPokemon nearby_pokemons = 11;
-}
-
-message FortData {
-  string id = 1;
-  int64 last_modified_timestamp_ms = 2;
-  double latitude = 3;
-  double longitude = 4;
-  bool enabled = 8;
-  AllEnum.FortType type = 9;
-
-  //// Fields related to gyms only
-
-  // Team that owns the gym
-  AllEnum.TeamColor owned_by_team = 5;
-
-  // Highest CP Pokemon at the gym
-  AllEnum.PokemonId guard_pokemon_id = 6;
-  int32 guard_pokemon_cp = 7;
-
-  // Prestigate / experience of the gym
-  int64 gym_points = 10;
-
-  // Whether someone is battling at the gym currently
-  bool is_in_battle = 11;
-
-  //// Fields related to pokestops only
-
-  // Timestamp when the pokestop can be activated again to get items / xp
-  int64 cooldown_complete_timestamp_ms = 14;
-
-  AllEnum.FortSponsor sponsor = 15;
-  AllEnum.FortRenderingType rendering_type = 16;
-
-  // Might represent the type of item applied to the pokestop, right now only lures can be applied
-  bytes active_fort_modifier = 12;
-  FortLureInfo lure_info = 13;
-}
-
-message FortLureInfo {
-  string fort_id = 1;
-  double unknown2 = 2;
-  AllEnum.PokemonId active_pokemon_id = 3;
-  int64 lure_expires_timestamp_ms = 4;
-}
-
-message SpawnPoint {
-  double latitude = 2;
-  double longitude = 3;
-}
-
-message FortSummary {
-  int32 fort_summary_id = 1;
-  int32 last_modified_timestamp_ms = 2;
-  int32 latitude = 3;
-  int32 longitude = 4;
-}
-
-message WildPokemon {
-  fixed64 encounter_id = 1;
-  int64 last_modified_timestamp_ms = 2;
-  double latitude = 3;
-  double longitude = 4;
-  string spawnpoint_id = 5;
-  PokemonData pokemon_data = 7;
-  int32 time_till_hidden_ms = 11;
-}
-
-message PokemonData {
-  fixed64 id = 1;
-  AllEnum.PokemonId pokemon_id = 2;
-  int32 cp = 3;
-  int32 stamina = 4;
-  int32 stamina_max = 5;
-  AllEnum.PokemonMove move_1 = 6;
-  AllEnum.PokemonMove move_2 = 7;
-  int32 deployed_fort_id = 8;
-  string owner_name = 9;
-  bool is_egg = 10;
-  int32 egg_km_walked_target = 11;
-  int32 egg_km_walked_start = 12;
-  int32 origin = 14;
-  float height_m = 15;
-  float weight_kg = 16;
-  int32 individual_attack = 17;
-  int32 individual_defense = 18;
-  int32 individual_stamina = 19;
-  int32 cp_multiplier = 20;
-  int32 pokeball = 21;
-  uint64 captured_cell_id = 22;
-  int32 battles_attacked = 23;
-  int32 battles_defended = 24;
-  int32 egg_incubator_id = 25;
-  uint64 creation_time_ms = 26;
-  int32 num_upgrades = 27;
-  int32 additional_cp_multiplier = 28;
-  int32 favorite = 29;
-  string nickname = 30;
-  int32 from_fort = 31;
-}
-
-message MapPokemon {
-  string spawnpoint_id = 1;
-  fixed64 encounter_id = 2;
-  AllEnum.PokemonId pokemon_id = 3;
-  // After this timestamp, the pokemon will be gone.
-  int64 expiration_timestamp_ms = 4;
-  double latitude = 5;
-  double longitude = 6;
-}
-
-message NearbyPokemon {
-  AllEnum.PokemonId pokemon_id = 1;
-  float distance_in_meters = 2;
-  fixed64 encounter_id = 3;
-}
-
-message DownloadSettingsResponse {
-  string error = 1;
-  string hash = 2;
-  GlobalSettings settings = 3;
-}
-
-message GlobalSettings {
-  FortSettings fort_settings = 2;
-  MapSettings map_settings = 3;
-  LevelSettings level_settings = 4;
-  InventorySettings inventory_settings = 5;
-  string minimum_client_version = 6;
-}
-
-message FortSettings {
-  double interaction_range_meters = 1;
-  int32 max_total_deployed_pokemon = 2;
-  int32 max_player_deployed_pokemon = 3;
-  double deploy_stamina_multiplier = 4;
-  double deploy_attack_multiplier = 5;
-  double far_interaction_range_meters = 6;
-}
-
-message MapSettings {
-  double pokemon_visible_range = 1;
-  double poke_nav_range_meters = 2;
-  double encounter_range_meters = 3;
-  float get_map_objects_min_refresh_seconds = 4;
-  float get_map_objects_max_refresh_seconds = 5;
-  float get_map_objects_min_distance_meters = 6;
-  string google_maps_api_key = 7;
-}
-
-message LevelSettings {
-  double trainer_cp_modifier = 2;
-  double trainer_difficulty_modifier = 3;
-}
-
-message InventorySettings {
-  int32 max_pokemon = 1;
-  int32 max_bag_items = 2;
-  int32 base_pokemon = 3;
-  int32 base_bag_items = 4;
-  int32 base_eggs = 5;
-}
-
-message PlayerUpdateRequest {
-  double latitude = 1;
-  double longitude = 2;
-}
-
-message PlayerUpdateResponse {
-  repeated WildPokemon wild_pokemons = 1;
-  repeated FortData forts = 2;
-  int32 forts_nearby = 3;
-}
-
-message DownloadItemTemplatesRequest {
-	// No message needed.
-}
-
-message DownloadItemTemplatesResponse {
-  bool success = 1;
-  repeated ItemTemplate item_templates = 2;
-  uint64 timestamp_ms = 3;
-
-  message ItemTemplate {
-    string template_id = 1;
-
-    PokemonSettings pokemon_settings = 2;
-    ItemSettings item_settings = 3;
-    MoveSettings move_settings = 4;
-    MoveSequenceSettings move_sequence_settings = 5;
-    TypeEffectiveSettings type_effective = 8;
-    BadgeSettings badge_settings = 10;
-    CameraSettings camera = 11;
-    PlayerLevelSettings player_level = 12;
-    GymLevelSettings gym_level = 13;
-    GymBattleSettings battle_settings = 14;
-    EncounterSettings encounter_settings = 15;
-    IapItemDisplay iap_item_display = 16;
-    IapSettings iap_settings = 17;
-    PokemonUpgradeSettings pokemon_upgrades = 18;
-    EquippedBadgeSettings equipped_badges = 19;
-  }
-}
-
-message UseItemCaptureRequest {
-  AllEnum.ItemId item_id = 1;
-  fixed64 encounter_id = 2;
-  string spawn_point_guid = 3;
-}
-
-message UseItemCaptureResponse {
-  bool success = 1;
-  double item_capture_mult = 2;
-  double item_flee_mult = 3;
-  bool stop_movement = 4;
-  bool stop_attack = 5;
-  bool target_max = 6;
-  bool target_slow = 7;
-}
-
-message ReleasePokemonRequest {
-  fixed64 pokemon_id = 1;
-}
-
-message ReleasePokemonResponse {
-  Result result = 1;
-  int32 candy_awarded = 2;
-
-  enum Result {
-    UNSET = 0;
-    SUCCESS = 1;
-    POKEMON_DEPLOYED = 2;
-    FAILED = 3;
-    ERROR_POKEMON_IS_EGG = 4;
-  }
-}
-
-message GetHatchedEggsRequest {
-  // No message needed.
-}
-
-// Confirm if this is correct, I think that it should be "repeated HatchedEgg hatched_eggs" or something like that.
-message GetHatchedEggsResponse {
-  bool success = 1;
-  repeated uint64 pokemon_id = 2 [packed=true]; // Might be POGOProtos.Enums.Pokemon
-  repeated int32 experience_awarded = 3;
-  repeated int32 candy_awarded = 4;
-  repeated int32 stardust_awarded = 5;
-}
-
-message FortSearchRequest {
-  string fort_id = 1;
-  double player_latitude = 2;
-  double player_longitude = 3;
-  double fort_latitude = 4;
-  double fort_longitude = 5;
-}
-
-message FortSearchResponse {
-  Result result = 1;
-  repeated ItemAward items_awarded = 2;
-  int32 gems_awarded = 3;
-  PokemonData pokemon_data_egg = 4;
-  int32 experience_awarded = 5;
-  int64 cooldown_complete_timestamp_ms = 6;
-  int32 chain_hack_sequence_number = 7;
-
-  message ItemAward {
-    AllEnum.ItemId item_id = 1;
-    int32 item_count = 2;
-  }
-
-  enum Result {
-    NO_RESULT_SET = 0;
-    SUCCESS = 1;
-    OUT_OF_RANGE = 2;
-    IN_COOLDOWN_PERIOD = 3;
-    INVENTORY_FULL = 4;
-  }
-}
-
-message FortDetailsRequest {
-  string fort_id = 1;
-  double latitude = 2;
-  double longitude = 3;
-}
-
-message FortDetailsResponse {
-  string fort_id = 1;
-  AllEnum.TeamColor team_color = 2;
-  PokemonData pokemon_data = 3;
-  string name = 4;
-  repeated string image_urls = 5;
-  int32 fp = 6;
-  int32 stamina = 7;
-  int32 max_stamina = 8;
-  AllEnum.FortType type = 9;
-  double latitude = 10;
-  double longitude = 11;
-  string description = 12;
-  repeated FortModifier modifiers = 13;
-}
-
-message FortModifier {
-  AllEnum.ItemId item_id = 1;
-  int64 expiration_timestamp_ms = 2;
-  string deployer_player_codename = 3;
-}
-
-message EncounterRequest {
-  fixed64 encounter_id = 1;
-  string spawnpoint_id = 2;
-  double player_latitude = 3;
-  double player_longitude = 4;
-}
-
-message EncounterResponse {
-  WildPokemon wild_pokemon = 1;
-  Background background = 2;
-  Status status = 3;
-  CaptureProbability capture_probability = 4;
-
-  enum Background {
-    PARK = 0;
-    DESERT = 1;
-  }
-
-  enum Status {
-    ENCOUNTER_ERROR = 0;
-    ENCOUNTER_SUCCESS = 1;
-    ENCOUNTER_NOT_FOUND = 2;
-    ENCOUNTER_CLOSED = 3;
-    ENCOUNTER_POKEMON_FLED = 4;
-    ENCOUNTER_NOT_IN_RANGE = 5;
-    ENCOUNTER_ALREADY_HAPPENED = 6;
-    POKEMON_INVENTORY_FULL = 7;
-  }
-}
-
-message CaptureProbability {
-  repeated AllEnum.ItemId pokeball_type = 1;
-  repeated float capture_probability = 2;
-  double reticle_difficulty_scale = 12;
-}
-
-message DiskEncounterRequest {
-  fixed64 encounter_id = 1;
-  string fort_id = 2;
-  double player_latitude = 3;
-  double player_longitude = 4;
-}
-
-message DiskEncounterResponse {
-  Result result = 1;
-  PokemonData pokemon_data = 2;
-  CaptureProbability capture_probability = 3;
-
-  enum Result {
-    UNKNOWN = 0;
-    SUCCESS = 1;
-    NOT_AVAILABLE = 2;
-    NOT_IN_RANGE = 3;
-    ENCOUNTER_ALREADY_FINISHED = 4;
-    POKEMON_INVENTORY_FULL = 5;
-  }
-}
-
-message CatchPokemonRequest {
-  fixed64 encounter_id = 1;
-  int32 pokeball = 2;
-  double normalized_reticle_size = 3;
-  string spawn_point_guid = 4;
-  bool hit_pokemon = 5;
-  double spin_modifier = 6;
-  double NormalizedHitPosition = 7;
-}
-
-message CatchPokemonResponse {
-  CatchStatus status = 1;
-  double miss_percent = 2;
-  uint64 captured_pokemon_id = 3;
-  CaptureScore scores = 4;
-
-  enum CatchStatus {
-    CATCH_ERROR = 0;
-    CATCH_SUCCESS = 1;
-    CATCH_ESCAPE = 2;
-    CATCH_FLEE = 3;
-    CATCH_MISSED = 4;
-  }
-}
-
-message CaptureScore {
-  repeated AllEnum.ActivityType activity_type = 1;
-  repeated int32 xp = 2;
-  repeated int32 candy = 3;
-  repeated int32 stardust = 4;
-}
-
-message CheckAwardedBadgesRequest {
-	// No message needed.
-}
-
-// Confirm if this is correct, I think that it should be "repeated AwardedBadge awarded_badges" or something like that.
-message CheckAwardedBadgesResponse {
-  bool success = 1;
-  repeated AllEnum.BadgeType awarded_badges = 2;
-  repeated int32 awarded_badge_levels = 3;
-}
-
-message EquippedBadgeSettings {
-  int64 equip_badge_cooldown_ms = 1;
-  repeated float catch_probability_bonus = 2;
-  repeated float flee_probability_bonus = 3;
-}
-
-message PokemonUpgradeSettings {
-  int32 upgrades_per_level = 1;
-  int32 allowed_levels_above_player = 2;
-  repeated int32 candy_cost = 3;
-  repeated int32 stardust_cost = 4;
-}
-
-message IapSettings {
-  int32 daily_bonus_coins = 1;
-  repeated int32 daily_defender_bonus_per_pokemon = 2;
-  int32 daily_defender_bonus_max_defenders = 3;
-  repeated string daily_defender_bonus_currency = 4;
-  int64 min_time_between_claims_ms = 5;
-  bool daily_bonus_enabled = 6;
-  bool daily_defender_bonus_enabled = 7;
-}
-
-message IapItemDisplay {
-  string sku = 1;
-  AllEnum.HoloIapItemCategory category = 2;
-  int32 sort_order = 3;
-  repeated AllEnum.ItemId item_ids = 4;
-  repeated int32 counts = 5;
-}
-
-message EncounterSettings {
-  float spin_bonus_threshold = 1;
-  float excellent_throw_threshold = 2;
-  float great_throw_threshold = 3;
-  float nice_throw_threshold = 4;
-  int32 milestone_threshold = 5;
-}
-
-message GymBattleSettings {
-  float energy_per_sec = 1;
-  float dodge_energy_cost = 2;
-  float retarget_seconds = 3;
-  float enemy_attack_interval = 4;
-  float attack_server_interval = 5;
-  float round_duration_seconds = 6;
-  float bonus_time_per_ally_seconds = 7;
-  int32 maximum_attackers_per_battle = 8;
-  float same_type_attack_bonus_multiplier = 9;
-  int32 maximum_energy = 10;
-  float energy_delta_per_health_lost = 11;
-  int32 dodge_duration_ms = 12;
-  int32 minimum_player_level = 13;
-  int32 swap_duration_ms = 14;
-}
-
-message GymLevelSettings {
-	repeated int32 required_experience = 1;
-	repeated int32 leader_slots = 2;
-	repeated int32 trainer_slots = 3;
-	repeated int32 search_roll_bonus = 4;
-}
-
-message PlayerLevelSettings {
-	repeated int32 rank_num = 1;
-	repeated int32 required_experience = 2;
-	repeated float cp_multiplier = 3;
-	int32 max_egg_player_level = 4;
-	int32 max_encounter_player_level = 5;
-}
-
-message CameraSettings {
-	string next_camera = 1;
-	repeated AllEnum.CameraInterpolation interpolation = 2;
-	repeated AllEnum.CameraTarget target_type = 3;
-	repeated float ease_in_speed = 4;
-	repeated float east_out_speed = 5;
-	repeated float duration_seconds = 6;
-	repeated float wait_seconds = 7;
-	repeated float transition_seconds = 8;
-	repeated float angle_degree = 9;
-	repeated float angle_offset_degree = 10;
-	repeated float pitch_degree = 11;
-	repeated float pitch_offset_degree = 12;
-	repeated float roll_degree = 13;
-	repeated float distance_meters = 14;
-	repeated float height_percent = 15;
-	repeated float vert_ctr_ratio = 16;
-}
-
-message BadgeSettings {
-  AllEnum.BadgeType badge_type = 1;
-  int32 badge_rank = 2;
-  repeated int32 targets = 3;
-}
-
-message TypeEffectiveSettings {
-  repeated float attack_scalar = 1;
-  AllEnum.PokemonType attack_type = 2;
-}
-
-message MoveSequenceSettings {
-  repeated string sequence = 1;
-}
-
-message MoveSettings {
-  AllEnum.PokemonMovementType movement_id = 1;
-  int32 animation_id = 2;
-  AllEnum.PokemonType pokemon_type = 3;
-  float power = 4;
-  float accuracy_chance = 5;
-  float critical_chance = 6;
-  float heal_scalar = 7;
-  float stamina_loss_scalar = 8;
-  int32 trainer_level_min = 9;
-  int32 trainer_level_max = 10;
-  string vfx_name = 11;
-  int32 duration_ms = 12;
-  int32 damage_window_start_ms = 13;
-  int32 damage_window_end_ms = 14;
-  int32 energy_delta = 15;
-}
-
-message PokemonSettings {
-  AllEnum.PokemonId pokemon_id = 1;
-  float model_scale = 3;
-  AllEnum.PokemonType type = 4;
-  AllEnum.PokemonType type_2 = 5;
-  CameraAttributes camera = 6;
-  EncounterAttributes encounter = 7;
-  StatsAttributes stats = 8;
-  repeated AllEnum.PokemonMove quick_moves = 9;
-  repeated AllEnum.PokemonMove cinematic_moves = 10;
-  repeated float animation_time = 11;
-  repeated AllEnum.PokemonId evolution_ids = 12;
-  int32 evolution_pips = 13;
-  AllEnum.PokemonClass class = 14;
-  float pokedex_height_m = 15;
-  float pokedex_weight_kg = 16;
-  AllEnum.PokemonId parent_pokemon_id = 17;
-  float height_std_dev = 18;
-  float weight_std_dev = 19;
-  float km_distance_to_hatch = 20;
-  AllEnum.PokemonFamilyId family_id = 21;
-  int32 candy_to_evolve = 22;
-}
-
-message CameraAttributes {
-  float disk_radius_m = 1;
-  float cylinder_radius_m = 2;
-  float cylinder_height_m = 3;
-  float cylinder_ground_m = 4;
-  float shoulder_mode_scale = 5;
-}
-
-message EncounterAttributes {
-  float base_capture_rate = 1;
-  float base_flee_rate = 2;
-  float collision_radius_m = 3;
-  float collision_height_m = 4;
-  float collision_head_radius_m = 5;
-  AllEnum.PokemonMovementType movement_type = 6;
-  float movement_timer_s = 7;
-  float jump_time_s = 8;
-  float attack_timer_s = 9;
-}
-
-message StatsAttributes {
-  int32 base_stamina = 1;
-  int32 base_attack = 2;
-  int32 base_defense = 3;
-  int32 dodge_energy_delta = 8;
-}
-
-message ItemSettings {
-  AllEnum.ItemId item_id = 1;
-  AllEnum.ItemType item_type = 2;
-  AllEnum.ItemCategory category = 3;
-  float drop_freq = 4;
-  int32 drop_trainer_level = 5;
-
-  // One of the below attributes will be set in the response, the other will be null.
-
-  PokeballAttributes pokeball = 6;
-  PotionAttributes potion = 7;
-  ReviveAttributes revive = 8;
-  BattleAttributes battle = 9;
-  FoodAttributes food = 10;
-  InventoryUpgradeAttributes inventory_upgrade = 11;
-  ExperienceBoostAttributes xp_boost = 12;
-  IncenseAttributes incense = 13;
-  EggIncubatorAttributes egg_incubator = 14;
-  FortModifierAttributes fort_modifier = 15;
-}
-
-message BattleAttributes {
-  float sta_percent = 1;
-}
-
-message EggIncubatorAttributes {
-  AllEnum.EggIncubatorType incubator_type = 1;
-  int32 uses = 2;
-  float distance_multiplier = 3;
-}
-
-message ExperienceBoostAttributes {
-  float xp_multiplier = 1;
-  int32 boost_duration_ms = 2;
-}
-
-message FoodAttributes {
-  repeated AllEnum.ItemEffect item_effect = 1;
-  repeated float item_effect_percent = 2;
-  float growth_percent = 3;
-}
-
-message FortModifierAttributes {
-  int32 modifier_lifetime_seconds = 1;
-  int32 troy_disk_num_pokemon_spawned = 2;
-}
-
-message IncenseAttributes {
-  int32 incense_lifetime_seconds = 1;
-  repeated AllEnum.PokemonType pokemon_type = 2;
-  float pokemon_incense_type_probability = 3;
-  int32 standing_time_between_encounters_seconds = 4;
-  int32 moving_time_between_encounter_seconds = 5;
-  int32 distance_required_for_shorter_interval_meters = 6;
-  int32 pokemon_attracted_length_sec = 7;
-}
-
-message InventoryUpgradeAttributes {
-  int32 additional_storage = 1;
-  AllEnum.InventoryUpgradeType upgrade_type = 2;
-}
-
-message PokeballAttributes {
-  AllEnum.ItemEffect item_effect = 1;
-  float capture_multi = 2;
-  float capture_multi_effect = 3;
-  float item_effect_mod = 4;
-}
-
-message PotionAttributes {
-  float sta_percent = 1;
-  int32 sta_amount = 2;
-}
-
-message ReviveAttributes {
-  float sta_percent = 1;
-}
-
-// POKEMON TRANSFER
-message TransferPokemon {
-    fixed64 PokemonId = 1;
-}
-
-message TransferPokemonOut {
-    int32 Status = 1;
-    int32 CandyAwarded = 2;
-}
-
-// EVOLVE
-message EvolvePokemon {
-    fixed64 PokemonId = 1;
-}
-
-
-message EvolvePokemonOut {
-    int32 Result = 1;
-    Pokemon EvolvedPokemon = 2;
-    int32 ExpAwarded = 3;
-    int32 CandyAwarded = 4;
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/Request.proto b/PokemonGo/RocketAPI/Proto/Request.proto
deleted file mode 100644
index 1f937bf..0000000
--- a/PokemonGo/RocketAPI/Proto/Request.proto
+++ /dev/null
@@ -1,108 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message Request {
-  int32 unknown1 = 1;
-  int64 rpc_id = 3;
-  repeated Requests requests = 4;
-  Unknown6 unknown6 = 6;
-  fixed64 latitude = 7;
-  fixed64 longitude = 8;
-  fixed64 altitude = 9;
-  AuthInfo auth = 10;
-  UnknownAuth unknownauth = 11;
-  int64 unknown12 = 12;
-
-
-  message UnknownAuth {
-    bytes unknown71 = 1;
-    int64 timestamp = 2;
-    bytes unknown73 = 3;
-  }
-
-  message Requests {
-    int32 type = 1;
-    bytes message = 2;
-  }
-
-  message Unknown3 {
-    string unknown4 = 1;
-  }
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message AuthInfo {
-    string provider = 1;
-    JWT token = 2;
-
-    message JWT {
-      string contents = 1;
-      int32 unknown13  = 2;
-    }
-  }
-	message PlayerUpdateProto {
-	fixed64 Lat = 1;
-	fixed64 Lng = 2;
-	}
-
-	message MapObjectsRequest
-	{
-		bytes cellIds = 1;
-		bytes unknown14 = 2;
-		fixed64 latitude = 3;
-		fixed64 longitude = 4;
-	}
-
-	 message FortSearchRequest
-	{
-		bytes Id = 1;
-		fixed64 PlayerLatDegrees = 2;
-		fixed64 PlayerLngDegrees = 3;
-		fixed64 FortLatDegrees = 4;
-		fixed64 FortLngDegrees = 5;
-	}
-
-	message FortDetailsRequest
-	{
-  		bytes Id = 1;
-		fixed64 Latitude = 2;
-		fixed64 Longitude = 3;
-	}
-
-	 message EncounterRequest {
-		 fixed64 EncounterId = 1;
-		 string SpawnpointId = 2;
-		 fixed64 PlayerLatDegrees = 3;
-		 fixed64 PlayerLngDegrees = 4;
-	}
-
-	 message CatchPokemonRequest {
-		fixed64 EncounterId = 1;
-		int32 Pokeball = 2;
-		fixed64 NormalizedReticleSize = 3;
-		string SpawnPointGuid = 4;
-		int32 HitPokemon = 5;
-		fixed64 SpinModifier = 6;
-		fixed64 NormalizedHitPosition = 7;
-	}
-
-	message SettingsGuid
-	{
-		bytes guid = 1;
-	}
-
-	message Time
-	{
-		int64 time = 1;
-	}
-
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/Response.proto b/PokemonGo/RocketAPI/Proto/Response.proto
deleted file mode 100644
index e2f3aa7..0000000
--- a/PokemonGo/RocketAPI/Proto/Response.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-syntax = "proto3";
-
-package PokemonGo.RocketAPI.GeneratedCode;
-
-message Response {
-  int32 unknown1 = 1;
-  int64 unknown2 = 2;
-  string api_url = 3;
-  Unknown6 unknown6 = 6;
-  Auth auth = 7;
-  repeated bytes payload = 100;
-  string errorMessage = 101;
-
-  message Unknown6 {
-    int32 unknown1 = 1;
-    Unknown2 unknown2 = 2;
-
-    message Unknown2 {
-      bytes unknown1 = 1;
-    }
-
-  }
-
-  message Auth {
-    bytes unknown71 = 1;
-    int64 timestamp = 2;
-    bytes unknown73 = 3;
-  }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/ProtoAdditions.cs b/PokemonGo/RocketAPI/ProtoAdditions.cs
deleted file mode 100644
index ea0ecf2..0000000
--- a/PokemonGo/RocketAPI/ProtoAdditions.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace PokemonGo.RocketAPI.GeneratedCode
-{
-    public partial class FortData : ILatLong { }
-
-    public partial class MapPokemon : ILatLong { }
-
-    public partial class WildPokemon : ILatLong { }
-
-    public partial class SpawnPoint : ILatLong { }
-
-}
diff --git a/PokemonGo/RocketAPI/Resources.cs b/PokemonGo/RocketAPI/Resources.cs
deleted file mode 100644
index 4e3f934..0000000
--- a/PokemonGo/RocketAPI/Resources.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace PokemonGo.RocketAPI
-{
-    public class Resources
-    {
-        public const string RpcUrl = @"https://pgorelease.nianticlabs.com/plfe/rpc";
-        public const string NumberedRpcUrl = @"https://pgorelease.nianticlabs.com/plfe/{0}/rpc";
-
-        public const string PtcLoginUrl =
-            "https://sso.pokemon.com/sso/login?service=https%3A%2F%2Fsso.pokemon.com%2Fsso%2Foauth2.0%2FcallbackAuthorize";
-
-        public const string PtcLoginOauth = "https://sso.pokemon.com/sso/oauth2.0/accessToken";
-        public const string GoogleGrantRefreshAccessUrl = "https://android.clients.google.com/auth";
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/App.config b/PokemonGo/RocketAPI/Window/App.config
deleted file mode 100644
index 3842152..0000000
--- a/PokemonGo/RocketAPI/Window/App.config
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <startup>
-    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-  </startup>
-  <runtime>
-    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
-      <dependentAssembly>
-        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
-      </dependentAssembly>
-    </assemblyBinding>
-  </runtime>
-  <appSettings>
-    <add key="AuthType" value="google" />
-    <!--Google/Ptc-->
-    <add key="PtcUsername" value="" />
-    <!--Username-->
-    <add key="PtcPassword" value="" />
-    <!--Password-->
-    <add key="Email" value="" />
-    <!--Google E-mail-->
-    <add key="Password" value="" />
-    <!--E-mail Password-->
-    <add key="GoogleRefreshToken" value="" />
-    <add key="DefaultLatitude" value="-36.714359" />
-    <!--Default Viaduct Harbour, Auckland, New Zealand-->
-    <add key="DefaultLongitude" value="174.747205" />
-    <!--Default Viaduct Harbour, Auckland, New Zealand-->
-    <add key="LevelOutput" value="levelup" />
-    <!--2 Modes: "time": Every XXX seconds and "levelup" every levelup-->
-    <add key="LevelTimeInterval" value="1" />
-    <!--Pick 1 if levelup and time in seconds if "time"-->
-    <add key="Recycler" value="true" />
-    <!--Recycler master switch-->
-    <add key="RecycleItemsInterval" value="60" />
-    <!--Recycle Interval in seconds-->
-    <add key="Language" value="english" />
-    <!--Languages english/german-->
-    <add key="RazzBerryMode" value="probability" />
-    <!--When to use RazzBerry cp/probability-->
-    <add key="RazzBerrySetting" value="0.4" />
-    <!--Cp Mode: Use RazzBerry when Pokemon is over this value; pobability Mode: Use Razzberry when % between 0 and 1 of catching is under this value-->
-    <add key="TransferType" value="Duplicate" />
-    <!--none/cp/iv/leaveStrongest/duplicate/all Whitelists/blackslists for each type is in Program.cs-->
-    <add key="TransferCPThreshold" value="0" />
-    <!--transfer pokemon with CP less than this value if cp transfer type is selected. Whitelist in Program.cs-->
-    <add key="TransferIVThreshold" value="0" />
-    <!--transfer pokemon with IV less than this value if iv transfer type is selected. Whitelist in Program.cs-->
-    <add key="TravelSpeed" value="60"/>
-    <!--The speed to travel in km/h-->
-    <add key="ImageSize" value="50"/>
-    <!--PokeUi image size-->
-    <add key="CatchPokemon" value="true"/>
-    <!--Only visit pokestop and collect items-->
-    <add key="EvolveAllGivenPokemons" value="false" />
-    <add key="ClientSettingsProvider.ServiceUri" value="" />
-
-    <add key="MaxItemPokeBall" value="100"/>
-    <add key="MaxItemGreatBall" value="100"/>
-    <add key="MaxItemUltraBall" value="100"/>
-    <add key="MaxItemMasterBall" value="200"/>
-    <add key="MaxItemRazzBerry" value="100"/>
-    <add key="MaxItemRevive" value="20"/>
-    <add key="MaxItemPotion" value="0"/>
-    <add key="MaxItemSuperPotion" value="0"/>
-    <add key="MaxItemHyperPotion" value="50"/>
-    <add key="MaxItemMaxPotion" value="100"/>
-
-  </appSettings>
-</configuration>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/LocationManager.cs b/PokemonGo/RocketAPI/Window/LocationManager.cs
deleted file mode 100644
index 6b6f3b5..0000000
--- a/PokemonGo/RocketAPI/Window/LocationManager.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using PokemonGo.RocketAPI;
-using PokemonGo.RocketAPI.Extensions;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public class LocationManager
-    {
-        private Client client;
-        private double metersPerMillisecond;
-
-        public LocationManager(Client client, double speed)
-        {
-            this.client = client;
-            this.metersPerMillisecond = speed / 3600;
-        }
-
-        public double getDistance(double lat, double lng)
-        {
-            LatLong currentLoc = new LatLong(client.CurrentLatitude, client.CurrentLongitude);
-            return currentLoc.distanceFrom(new LatLong(lat, lng));
-        }
-
-        public async Task update(double lat, double lng)
-        {
-            double waitTime = getDistance(lat, lng) / this.metersPerMillisecond;
-            await Task.Delay((int)Math.Ceiling(waitTime));
-            await client.UpdatePlayerLocation(lat, lng);
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/MainForm.Designer.cs b/PokemonGo/RocketAPI/Window/MainForm.Designer.cs
deleted file mode 100644
index bfeb935..0000000
--- a/PokemonGo/RocketAPI/Window/MainForm.Designer.cs
+++ /dev/null
@@ -1,417 +0,0 @@
-namespace PokemonGo.RocketAPI.Window
-{
-    partial class MainForm
-    {
-        /// <summary>
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            this.components = new System.ComponentModel.Container();
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
-            this.logTextBox = new System.Windows.Forms.RichTextBox();
-            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
-            this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel();
-            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
-            this.startStopBotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.todoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.useLuckyEggToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.forceUnbanToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.showAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.showAllToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
-            this.gMapControl1 = new GMap.NET.WindowsForms.GMapControl();
-            this.objectListView1 = new BrightIdeasSoftware.ObjectListView();
-            this.pkmnName = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnCP = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnAtkIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnDefIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnStaIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnIV = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnTransferButton = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnPowerUpButton = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.pkmnEvolveButton = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
-            this.largePokemonImageList = new System.Windows.Forms.ImageList(this.components);
-            this.smallPokemonImageList = new System.Windows.Forms.ImageList(this.components);
-            this.button1 = new System.Windows.Forms.Button();
-            this.tabControl1 = new System.Windows.Forms.TabControl();
-            this.tabPage1 = new System.Windows.Forms.TabPage();
-            this.label1 = new System.Windows.Forms.Label();
-            this.tabPage2 = new System.Windows.Forms.TabPage();
-            this.statusStrip1.SuspendLayout();
-            this.menuStrip1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.objectListView1)).BeginInit();
-            this.tabControl1.SuspendLayout();
-            this.tabPage1.SuspendLayout();
-            this.SuspendLayout();
-            //
-            // logTextBox
-            //
-            this.logTextBox.BackColor = System.Drawing.Color.Black;
-            this.logTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.logTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.logTextBox.ForeColor = System.Drawing.Color.White;
-            this.logTextBox.ImeMode = System.Windows.Forms.ImeMode.Off;
-            this.logTextBox.Location = new System.Drawing.Point(0, 24);
-            this.logTextBox.Name = "logTextBox";
-            this.logTextBox.ReadOnly = true;
-            this.logTextBox.Size = new System.Drawing.Size(668, 338);
-            this.logTextBox.TabIndex = 0;
-            this.logTextBox.Text = "";
-            this.logTextBox.TextChanged += new System.EventHandler(this.logTextBox_TextChanged);
-            //
-            // statusStrip1
-            //
-            this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
-            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.statusLabel});
-            this.statusStrip1.Location = new System.Drawing.Point(0, 615);
-            this.statusStrip1.Name = "statusStrip1";
-            this.statusStrip1.Size = new System.Drawing.Size(1012, 22);
-            this.statusStrip1.TabIndex = 1;
-            this.statusStrip1.Text = "statusStrip1";
-            //
-            // statusLabel
-            //
-            this.statusLabel.Name = "statusLabel";
-            this.statusLabel.Size = new System.Drawing.Size(43, 17);
-            this.statusLabel.Text = "Status";
-            //
-            // menuStrip1
-            //
-            this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
-            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.startStopBotToolStripMenuItem,
-            this.todoToolStripMenuItem,
-            this.useLuckyEggToolStripMenuItem,
-            this.forceUnbanToolStripMenuItem});
-            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
-            this.menuStrip1.Name = "menuStrip1";
-            this.menuStrip1.Size = new System.Drawing.Size(1012, 25);
-            this.menuStrip1.TabIndex = 2;
-            this.menuStrip1.Text = "menuStrip1";
-            //
-            // startStopBotToolStripMenuItem
-            //
-            this.startStopBotToolStripMenuItem.Name = "startStopBotToolStripMenuItem";
-            this.startStopBotToolStripMenuItem.Size = new System.Drawing.Size(85, 21);
-            this.startStopBotToolStripMenuItem.Text = "▶ Start Bot";
-            this.startStopBotToolStripMenuItem.Click += new System.EventHandler(this.startStopBotToolStripMenuItem_Click);
-            //
-            // todoToolStripMenuItem
-            //
-            this.todoToolStripMenuItem.Name = "todoToolStripMenuItem";
-            this.todoToolStripMenuItem.Size = new System.Drawing.Size(66, 21);
-            this.todoToolStripMenuItem.Text = "Settings";
-            this.todoToolStripMenuItem.Click += new System.EventHandler(this.todoToolStripMenuItem_Click);
-            //
-            // useLuckyEggToolStripMenuItem
-            //
-            this.useLuckyEggToolStripMenuItem.Name = "useLuckyEggToolStripMenuItem";
-            this.useLuckyEggToolStripMenuItem.Size = new System.Drawing.Size(105, 21);
-            this.useLuckyEggToolStripMenuItem.Text = "Use Lucky Egg";
-            this.useLuckyEggToolStripMenuItem.Click += new System.EventHandler(this.useLuckyEggToolStripMenuItem_Click);
-            //
-            // forceUnbanToolStripMenuItem
-            //
-            this.forceUnbanToolStripMenuItem.Name = "forceUnbanToolStripMenuItem";
-            this.forceUnbanToolStripMenuItem.Size = new System.Drawing.Size(94, 21);
-            this.forceUnbanToolStripMenuItem.Text = "Force Unban";
-            this.forceUnbanToolStripMenuItem.Click += new System.EventHandler(this.forceUnbanToolStripMenuItem_Click);
-            //
-            // showAllToolStripMenuItem
-            //
-            this.showAllToolStripMenuItem.Name = "showAllToolStripMenuItem";
-            this.showAllToolStripMenuItem.Size = new System.Drawing.Size(32, 19);
-            //
-            // showAllToolStripMenuItem1
-            //
-            this.showAllToolStripMenuItem1.Name = "showAllToolStripMenuItem1";
-            this.showAllToolStripMenuItem1.Size = new System.Drawing.Size(32, 19);
-            //
-            // gMapControl1
-            //
-            this.gMapControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.gMapControl1.Bearing = 0F;
-            this.gMapControl1.CanDragMap = true;
-            this.gMapControl1.EmptyTileColor = System.Drawing.Color.Navy;
-            this.gMapControl1.GrayScaleMode = false;
-            this.gMapControl1.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
-            this.gMapControl1.LevelsKeepInMemmory = 5;
-            this.gMapControl1.Location = new System.Drawing.Point(674, 24);
-            this.gMapControl1.MarkersEnabled = true;
-            this.gMapControl1.MaxZoom = 2;
-            this.gMapControl1.MinZoom = 2;
-            this.gMapControl1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
-            this.gMapControl1.Name = "gMapControl1";
-            this.gMapControl1.NegativeMode = false;
-            this.gMapControl1.PolygonsEnabled = true;
-            this.gMapControl1.RetryLoadTile = 0;
-            this.gMapControl1.RoutesEnabled = true;
-            this.gMapControl1.ScaleMode = GMap.NET.WindowsForms.ScaleModes.Integer;
-            this.gMapControl1.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
-            this.gMapControl1.ShowTileGridLines = false;
-            this.gMapControl1.Size = new System.Drawing.Size(338, 338);
-            this.gMapControl1.TabIndex = 23;
-            this.gMapControl1.Zoom = 0D;
-            //
-            // objectListView1
-            //
-            this.objectListView1.AllColumns.Add(this.pkmnName);
-            this.objectListView1.AllColumns.Add(this.pkmnCP);
-            this.objectListView1.AllColumns.Add(this.pkmnAtkIV);
-            this.objectListView1.AllColumns.Add(this.pkmnDefIV);
-            this.objectListView1.AllColumns.Add(this.pkmnStaIV);
-            this.objectListView1.AllColumns.Add(this.pkmnIV);
-            this.objectListView1.AllColumns.Add(this.pkmnTransferButton);
-            this.objectListView1.AllColumns.Add(this.pkmnPowerUpButton);
-            this.objectListView1.AllColumns.Add(this.pkmnEvolveButton);
-            this.objectListView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.objectListView1.CellEditUseWholeCell = false;
-            this.objectListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.pkmnName,
-            this.pkmnCP,
-            this.pkmnAtkIV,
-            this.pkmnDefIV,
-            this.pkmnStaIV,
-            this.pkmnIV,
-            this.pkmnTransferButton,
-            this.pkmnPowerUpButton,
-            this.pkmnEvolveButton});
-            this.objectListView1.Cursor = System.Windows.Forms.Cursors.Default;
-            this.objectListView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.objectListView1.FullRowSelect = true;
-            this.objectListView1.GridLines = true;
-            this.objectListView1.LargeImageList = this.largePokemonImageList;
-            this.objectListView1.Location = new System.Drawing.Point(0, 368);
-            this.objectListView1.MultiSelect = false;
-            this.objectListView1.Name = "objectListView1";
-            this.objectListView1.RowHeight = 32;
-            this.objectListView1.ShowGroups = false;
-            this.objectListView1.Size = new System.Drawing.Size(668, 220);
-            this.objectListView1.SmallImageList = this.smallPokemonImageList;
-            this.objectListView1.TabIndex = 25;
-            this.objectListView1.UseCompatibleStateImageBehavior = false;
-            this.objectListView1.View = System.Windows.Forms.View.Details;
-            //
-            // pkmnName
-            //
-            this.pkmnName.AspectName = "PokemonId";
-            this.pkmnName.AspectToStringFormat = "";
-            this.pkmnName.Text = "Name";
-            this.pkmnName.Width = 120;
-            //
-            // pkmnCP
-            //
-            this.pkmnCP.AspectName = "Cp";
-            this.pkmnCP.Text = "CP";
-            this.pkmnCP.Width = 50;
-            //
-            // pkmnAtkIV
-            //
-            this.pkmnAtkIV.AspectName = "IndividualAttack";
-            this.pkmnAtkIV.Text = "Atk IV";
-            this.pkmnAtkIV.Width = 50;
-            //
-            // pkmnDefIV
-            //
-            this.pkmnDefIV.AspectName = "IndividualDefense";
-            this.pkmnDefIV.Text = "Def IV";
-            this.pkmnDefIV.Width = 50;
-            //
-            // pkmnStaIV
-            //
-            this.pkmnStaIV.AspectName = "IndividualStamina";
-            this.pkmnStaIV.Text = "Sta IV";
-            this.pkmnStaIV.Width = 50;
-            //
-            // pkmnIV
-            //
-            this.pkmnIV.AspectName = "GetIV";
-            this.pkmnIV.AspectToStringFormat = "{0:P2}";
-            this.pkmnIV.Text = "IV %";
-            this.pkmnIV.Width = 50;
-            //
-            // pkmnTransferButton
-            //
-            this.pkmnTransferButton.AspectName = "Id";
-            this.pkmnTransferButton.AspectToStringFormat = "Transfer";
-            this.pkmnTransferButton.ButtonSizing = BrightIdeasSoftware.OLVColumn.ButtonSizingMode.CellBounds;
-            this.pkmnTransferButton.IsButton = true;
-            this.pkmnTransferButton.Text = "";
-            //
-            // pkmnPowerUpButton
-            //
-            this.pkmnPowerUpButton.AspectName = "Id";
-            this.pkmnPowerUpButton.AspectToStringFormat = "Power Up";
-            this.pkmnPowerUpButton.ButtonSizing = BrightIdeasSoftware.OLVColumn.ButtonSizingMode.CellBounds;
-            this.pkmnPowerUpButton.IsButton = true;
-            this.pkmnPowerUpButton.Text = "";
-            //
-            // pkmnEvolveButton
-            //
-            this.pkmnEvolveButton.AspectName = "Id";
-            this.pkmnEvolveButton.AspectToStringFormat = "Evolve";
-            this.pkmnEvolveButton.ButtonSizing = BrightIdeasSoftware.OLVColumn.ButtonSizingMode.CellBounds;
-            this.pkmnEvolveButton.IsButton = true;
-            this.pkmnEvolveButton.Text = "";
-            //
-            // largePokemonImageList
-            //
-            this.largePokemonImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-            this.largePokemonImageList.ImageSize = new System.Drawing.Size(96, 96);
-            this.largePokemonImageList.TransparentColor = System.Drawing.Color.Transparent;
-            //
-            // smallPokemonImageList
-            //
-            this.smallPokemonImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-            this.smallPokemonImageList.ImageSize = new System.Drawing.Size(32, 32);
-            this.smallPokemonImageList.TransparentColor = System.Drawing.Color.Transparent;
-            //
-            // button1
-            //
-            this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-            this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.button1.Location = new System.Drawing.Point(0, 588);
-            this.button1.Name = "button1";
-            this.button1.Size = new System.Drawing.Size(668, 26);
-            this.button1.TabIndex = 26;
-            this.button1.Text = "Refresh";
-            this.button1.UseVisualStyleBackColor = true;
-            this.button1.Click += new System.EventHandler(this.button1_Click);
-            //
-            // tabControl1
-            //
-            this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Bottom;
-            this.tabControl1.Controls.Add(this.tabPage1);
-            this.tabControl1.Controls.Add(this.tabPage2);
-            this.tabControl1.Enabled = false;
-            this.tabControl1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.tabControl1.Location = new System.Drawing.Point(674, 368);
-            this.tabControl1.Name = "tabControl1";
-            this.tabControl1.RightToLeft = System.Windows.Forms.RightToLeft.No;
-            this.tabControl1.SelectedIndex = 0;
-            this.tabControl1.Size = new System.Drawing.Size(338, 244);
-            this.tabControl1.TabIndex = 27;
-            //
-            // tabPage1
-            //
-            this.tabPage1.Controls.Add(this.label1);
-            this.tabPage1.Location = new System.Drawing.Point(4, 4);
-            this.tabPage1.Name = "tabPage1";
-            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage1.Size = new System.Drawing.Size(330, 216);
-            this.tabPage1.TabIndex = 0;
-            this.tabPage1.Text = "Incoming Feature";
-            this.tabPage1.UseVisualStyleBackColor = true;
-            //
-            // label1
-            //
-            this.label1.AutoSize = true;
-            this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.label1.Location = new System.Drawing.Point(67, 102);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(189, 25);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Incoming Features";
-            //
-            // tabPage2
-            //
-            this.tabPage2.Location = new System.Drawing.Point(4, 4);
-            this.tabPage2.Name = "tabPage2";
-            this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage2.Size = new System.Drawing.Size(330, 216);
-            this.tabPage2.TabIndex = 1;
-            this.tabPage2.Text = ":3";
-            this.tabPage2.UseVisualStyleBackColor = true;
-            //
-            // MainForm
-            //
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(1012, 637);
-            this.Controls.Add(this.gMapControl1);
-            this.Controls.Add(this.logTextBox);
-            this.Controls.Add(this.button1);
-            this.Controls.Add(this.objectListView1);
-            this.Controls.Add(this.statusStrip1);
-            this.Controls.Add(this.menuStrip1);
-            this.Controls.Add(this.tabControl1);
-            this.ForeColor = System.Drawing.SystemColors.ControlText;
-            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.MainMenuStrip = this.menuStrip1;
-            this.MaximizeBox = false;
-            this.Name = "MainForm";
-            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
-            this.Text = "PokemonGo Rocket API";
-            this.Load += new System.EventHandler(this.MainForm_Load);
-            this.statusStrip1.ResumeLayout(false);
-            this.statusStrip1.PerformLayout();
-            this.menuStrip1.ResumeLayout(false);
-            this.menuStrip1.PerformLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.objectListView1)).EndInit();
-            this.tabControl1.ResumeLayout(false);
-            this.tabPage1.ResumeLayout(false);
-            this.tabPage1.PerformLayout();
-            this.ResumeLayout(false);
-            this.PerformLayout();
-
-        }
-
-        #endregion
-
-        private System.Windows.Forms.RichTextBox logTextBox;
-        private System.Windows.Forms.StatusStrip statusStrip1;
-        private System.Windows.Forms.MenuStrip menuStrip1;
-        private System.Windows.Forms.ToolStripMenuItem todoToolStripMenuItem;
-        private System.Windows.Forms.ToolStripStatusLabel statusLabel;
-        private System.Windows.Forms.ToolStripMenuItem startStopBotToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem showAllToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem showAllToolStripMenuItem1;
-        private System.Windows.Forms.ToolStripMenuItem useLuckyEggToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem forceUnbanToolStripMenuItem;
-        private GMap.NET.WindowsForms.GMapControl gMapControl1;
-        private BrightIdeasSoftware.ObjectListView objectListView1;
-        private BrightIdeasSoftware.OLVColumn pkmnName;
-        private BrightIdeasSoftware.OLVColumn pkmnCP;
-        private BrightIdeasSoftware.OLVColumn pkmnAtkIV;
-        private BrightIdeasSoftware.OLVColumn pkmnDefIV;
-        private BrightIdeasSoftware.OLVColumn pkmnStaIV;
-        private BrightIdeasSoftware.OLVColumn pkmnIV;
-        private BrightIdeasSoftware.OLVColumn pkmnTransferButton;
-        private System.Windows.Forms.Button button1;
-        private System.Windows.Forms.ImageList smallPokemonImageList;
-        private System.Windows.Forms.ImageList largePokemonImageList;
-        private BrightIdeasSoftware.OLVColumn pkmnPowerUpButton;
-        private BrightIdeasSoftware.OLVColumn pkmnEvolveButton;
-        private System.Windows.Forms.TabControl tabControl1;
-        private System.Windows.Forms.TabPage tabPage1;
-        private System.Windows.Forms.TabPage tabPage2;
-        private System.Windows.Forms.Label label1;
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/MainForm.cs b/PokemonGo/RocketAPI/Window/MainForm.cs
deleted file mode 100644
index b5c71c1..0000000
--- a/PokemonGo/RocketAPI/Window/MainForm.cs
+++ /dev/null
@@ -1,1370 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Reflection;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using System.Xml;
-using AllEnum;
-using PokemonGo.RocketAPI.Enums;
-using PokemonGo.RocketAPI.Exceptions;
-using PokemonGo.RocketAPI.Extensions;
-using PokemonGo.RocketAPI.GeneratedCode;
-using System.Configuration;
-using GMap.NET;
-using GMap.NET.MapProviders;
-using GMap.NET.WindowsForms;
-using GMap.NET.WindowsForms.Markers;
-using GMap.NET.WindowsForms.ToolTips;
-using System.Threading;
-using BrightIdeasSoftware;
-using PokemonGo.RocketAPI.Helpers;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public partial class MainForm : Form
-    {
-        public static MainForm Instance;
-        public static SynchronizationContext synchronizationContext;
-
-        GMapOverlay searchAreaOverlay = new GMapOverlay("areas");
-        GMapOverlay pokestopsOverlay = new GMapOverlay("pokestops");
-        GMapOverlay pokemonsOverlay = new GMapOverlay("pokemons");
-        GMapOverlay playerOverlay = new GMapOverlay("players");
-
-        GMarkerGoogle playerMarker;
-
-        IEnumerable<FortData> pokeStops;
-        IEnumerable<WildPokemon> wildPokemons;
-
-        public MainForm()
-        {
-            InitializeComponent();
-            synchronizationContext = SynchronizationContext.Current;
-            ClientSettings = Settings.Instance;
-            Client.OnConsoleWrite += Client_OnConsoleWrite;
-            Instance = this;
-        }
-
-        private void MainForm_Load(object sender, EventArgs e)
-        {
-            gMapControl1.MapProvider = GoogleMapProvider.Instance;
-            gMapControl1.Manager.Mode = AccessMode.ServerOnly;
-            GMapProvider.WebProxy = null;
-            gMapControl1.Position = new PointLatLng(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude);
-            gMapControl1.DragButton = MouseButtons.Left;
-
-            gMapControl1.MinZoom = 1;
-            gMapControl1.MaxZoom = 20;
-            gMapControl1.Zoom = 15;
-
-            gMapControl1.Overlays.Add(searchAreaOverlay);
-            gMapControl1.Overlays.Add(pokestopsOverlay);
-            gMapControl1.Overlays.Add(pokemonsOverlay);
-            gMapControl1.Overlays.Add(playerOverlay);
-
-            playerMarker = new GMarkerGoogle(new PointLatLng(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude),
-                GMarkerGoogleType.orange_small);
-            playerOverlay.Markers.Add(playerMarker);
-
-            InitializeMap();
-            InitializePokemonForm();
-        }
-
-        public void Restart()
-        {
-            InitializeMap();
-            InitializePokemonForm();
-        }
-
-        private void InitializeMap()
-        {
-            playerMarker.Position = new PointLatLng(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude);
-            searchAreaOverlay.Polygons.Clear();
-            S2GMapDrawer.DrawS2Cells(S2Helper.GetNearbyCellIds(ClientSettings.DefaultLongitude, ClientSettings.DefaultLatitude), searchAreaOverlay);
-        }
-
-        public static void ResetMap()
-        {
-            Instance.gMapControl1.Position = new PointLatLng(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude);
-            Instance.playerMarker.Position = new PointLatLng(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude);
-            Instance.searchAreaOverlay.Polygons.Clear();
-            S2GMapDrawer.DrawS2Cells(S2Helper.GetNearbyCellIds(ClientSettings.DefaultLongitude, ClientSettings.DefaultLatitude), Instance.searchAreaOverlay);
-        }
-
-        public static ISettings ClientSettings;
-        private static int Currentlevel = -1;
-        private static int TotalExperience = 0;
-        private static int TotalPokemon = 0;
-        private static bool Stopping = false;
-        private static bool ForceUnbanning = false;
-        private static bool FarmingStops = false;
-        private static bool FarmingPokemons = false;
-        private static DateTime TimeStarted = DateTime.Now;
-        public static DateTime InitSessionDateTime = DateTime.Now;
-
-        Client client;
-        Client client2;
-        LocationManager locationManager;
-
-        public static double GetRuntime()
-        {
-            return ((DateTime.Now - TimeStarted).TotalSeconds) / 3600;
-        }
-
-        public void CheckVersion()
-        {
-            try
-            {
-                var match =
-                    new Regex(
-                        @"\[assembly\: AssemblyVersion\(""(\d{1,})\.(\d{1,})\.(\d{1,})\.(\d{1,})""\)\]")
-                        .Match(DownloadServerVersion());
-
-                if (!match.Success) return;
-                var gitVersion =
-                    new Version(
-                        string.Format(
-                            "{0}.{1}.{2}.{3}",
-                            match.Groups[1],
-                            match.Groups[2],
-                            match.Groups[3],
-                            match.Groups[4]));
-                // makes sense to display your version and say what the current one is on github
-                ColoredConsoleWrite(Color.Green, "Your version is " + Assembly.GetExecutingAssembly().GetName().Version);
-                ColoredConsoleWrite(Color.Green, "Github version is " + gitVersion);
-                ColoredConsoleWrite(Color.Green, "You can find it at www.GitHub.com/1461748123/Pokemon-Go-Rocket-API/releases");
-            }
-            catch (Exception)
-            {
-                ColoredConsoleWrite(Color.Red, "Unable to check for updates now...");
-            }
-        }
-
-        private static string DownloadServerVersion()
-        {
-            using (var wC = new WebClient())
-                return
-                    wC.DownloadString(
-                        "https://raw.githubusercontent.com/1461748123/Pokemon-Go-Rocket-API/master/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs");
-        }
-
-        public static void ColoredConsoleWrite(Color color, string text)
-        {
-            if (MainForm.Instance.InvokeRequired)
-            {
-                MainForm.Instance.Invoke(new Action<Color, string>(ColoredConsoleWrite), color, text);
-                return;
-            }
-
-            MainForm.Instance.logTextBox.Select(MainForm.Instance.logTextBox.Text.Length, 1); // Reset cursor to last
-
-            string textToAppend = "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\r\n";
-            MainForm.Instance.logTextBox.SelectionColor = color;
-            MainForm.Instance.logTextBox.AppendText(textToAppend);
-
-            object syncRoot = new object();
-            lock (syncRoot) // Added locking to prevent text file trying to be accessed by two things at the same time
-            {
-                var dir = AppDomain.CurrentDomain.BaseDirectory + @"\Logs";
-                if (!Directory.Exists(dir))
-                    Directory.CreateDirectory(dir);
-                File.AppendAllText(dir + @"\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\r\n");
-            }
-        }
-
-        public void ConsoleClear()
-        {
-            if (InvokeRequired)
-            {
-                Invoke(new Action(ConsoleClear));
-                return;
-            }
-
-            logTextBox.Clear();
-        }
-
-        public void SetStatusText(string text)
-        {
-            if (InvokeRequired)
-            {
-                Invoke(new Action<string>(SetStatusText), text);
-                return;
-            }
-
-            statusLabel.Text = text;
-        }
-
-        private async Task EvolvePokemons(Client client)
-        {
-            var inventory = await client.GetInventory();
-            var pokemons =
-                inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
-                    .Where(p => p != null && p?.PokemonId > 0);
-
-            await EvolveAllGivenPokemons(client, pokemons);
-        }
-
-        private async Task EvolveAllGivenPokemons(Client client, IEnumerable<PokemonData> pokemonToEvolve)
-        {
-            foreach (var pokemon in pokemonToEvolve)
-            {
-                var countOfEvolvedUnits = 0;
-                var xpCount = 0;
-
-                EvolvePokemonOut evolvePokemonOutProto;
-                do
-                {
-                    evolvePokemonOutProto = await client.EvolvePokemon(pokemon.Id);
-                    //todo: someone check whether this still works
-
-                    if (evolvePokemonOutProto.Result == 1)
-                    {
-                        countOfEvolvedUnits++;
-                        xpCount += evolvePokemonOutProto.ExpAwarded;
-                        TotalExperience += evolvePokemonOutProto.ExpAwarded;
-                    }
-                } while (evolvePokemonOutProto.Result == 1);
-
-                if (countOfEvolvedUnits > 0)
-                    ColoredConsoleWrite(Color.Cyan,
-                        $"Evolved {countOfEvolvedUnits} pieces of {pokemon.PokemonId} for {xpCount}xp");
-
-                await Task.Delay(3000);
-            }
-        }
-
-        private async void Execute()
-        {
-            client = new Client(ClientSettings);
-            this.locationManager = new LocationManager(client, ClientSettings.TravelSpeed);
-            try
-            {
-                switch (ClientSettings.AuthType)
-                {
-                    case AuthType.Ptc:
-                        ColoredConsoleWrite(Color.Green, "Login Type: Pokemon Trainers Club");
-                        break;
-                    case AuthType.Google:
-                        ColoredConsoleWrite(Color.Green, "Login Type: Google");
-                        break;
-                }
-
-                await client.Login();
-                await client.SetServer();
-                var profile = await client.GetProfile();
-                var settings = await client.GetSettings();
-                var mapObjects = await client.GetMapObjects();
-                var inventory = await client.GetInventory();
-                var pokemons =
-                    inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
-                        .Where(p => p != null && p?.PokemonId > 0);
-
-                updateUserStatusBar(client);
-
-                // Write the players ingame details
-                ColoredConsoleWrite(Color.Yellow, "----------------------------");
-                /*// dont actually want to display info but keeping here incase people want to \O_O/
-                 * if (ClientSettings.AuthType == AuthType.Ptc)
-                {
-                    ColoredConsoleWrite(Color.Cyan, "Account: " + ClientSettings.PtcUsername);
-                    ColoredConsoleWrite(Color.Cyan, "Password: *hidden*\n");
-                }
-                else
-                {
-                    ColoredConsoleWrite(Color.Cyan, "Email: " + ClientSettings.Email);
-                    ColoredConsoleWrite(Color.Cyan, "Password: " + ClientSettings.Password + "\n");
-                }*/
-                string lat2 = System.Convert.ToString(ClientSettings.DefaultLatitude);
-                string longit2 = System.Convert.ToString(ClientSettings.DefaultLongitude);
-                ColoredConsoleWrite(Color.DarkGray, "Name: " + profile.Profile.Username);
-                ColoredConsoleWrite(Color.DarkGray, "Team: " + profile.Profile.Team);
-                if (profile.Profile.Currency.ToArray()[0].Amount > 0) // If player has any pokecoins it will show how many they have.
-                    ColoredConsoleWrite(Color.DarkGray, "Pokecoins: " + profile.Profile.Currency.ToArray()[0].Amount);
-                ColoredConsoleWrite(Color.DarkGray, "Stardust: " + profile.Profile.Currency.ToArray()[1].Amount + "\n");
-                ColoredConsoleWrite(Color.DarkGray, "Latitude: " + ClientSettings.DefaultLatitude);
-                ColoredConsoleWrite(Color.DarkGray, "Longitude: " + ClientSettings.DefaultLongitude);
-                try
-                {
-                    ColoredConsoleWrite(Color.DarkGray, "Country: " + CallAPI("country", lat2.Replace(',', '.'), longit2.Replace(',', '.')));
-                    ColoredConsoleWrite(Color.DarkGray, "Area: " + CallAPI("place", lat2.Replace(',', '.'), longit2.Replace(',', '.')));
-                }
-                catch (Exception)
-                {
-                    ColoredConsoleWrite(Color.DarkGray, "Unable to get Country/Place");
-                }
-
-
-                ColoredConsoleWrite(Color.Yellow, "----------------------------");
-
-                // I believe a switch is more efficient and easier to read.
-                switch (ClientSettings.TransferType)
-                {
-                    case "Leave Strongest":
-                        await TransferAllButStrongestUnwantedPokemon(client);
-                        break;
-                    case "All":
-                        await TransferAllGivenPokemons(client, pokemons);
-                        break;
-                    case "Duplicate":
-                        await TransferDuplicatePokemon(client);
-                        break;
-                    case "IV Duplicate":
-                        await TransferDuplicateIVPokemon(client);
-                        break;
-                    case "CP":
-                        await TransferAllWeakPokemon(client, ClientSettings.TransferCPThreshold);
-                        break;
-                    case "IV":
-                        await TransferAllGivenPokemons(client, pokemons, ClientSettings.TransferIVThreshold);
-                        break;
-                    default:
-                        ColoredConsoleWrite(Color.DarkGray, "Transfering pokemon disabled");
-                        break;
-                }
-
-
-                if (ClientSettings.EvolveAllGivenPokemons)
-                    await EvolveAllGivenPokemons(client, pokemons);
-                if (ClientSettings.Recycler)
-                    client.RecycleItems(client);
-
-                await Task.Delay(5000);
-                PrintLevel(client);
-                await ExecuteFarmingPokestopsAndPokemons(client);
-
-                while (ForceUnbanning)
-                    await Task.Delay(25);
-
-                // await ForceUnban(client);
-                if (!Stopping)
-                {
-                    ColoredConsoleWrite(Color.Red, $"No nearby useful locations found. Please wait 10 seconds.");
-                    await Task.Delay(10000);
-                    Execute();
-                }
-                else
-                {
-                    ConsoleClear();
-                    pokestopsOverlay.Routes.Clear();
-                    pokestopsOverlay.Markers.Clear();
-                    ColoredConsoleWrite(Color.Red, $"Bot successfully stopped.");
-                    startStopBotToolStripMenuItem.Text = "Start";
-                    Stopping = false;
-                    bot_started = false;
-                    pokeStops = null;
-                }
-            }
-            catch (TaskCanceledException) { ColoredConsoleWrite(Color.Red, "Task Canceled Exception - Restarting"); if (!Stopping) Execute(); }
-            catch (UriFormatException) { ColoredConsoleWrite(Color.Red, "System URI Format Exception - Restarting"); if (!Stopping) Execute(); }
-            catch (ArgumentOutOfRangeException) { ColoredConsoleWrite(Color.Red, "ArgumentOutOfRangeException - Restarting"); if (!Stopping) Execute(); }
-            catch (ArgumentNullException) { ColoredConsoleWrite(Color.Red, "Argument Null Refference - Restarting"); if (!Stopping) Execute(); }
-            catch (NullReferenceException) { ColoredConsoleWrite(Color.Red, "Null Refference - Restarting"); if (!Stopping) Execute(); }
-            catch (Exception ex) { ColoredConsoleWrite(Color.Red, ex.ToString()); if (!Stopping) Execute(); }
-        }
-
-        private static string CallAPI(string elem, string lat, string lon)
-        {
-
-            using (XmlReader reader = XmlReader.Create(@"http://api.geonames.org/findNearby?lat=" + lat + "&lng=" + lon + "&username=muztank"))
-            {
-                while (reader.Read())
-                {
-                    if (reader.IsStartElement())
-                    {
-                        switch (elem)
-                        {
-                            case "country":
-                                if (reader.Name == "countryName")
-                                {
-                                    return reader.ReadString();
-                                }
-                                break;
-
-                            case "place":
-                                if (reader.Name == "name")
-                                {
-                                    return reader.ReadString();
-                                }
-                                break;
-                            default:
-                                return "N/A";
-                                break;
-                        }
-                    }
-                }
-            }
-            return "Error";
-        }
-
-        private async Task ExecuteCatchAllNearbyPokemons(Client client)
-        {
-            var mapObjects = await client.GetMapObjects();
-
-            var pokemons = mapObjects.MapCells.SelectMany(i => i.CatchablePokemons);
-            var inventory2 = await client.GetInventory();
-            var pokemons2 = inventory2.InventoryDelta.InventoryItems
-                .Select(i => i.InventoryItemData?.Pokemon)
-                .Where(p => p != null && p?.PokemonId > 0)
-                .ToArray();
-
-            foreach (var pokemon in pokemons)
-            {
-                if (ForceUnbanning || Stopping)
-                    break;
-
-                FarmingPokemons = true;
-
-                await locationManager.update(pokemon.Latitude, pokemon.Longitude);
-
-                string pokemonName;
-                if (ClientSettings.Language == "german")
-                {
-                    string name_english = Convert.ToString(pokemon.PokemonId);
-                    var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
-                    var response = (HttpWebResponse)request.GetResponse();
-                    pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
-                }
-                else
-                    pokemonName = Convert.ToString(pokemon.PokemonId);
-
-                await client.UpdatePlayerLocation(pokemon.Latitude, pokemon.Longitude);
-                UpdatePlayerLocation(pokemon.Latitude, pokemon.Longitude);
-                UpdateMap();
-                var encounterPokemonResponse = await client.EncounterPokemon(pokemon.EncounterId, pokemon.SpawnpointId);
-                var pokemonCP = encounterPokemonResponse?.WildPokemon?.PokemonData?.Cp;
-                var pokemonIV = Math.Round(Perfect(encounterPokemonResponse?.WildPokemon?.PokemonData));
-                CatchPokemonResponse caughtPokemonResponse;
-                ColoredConsoleWrite(Color.Green, $"Encounter a {pokemonName} with {pokemonCP} CP and {pokemonIV}% IV");
-                do
-                {
-                    if (ClientSettings.RazzBerryMode == "cp")
-                        if (pokemonCP > ClientSettings.RazzBerrySetting)
-                            await client.UseRazzBerry(client, pokemon.EncounterId, pokemon.SpawnpointId);
-                    if (ClientSettings.RazzBerryMode == "probability")
-                        if (encounterPokemonResponse.CaptureProbability.CaptureProbability_.First() < ClientSettings.RazzBerrySetting)
-                            await client.UseRazzBerry(client, pokemon.EncounterId, pokemon.SpawnpointId);
-                    caughtPokemonResponse = await client.CatchPokemon(pokemon.EncounterId, pokemon.SpawnpointId, pokemon.Latitude, pokemon.Longitude, MiscEnums.Item.ITEM_POKE_BALL, pokemonCP); ; //note: reverted from settings because this should not be part of settings but part of logic
-                } while (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchMissed || caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchEscape);
-
-                if (caughtPokemonResponse.Status == CatchPokemonResponse.Types.CatchStatus.CatchSuccess)
-                {
-                    Color c = Color.LimeGreen;
-                    if (pokemonIV >= 80)
-                    {
-                        c = Color.Yellow;
-                    }
-                    ColoredConsoleWrite(c, $"We caught a {pokemonName} with {pokemonCP} CP and {pokemonIV}% IV");
-                    foreach (int xp in caughtPokemonResponse.Scores.Xp)
-                        TotalExperience += xp;
-                    TotalPokemon += 1;
-                }
-                else
-                    ColoredConsoleWrite(Color.Red, $"{pokemonName} with {pokemonCP} CP and {pokemonIV}% IV got away..");
-
-
-                // I believe a switch is more efficient and easier to read.
-                switch (ClientSettings.TransferType)
-                {
-                    case "Leave Strongest":
-                        await TransferAllButStrongestUnwantedPokemon(client);
-                        break;
-                    case "All":
-                        await TransferAllGivenPokemons(client, pokemons2);
-                        break;
-                    case "Duplicate":
-                        await TransferDuplicatePokemon(client);
-                        break;
-                    case "IV Duplicate":
-                        await TransferDuplicateIVPokemon(client);
-                        break;
-                    case "CP":
-                        await TransferAllWeakPokemon(client, ClientSettings.TransferCPThreshold);
-                        break;
-                    case "IV":
-                        await TransferAllGivenPokemons(client, pokemons2, ClientSettings.TransferIVThreshold);
-                        break;
-                    default:
-                        ColoredConsoleWrite(Color.DarkGray, "Transfering pokemon disabled");
-                        break;
-                }
-
-                FarmingPokemons = false;
-                await Task.Delay(3000);
-            }
-            pokemons = null;
-        }
-
-        private void UpdatePlayerLocation(double latitude, double longitude)
-        {
-            synchronizationContext.Post(new SendOrPostCallback(o =>
-            {
-                playerMarker.Position = (PointLatLng)o;
-
-                searchAreaOverlay.Polygons.Clear();
-
-            }), new PointLatLng(latitude, longitude));
-
-            ColoredConsoleWrite(Color.Gray, $"Moving player location to Lat: {latitude}, Lng: {longitude}");
-        }
-
-        private void UpdateMap()
-        {
-            synchronizationContext.Post(new SendOrPostCallback(o =>
-            {
-                pokestopsOverlay.Markers.Clear();
-                List<PointLatLng> routePoint = new List<PointLatLng>();
-                foreach (var pokeStop in pokeStops)
-                {
-                    GMarkerGoogleType type = GMarkerGoogleType.blue_small;
-                    if (pokeStop.CooldownCompleteTimestampMs > DateTime.UtcNow.ToUnixTime())
-                    {
-                        type = GMarkerGoogleType.gray_small;
-                    }
-                    var pokeStopLoc = new PointLatLng(pokeStop.Latitude, pokeStop.Longitude);
-                    var pokestopMarker = new GMarkerGoogle(pokeStopLoc, type);
-                    //pokestopMarker.ToolTipMode = MarkerTooltipMode.OnMouseOver;
-                    //pokestopMarker.ToolTip = new GMapBaloonToolTip(pokestopMarker);
-                    pokestopsOverlay.Markers.Add(pokestopMarker);
-
-                    routePoint.Add(pokeStopLoc);
-                }
-                pokestopsOverlay.Routes.Clear();
-                pokestopsOverlay.Routes.Add(new GMapRoute(routePoint, "Walking Path"));
-
-
-                pokemonsOverlay.Markers.Clear();
-                if (wildPokemons != null)
-                {
-                    foreach (var pokemon in wildPokemons)
-                    {
-                        var pokemonMarker = new GMarkerGoogle(new PointLatLng(pokemon.Latitude, pokemon.Longitude),
-                            GMarkerGoogleType.red_small);
-                        pokemonsOverlay.Markers.Add(pokemonMarker);
-                    }
-                }
-
-                searchAreaOverlay.Polygons.Clear();
-                S2GMapDrawer.DrawS2Cells(S2Helper.GetNearbyCellIds(ClientSettings.DefaultLongitude, ClientSettings.DefaultLatitude), searchAreaOverlay);
-            }), null);
-        }
-
-        private async Task ExecuteFarmingPokestopsAndPokemons(Client client)
-        {
-            var mapObjects = await client.GetMapObjects();
-
-            FortData[] rawPokeStops = mapObjects.MapCells.SelectMany(i => i.Forts).Where(i => i.Type == FortType.Checkpoint && i.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime()).ToArray();
-            if (rawPokeStops == null || rawPokeStops.Count() <= 0)
-            {
-                ColoredConsoleWrite(Color.Red, $"No PokeStops to visit here, please stop the bot and change your location.");
-                return;
-            }
-            pokeStops = rawPokeStops;
-            UpdateMap();
-            ColoredConsoleWrite(Color.Cyan, $"Finding fastest route through all PokeStops..");
-            LatLong startingLatLong = new LatLong(ClientSettings.DefaultLatitude, ClientSettings.DefaultLongitude);
-            pokeStops = RouteOptimizer.Optimize(rawPokeStops, startingLatLong, pokestopsOverlay);
-            wildPokemons = mapObjects.MapCells.SelectMany(i => i.WildPokemons);
-            if (!ForceUnbanning && !Stopping)
-                ColoredConsoleWrite(Color.Cyan, $"Visiting {pokeStops.Count()} PokeStops");
-
-            UpdateMap();
-            foreach (var pokeStop in pokeStops)
-            {
-                if (ForceUnbanning || Stopping)
-                    break;
-
-                FarmingStops = true;
-                await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
-                UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
-                UpdateMap();
-
-                var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
-                var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
-                StringWriter PokeStopOutput = new StringWriter();
-                PokeStopOutput.Write($"");
-                if (fortInfo.Name != string.Empty)
-                    PokeStopOutput.Write("PokeStop: " + fortInfo.Name);
-                if (fortSearch.ExperienceAwarded != 0)
-                    PokeStopOutput.Write($", XP: {fortSearch.ExperienceAwarded}");
-                if (fortSearch.GemsAwarded != 0)
-                    PokeStopOutput.Write($", Gems: {fortSearch.GemsAwarded}");
-                if (fortSearch.PokemonDataEgg != null)
-                    PokeStopOutput.Write($", Eggs: {fortSearch.PokemonDataEgg}");
-                if (GetFriendlyItemsString(fortSearch.ItemsAwarded) != string.Empty)
-                    PokeStopOutput.Write($", Items: {GetFriendlyItemsString(fortSearch.ItemsAwarded)} ");
-                ColoredConsoleWrite(Color.Cyan, PokeStopOutput.ToString());
-
-                if (fortSearch.ExperienceAwarded != 0)
-                    TotalExperience += (fortSearch.ExperienceAwarded);
-
-                pokeStop.CooldownCompleteTimestampMs = DateTime.UtcNow.ToUnixTime() + 300000;
-
-                if (ClientSettings.CatchPokemon)
-                    await ExecuteCatchAllNearbyPokemons(client);
-            }
-            FarmingStops = false;
-            if (!ForceUnbanning && !Stopping)
-            {
-                client.RecycleItems(client);
-                await ExecuteFarmingPokestopsAndPokemons(client);
-            }
-        }
-
-        private async Task ForceUnban(Client client)
-        {
-            if (!ForceUnbanning && !Stopping)
-            {
-                ColoredConsoleWrite(Color.LightGreen, "Waiting for last farming action to be complete...");
-                ForceUnbanning = true;
-
-                while (FarmingStops || FarmingPokemons)
-                {
-                    await Task.Delay(25);
-                }
-
-                ColoredConsoleWrite(Color.LightGreen, "Starting force unban...");
-
-                pokestopsOverlay.Routes.Clear();
-                pokestopsOverlay.Markers.Clear();
-                bool done = false;
-                foreach (var pokeStop in pokeStops)
-                {
-                    if (pokeStop.CooldownCompleteTimestampMs < DateTime.UtcNow.ToUnixTime())
-                    {
-                        await locationManager.update(pokeStop.Latitude, pokeStop.Longitude);
-                        UpdatePlayerLocation(pokeStop.Latitude, pokeStop.Longitude);
-                        UpdateMap();
-
-                        var fortInfo = await client.GetFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
-                        if (fortInfo.Name != string.Empty)
-                        {
-                            ColoredConsoleWrite(Color.LightGreen, "Chosen PokeStop " + fortInfo.Name + " for force unban");
-                            for (int i = 1; i <= 50; i++)
-                            {
-                                var fortSearch = await client.SearchFort(pokeStop.Id, pokeStop.Latitude, pokeStop.Longitude);
-                                if (fortSearch.ExperienceAwarded == 0)
-                                {
-                                    ColoredConsoleWrite(Color.LightGreen, "Attempt: " + i);
-                                }
-                                else
-                                {
-                                    ColoredConsoleWrite(Color.LightGreen, "Fuck yes, you are now unbanned! Total attempts: " + i);
-                                    done = true;
-                                    break;
-                                }
-                            }
-                            if (done)
-                                break;
-                        }
-                    }
-                }
-                if (!done)
-                    ColoredConsoleWrite(Color.LightGreen, "Force unban failed, please try again.");
-                ForceUnbanning = false;
-            }
-            else
-            {
-                ColoredConsoleWrite(Color.Red, "A action is in play... Please wait.");
-            }
-
-
-        }
-
-        private string GetFriendlyItemsString(IEnumerable<FortSearchResponse.Types.ItemAward> items)
-        {
-            var enumerable = items as IList<FortSearchResponse.Types.ItemAward> ?? items.ToList();
-
-            if (!enumerable.Any())
-                return string.Empty;
-
-            return enumerable.GroupBy(i => i.ItemId)
-                    .Select(kvp => new { ItemName = kvp.Key.ToString().Substring(4), Amount = kvp.Sum(x => x.ItemCount) })
-                    .Select(y => $"{y.Amount}x {y.ItemName}")
-                    .Aggregate((a, b) => $"{a}, {b}");
-        }
-
-
-        private async Task TransferAllButStrongestUnwantedPokemon(Client client)
-        {
-            var unwantedPokemonTypes = new List<PokemonId>();
-            for (int i = 1; i <= 151; i++)
-            {
-                unwantedPokemonTypes.Add((PokemonId)i);
-            }
-
-            var inventory = await client.GetInventory();
-            var pokemons = inventory.InventoryDelta.InventoryItems
-                .Select(i => i.InventoryItemData?.Pokemon)
-                .Where(p => p != null && p?.PokemonId > 0)
-                .ToArray();
-
-            foreach (var unwantedPokemonType in unwantedPokemonTypes)
-            {
-                var pokemonOfDesiredType = pokemons.Where(p => p.PokemonId == unwantedPokemonType)
-                    .OrderByDescending(p => p.Cp)
-                    .ToList();
-
-                var unwantedPokemon =
-                    pokemonOfDesiredType.Skip(1) // keep the strongest one for potential battle-evolving
-                        .ToList();
-
-                await TransferAllGivenPokemons(client, unwantedPokemon);
-            }
-        }
-
-        public static float Perfect(PokemonData poke)
-        {
-            return ((float)(poke.IndividualAttack + poke.IndividualDefense + poke.IndividualStamina) / (3.0f * 15.0f)) * 100.0f;
-        }
-
-        private async Task TransferAllGivenPokemons(Client client, IEnumerable<PokemonData> unwantedPokemons, float keepPerfectPokemonLimit = 80.0f)
-        {
-            foreach (var pokemon in unwantedPokemons)
-            {
-                if (Perfect(pokemon) >= keepPerfectPokemonLimit) continue;
-                ColoredConsoleWrite(Color.White, $"Pokemon {pokemon.PokemonId} with {pokemon.Cp} CP has IV percent less than {keepPerfectPokemonLimit}%");
-
-                if (pokemon.Favorite == 0)
-                {
-                    var transferPokemonResponse = await client.TransferPokemon(pokemon.Id);
-
-                    /*
-                    ReleasePokemonOutProto.Status {
-                        UNSET = 0;
-                        SUCCESS = 1;
-                        POKEMON_DEPLOYED = 2;
-                        FAILED = 3;
-                        ERROR_POKEMON_IS_EGG = 4;
-                    }*/
-                    string pokemonName;
-                    if (ClientSettings.Language == "german")
-                    {
-                        // Dont really need to print this do we? youll know if its German or not
-                        //ColoredConsoleWrite(Color.DarkCyan, "german");
-                        string name_english = Convert.ToString(pokemon.PokemonId);
-                        var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
-                        var response = (HttpWebResponse)request.GetResponse();
-                        pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
-                    }
-                    else
-                        pokemonName = Convert.ToString(pokemon.PokemonId);
-                    if (transferPokemonResponse.Status == 1)
-                    {
-                        ColoredConsoleWrite(Color.Magenta, $"Transferred {pokemonName} with {pokemon.Cp} CP");
-                    }
-                    else
-                    {
-                        var status = transferPokemonResponse.Status;
-
-                        ColoredConsoleWrite(Color.Red, $"Somehow failed to transfer {pokemonName} with {pokemon.Cp} CP. " +
-                                                 $"ReleasePokemonOutProto.Status was {status}");
-                    }
-
-                    await Task.Delay(3000);
-                }
-            }
-        }
-
-        private async Task TransferDuplicatePokemon(Client client)
-        {
-
-            //ColoredConsoleWrite(ConsoleColor.White, $"Check for duplicates");
-            var inventory = await client.GetInventory();
-            var allpokemons =
-                inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
-                    .Where(p => p != null && p?.PokemonId > 0);
-
-            var dupes = allpokemons.OrderBy(x => x.Cp).Select((x, i) => new { index = i, value = x })
-                .GroupBy(x => x.value.PokemonId)
-                .Where(x => x.Skip(1).Any());
-
-            for (var i = 0; i < dupes.Count(); i++)
-            {
-                for (var j = 0; j < dupes.ElementAt(i).Count() - 1; j++)
-                {
-                    var dubpokemon = dupes.ElementAt(i).ElementAt(j).value;
-                    if (dubpokemon.Favorite == 0)
-                    {
-                        var transfer = await client.TransferPokemon(dubpokemon.Id);
-                        string pokemonName;
-                        if (ClientSettings.Language == "german")
-                        {
-                            string name_english = Convert.ToString(dubpokemon.PokemonId);
-                            var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
-                            var response = (HttpWebResponse)request.GetResponse();
-                            pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
-                        }
-                        else
-                            pokemonName = Convert.ToString(dubpokemon.PokemonId);
-                        ColoredConsoleWrite(Color.DarkGreen,
-                            $"Transferred {pokemonName} with {dubpokemon.Cp} CP (Highest is {dupes.ElementAt(i).Last().value.Cp})");
-
-                    }
-                }
-            }
-        }
-
-        private async Task TransferDuplicateIVPokemon(Client client)
-        {
-
-            //ColoredConsoleWrite(ConsoleColor.White, $"Check for duplicates");
-            var inventory = await client.GetInventory();
-            var allpokemons =
-                inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
-                    .Where(p => p != null && p?.PokemonId > 0);
-
-            var dupes = allpokemons.OrderBy(x => Perfect(x)).Select((x, i) => new { index = i, value = x })
-                .GroupBy(x => x.value.PokemonId)
-                .Where(x => x.Skip(1).Any());
-
-            for (var i = 0; i < dupes.Count(); i++)
-            {
-                for (var j = 0; j < dupes.ElementAt(i).Count() - 1; j++)
-                {
-                    var dubpokemon = dupes.ElementAt(i).ElementAt(j).value;
-                    if (dubpokemon.Favorite == 0)
-                    {
-                        var transfer = await client.TransferPokemon(dubpokemon.Id);
-                        string pokemonName;
-                        if (ClientSettings.Language == "german")
-                        {
-                            string name_english = Convert.ToString(dubpokemon.PokemonId);
-                            var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
-                            var response = (HttpWebResponse)request.GetResponse();
-                            pokemonName = new StreamReader(response.GetResponseStream()).ReadToEnd();
-                        }
-                        else
-                            pokemonName = Convert.ToString(dubpokemon.PokemonId);
-                        ColoredConsoleWrite(Color.DarkGreen,
-                            $"Transferred {pokemonName} with {Math.Round(Perfect(dubpokemon))}% IV (Highest is {Math.Round(Perfect(dupes.ElementAt(i).Last().value))}% IV)");
-
-                    }
-                }
-            }
-        }
-
-        private async Task TransferAllWeakPokemon(Client client, int cpThreshold)
-        {
-            //ColoredConsoleWrite(ConsoleColor.White, $"Firing up the meat grinder");
-
-            PokemonId[] doNotTransfer = new[] //these will not be transferred even when below the CP threshold
-            { // DO NOT EMPTY THIS ARRAY
-                //PokemonId.Pidgey,
-                //PokemonId.Rattata,
-                //PokemonId.Weedle,
-                //PokemonId.Zubat,
-                //PokemonId.Caterpie,
-                //PokemonId.Pidgeotto,
-                //PokemonId.NidoranFemale,
-                //PokemonId.Paras,
-                //PokemonId.Venonat,
-                //PokemonId.Psyduck,
-                //PokemonId.Poliwag,
-                //PokemonId.Slowpoke,
-                //PokemonId.Drowzee,
-                //PokemonId.Gastly,
-                //PokemonId.Goldeen,
-                //PokemonId.Staryu,
-                PokemonId.Magikarp,
-                PokemonId.Eevee//,
-                //PokemonId.Dratini
-            };
-
-            var inventory = await client.GetInventory();
-            var pokemons = inventory.InventoryDelta.InventoryItems
-                                .Select(i => i.InventoryItemData?.Pokemon)
-                                .Where(p => p != null && p?.PokemonId > 0)
-                                .ToArray();
-
-            //foreach (var unwantedPokemonType in unwantedPokemonTypes)
-            {
-                List<PokemonData> pokemonToDiscard;
-                if (doNotTransfer.Count() != 0)
-                    pokemonToDiscard = pokemons.Where(p => !doNotTransfer.Contains(p.PokemonId) && p.Cp < cpThreshold).OrderByDescending(p => p.Cp).ToList();
-                else
-                    pokemonToDiscard = pokemons.Where(p => p.Cp < cpThreshold).OrderByDescending(p => p.Cp).ToList();
-
-
-                //var unwantedPokemon = pokemonOfDesiredType.Skip(1) // keep the strongest one for potential battle-evolving
-                //                                          .ToList();
-                ColoredConsoleWrite(Color.Gray, $"Grinding {pokemonToDiscard.Count} pokemon below {cpThreshold} CP.");
-                await TransferAllGivenPokemons(client, pokemonToDiscard);
-
-            }
-
-            ColoredConsoleWrite(Color.Gray, $"Finished grinding all the meat");
-        }
-
-
-
-        public async Task PrintLevel(Client client)
-        {
-            var inventory = await client.GetInventory();
-            var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
-            foreach (var v in stats)
-                if (v != null)
-                {
-                    int XpDiff = GetXpDiff(client, v.Level);
-                    if (ClientSettings.LevelOutput == "time")
-                        ColoredConsoleWrite(Color.Yellow, $"Current Level: " + v.Level + " (" + (v.Experience - XpDiff) + "/" + (v.NextLevelXp - XpDiff) + ")");
-                    else if (ClientSettings.LevelOutput == "levelup")
-                        if (Currentlevel != v.Level)
-                        {
-                            Currentlevel = v.Level;
-                            ColoredConsoleWrite(Color.Magenta, $"Current Level: " + v.Level + ". XP needed for next Level: " + (v.NextLevelXp - v.Experience));
-                        }
-                }
-            if (ClientSettings.LevelOutput == "levelup")
-                await Task.Delay(1000);
-            else
-                await Task.Delay(ClientSettings.LevelTimeInterval * 1000);
-            PrintLevel(client);
-        }
-
-        // Pulled from NecronomiconCoding
-        public static string _getSessionRuntimeInTimeFormat()
-        {
-            return (DateTime.Now - InitSessionDateTime).ToString(@"dd\.hh\:mm\:ss");
-        }
-
-        public async Task updateUserStatusBar(Client client)
-        {
-            var inventory = await client.GetInventory();
-            var stats = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PlayerStats).ToArray();
-            var profile = await client.GetProfile();
-            Int16 hoursLeft = 0; Int16 minutesLeft = 0; Int32 secondsLeft = 0; double xpSec = 0;
-            foreach (var v in stats)
-                if (v != null)
-                {
-                    int XpDiff = GetXpDiff(client, v.Level);
-                    //Calculating the exp needed to level up
-                    Single expNextLvl = (v.NextLevelXp - v.Experience);
-                    //Calculating the exp made per second
-                    xpSec = (Math.Round(TotalExperience / GetRuntime()) / 60) / 60;
-                    //Calculating the seconds left to level up
-                    if (xpSec != 0)
-                        secondsLeft = Convert.ToInt32((expNextLvl / xpSec));
-                    //formatting data to make an output like DateFormat
-                    while (secondsLeft > 60)
-                    {
-                        secondsLeft -= 60;
-                        if (minutesLeft < 60)
-                        {
-                            minutesLeft++;
-                        }
-                        else
-                        {
-                            minutesLeft = 0;
-                            hoursLeft++;
-                        }
-                    }
-                    SetStatusText(string.Format(profile.Profile.Username + " | Level: {0:0} - ({2:0} / {3:0}) | Runtime {1} | Stardust: {4:0}", v.Level, _getSessionRuntimeInTimeFormat(), (v.Experience - v.PrevLevelXp - XpDiff), (v.NextLevelXp - v.PrevLevelXp - XpDiff), profile.Profile.Currency.ToArray()[1].Amount) + " | XP/Hour: " + Math.Round(TotalExperience / GetRuntime()) + " | Pokemon/Hour: " + Math.Round(TotalPokemon / GetRuntime()) + " | NextLevel in: " + hoursLeft + ":" + minutesLeft + ":" + secondsLeft);
-                }
-            await Task.Delay(1000);
-            updateUserStatusBar(client);
-        }
-
-        public static int GetXpDiff(Client client, int Level)
-        {
-            switch (Level)
-            {
-                case 1:
-                    return 0;
-                case 2:
-                    return 1000;
-                case 3:
-                    return 2000;
-                case 4:
-                    return 3000;
-                case 5:
-                    return 4000;
-                case 6:
-                    return 5000;
-                case 7:
-                    return 6000;
-                case 8:
-                    return 7000;
-                case 9:
-                    return 8000;
-                case 10:
-                    return 9000;
-                case 11:
-                    return 10000;
-                case 12:
-                    return 10000;
-                case 13:
-                    return 10000;
-                case 14:
-                    return 10000;
-                case 15:
-                    return 15000;
-                case 16:
-                    return 20000;
-                case 17:
-                    return 20000;
-                case 18:
-                    return 20000;
-                case 19:
-                    return 25000;
-                case 20:
-                    return 25000;
-                case 21:
-                    return 50000;
-                case 22:
-                    return 75000;
-                case 23:
-                    return 100000;
-                case 24:
-                    return 125000;
-                case 25:
-                    return 150000;
-                case 26:
-                    return 190000;
-                case 27:
-                    return 200000;
-                case 28:
-                    return 250000;
-                case 29:
-                    return 300000;
-                case 30:
-                    return 350000;
-                case 31:
-                    return 500000;
-                case 32:
-                    return 500000;
-                case 33:
-                    return 750000;
-                case 34:
-                    return 1000000;
-                case 35:
-                    return 1250000;
-                case 36:
-                    return 1500000;
-                case 37:
-                    return 2000000;
-                case 38:
-                    return 2500000;
-                case 39:
-                    return 1000000;
-                case 40:
-                    return 1000000;
-            }
-            return 0;
-        }
-
-        public void confirmBotStopped()
-        {
-            //ConsoleClear(); // dont really want the console to be wipped on bot stop, unnecessary
-            ColoredConsoleWrite(Color.Red, $"Bot successfully stopped.");
-            startStopBotToolStripMenuItem.Text = "▶ Start Bot";
-            Stopping = false;
-            bot_started = false;
-        }
-
-        private void logTextBox_TextChanged(object sender, EventArgs e)
-        {
-            logTextBox.SelectionStart = logTextBox.Text.Length;
-            logTextBox.ScrollToCaret();
-        }
-
-        private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            SettingsForm settingsForm = new SettingsForm();
-            settingsForm.ShowDialog();
-        }
-
-        private static bool bot_started = false;
-        private void startStopBotToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            if (!bot_started)
-            {
-                bot_started = true;
-                startStopBotToolStripMenuItem.Text = "■ Stop Bot";
-                Task.Run(() =>
-                {
-                    try
-                    {
-                        //ColoredConsoleWrite(ConsoleColor.White, "Coded by Ferox - edited by NecronomiconCoding");
-                        CheckVersion();
-                        Execute();
-                    }
-                    catch (PtcOfflineException)
-                    {
-                        ColoredConsoleWrite(Color.Red, "PTC Servers are probably down OR your credentials are wrong. Try google");
-                    }
-                    catch (Exception ex)
-                    {
-                        ColoredConsoleWrite(Color.Red, $"Unhandled exception: {ex}");
-                    }
-                });
-            }
-            else
-            {
-                if (!ForceUnbanning)
-                {
-                    Stopping = true;
-                    ColoredConsoleWrite(Color.Red, $"Stopping the bot.. Waiting for the last action to be complete.");
-                }
-                else
-                {
-                    ColoredConsoleWrite(Color.Red, $"An action is in play, please wait until it's done.");
-                }
-            }
-        }
-
-        private void Client_OnConsoleWrite(ConsoleColor color, string message)
-        {
-            Color c = Color.White;
-            switch (color)
-            {
-                case ConsoleColor.Green:
-                    c = Color.Green;
-                    break;
-                case ConsoleColor.DarkCyan:
-                    c = Color.DarkCyan;
-                    break;
-            }
-            ColoredConsoleWrite(c, message);
-        }
-
-        private void showAllToolStripMenuItem3_Click(object sender, EventArgs e)
-        {
-        }
-
-        private void statsToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            // todo: add player stats later
-        }
-
-        private async void useLuckyEggToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            if (client != null)
-            {
-                try
-                {
-                    IEnumerable<Item> myItems = await client.GetItems(client);
-                    IEnumerable<Item> LuckyEggs = myItems.Where(i => (ItemId)i.Item_ == ItemId.ItemLuckyEgg);
-                    Item LuckyEgg = LuckyEggs.FirstOrDefault();
-                    if (LuckyEgg != null)
-                    {
-                        var useItemXpBoostRequest = await client.UseItemXpBoost(ItemId.ItemLuckyEgg);
-                        ColoredConsoleWrite(Color.Green, $"Using a Lucky Egg, we have {LuckyEgg.Count} left.");
-                        ColoredConsoleWrite(Color.Yellow, $"Lucky Egg Valid until: {DateTime.Now.AddMinutes(30).ToString()}");
-
-                        var stripItem = sender as ToolStripMenuItem;
-                        stripItem.Enabled = false;
-                        await Task.Delay(30000);
-                        stripItem.Enabled = true;
-                    }
-                    else
-                    {
-                        ColoredConsoleWrite(Color.Red, $"You don't have any Lucky Egg to use.");
-                    }
-                }
-                catch (Exception ex)
-                {
-                    ColoredConsoleWrite(Color.Red, $"Unhandled exception in using lucky egg: {ex}");
-                }
-            }
-            else
-            {
-                ColoredConsoleWrite(Color.Red, "Please start the bot before trying to use a lucky egg.");
-            }
-        }
-
-        private async void forceUnbanToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            if (client != null && pokeStops != null)
-            {
-                if (ForceUnbanning)
-                {
-                    ColoredConsoleWrite(Color.Red, "A force unban attempt is in action... Please wait.");
-                }
-                else
-                {
-                    await ForceUnban(client);
-                }
-            }
-            else
-            {
-                ColoredConsoleWrite(Color.Red, "Please start the bot and wait for map to load before trying to force unban");
-            }
-        }
-
-        private void showAllToolStripMenuItem2_Click(object sender, EventArgs e)
-        {
-
-        }
-
-        private void todoToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            SettingsForm settingsForm = new SettingsForm();
-            settingsForm.ShowDialog();
-        }
-
-        private void pokemonToolStripMenuItem2_Click(object sender, EventArgs e)
-        {
-            var pForm = new PokeUi();
-            pForm.Show();
-        }
-
-
-
-        #region POKEMON LIST
-        private IEnumerable<PokemonFamily> families;
-
-        private void InitializePokemonForm()
-        {
-            objectListView1.ButtonClick += PokemonListButton_Click;
-
-            pkmnName.ImageGetter = delegate (object rowObject)
-            {
-                PokemonData pokemon = (PokemonData)rowObject;
-
-                String key = pokemon.PokemonId.ToString();
-                if (!objectListView1.SmallImageList.Images.ContainsKey(key))
-                {
-                    Image img = GetPokemonImage((int)pokemon.PokemonId);
-                    objectListView1.SmallImageList.Images.Add(key, img);
-                }
-                return key;
-            };
-
-            objectListView1.CellToolTipShowing += delegate (object sender, ToolTipShowingEventArgs args)
-            {
-                PokemonData pokemon = (PokemonData)args.Model;
-
-                var family = families
-                        .Where(i => (int)i.FamilyId <= (int)pokemon.PokemonId)
-                        .First();
-                args.Text = $"You have {family.Candy} {((PokemonId)((int)family.FamilyId)).ToString()} Candy";
-            };
-        }
-
-        private Image GetPokemonImage(int pokemonId)
-        {
-            return (Image)Properties.Resources.ResourceManager.GetObject("Pokemon_" + pokemonId);
-        }
-
-        private async void ReloadPokemonList()
-        {
-            button1.Enabled = false;
-            objectListView1.Enabled = false;
-
-            client2 = new Client(ClientSettings);
-            try
-            {
-                await client2.Login();
-                await client2.SetServer();
-                var inventory = await client2.GetInventory();
-                var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0).OrderByDescending(key => key.Cp);
-                families = inventory.InventoryDelta.InventoryItems
-                   .Select(i => i.InventoryItemData?.PokemonFamily)
-                   .Where(p => p != null && (int)p?.FamilyId > 0)
-                   .OrderByDescending(p => (int)p.FamilyId);
-
-                var prevTopItem = objectListView1.TopItemIndex;
-                objectListView1.SetObjects(pokemons);
-                objectListView1.TopItemIndex = prevTopItem;
-            }
-            catch (Exception ex) { ColoredConsoleWrite(Color.Red, ex.ToString()); client2 = null; }
-
-            button1.Enabled = true;
-            objectListView1.Enabled = true;
-        }
-
-        private void PokemonListButton_Click(object sender, CellClickEventArgs e)
-        {
-            try
-            {
-                PokemonData pokemon = (PokemonData)e.Model;
-                if (e.ColumnIndex == 6)
-                {
-                    TransferPokemon(pokemon);
-                }
-                else if (e.ColumnIndex == 7)
-                {
-                    PowerUpPokemon(pokemon);
-                }
-                else if (e.ColumnIndex == 8)
-                {
-                    EvolvePokemon(pokemon);
-                }
-            }
-            catch (Exception ex) { ColoredConsoleWrite(Color.Red, ex.ToString()); client2 = null; ReloadPokemonList(); }
-        }
-
-        private async void TransferPokemon(PokemonData pokemon)
-        {
-            if (MessageBox.Show($"Are you sure you want to transfer {pokemon.PokemonId.ToString()} with {pokemon.Cp} CP?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
-            {
-                var transferPokemonResponse = await client2.TransferPokemon(pokemon.Id);
-
-                if (transferPokemonResponse.Status == 1)
-                {
-                    ColoredConsoleWrite(Color.Magenta, $"{pokemon.PokemonId} was transferred. {transferPokemonResponse.CandyAwarded} candy awarded");
-                    ReloadPokemonList();
-                }
-                else
-                {
-                    ColoredConsoleWrite(Color.Magenta, $"{pokemon.PokemonId} could not be transferred");
-                }
-            }
-        }
-
-        private async void PowerUpPokemon(PokemonData pokemon)
-        {
-            var evolvePokemonResponse = await client2.PowerUp(pokemon.Id);
-
-            if (evolvePokemonResponse.Result == 1)
-            {
-                ColoredConsoleWrite(Color.Magenta, $"{pokemon.PokemonId} successfully upgraded.");
-                ReloadPokemonList();
-            }
-            else
-            {
-                ColoredConsoleWrite(Color.Magenta, $"{pokemon.PokemonId} could not be upgraded");
-            }
-        }
-
-        private async void EvolvePokemon(PokemonData pokemon)
-        {
-            var evolvePokemonResponse = await client2.EvolvePokemon(pokemon.Id);
-
-            if (evolvePokemonResponse.Result == 1)
-            {
-                ColoredConsoleWrite(Color.Magenta, $"{pokemon.PokemonId} successfully evolved into {evolvePokemonResponse.EvolvedPokemon.PokemonType}\n{evolvePokemonResponse.ExpAwarded} experience awarded\n{evolvePokemonResponse.CandyAwarded} candy awarded");
-                ReloadPokemonList();
-            }
-            else
-            {
-                ColoredConsoleWrite(Color.Magenta, $"{pokemon.PokemonId} could not be evolved");
-            }
-        }
-
-        private void button1_Click(object sender, EventArgs e)
-        {
-            ReloadPokemonList();
-        }
-        #endregion
-
-        private void pokeToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-
-        }
-
-        private void objectListView1_SelectedIndexChanged(object sender, EventArgs e)
-        {
-
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/MainForm.resx b/PokemonGo/RocketAPI/Window/MainForm.resx
deleted file mode 100644
index 1821e28..0000000
--- a/PokemonGo/RocketAPI/Window/MainForm.resx
+++ /dev/null
@@ -1,1560 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>132, 18</value>
-  </metadata>
-  <metadata name="largePokemonImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>357, 18</value>
-  </metadata>
-  <metadata name="smallPokemonImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>247, 18</value>
-  </metadata>
-  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>58</value>
-  </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
-        IACoJQAA7h4AAICAAAABACAAKAgBAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA
-        AAAAAAAABAQEAAAAAAE8PDwcU1NTM1NTUzRTU1M0U1NTNFNTUzRTU1M0U1NTNFNTUzRTU1M0U1NTMzw8
-        PBwAAAACBAQEAAAAAAGLi4tQurq6yMXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXF
-        xeS6urrIjIyMUQAAAAF+fn4kycnJ0dzd3P/e3t7/3t7e/9/f3//f39//4ODg/+Dg4P/f4N//39/f/97e
-        3v/e3t7/3N3c/8nJydKAgIAlsbGxRtna2fHf4N//4OHg/+Hh4f/i4uL/4+Pj/+Pk4//j5OP/4+Pj/+Li
-        4v/h4uH/4OHg/9/g3//Z2tnysbGxR7a2tknc3dzz4uPi/+Pk4//l5eX/5ubm/+nq6f/n5+f/5ufm/+rq
-        6v/m5+b/5eXl/+Tk5P/i4+L/3N3c87a3tku3uLdJ39/f8+Xm5f/n5+f/6Ono/+jo6P+oqKj/WFhY/1JS
-        Uv+YmJj/5OXk/+np6f/n5+f/5ubm/9/g3/O4uLhLt7e3SeDg4PPn5+f/6Ono/+zt7P+lpaX/JCQk/2Vl
-        Zf9vb2//JSUl/4qKiv/r7Ov/6Ono/+fn5//g4ODzuLi4Sz4+PElNTUvzUFBO/1FRT/9TU1H/IyMi/3Fy
-        cv/q6ur/7e7t/5CQkP8dHRz/UFBO/1FRT/9QUE7/TU1L8z8/PksAABVJAAAa8wAAHf8AAB7/AAAf/wAA
-        DP+Kion/+fn5//r6+v+pqan/BgYP/wAAHv8AAB7/AAAd/wAAGvMCAhdLBgZ0SQgIj/MJCZv/Cgqh/woK
-        qP8FBWj/LS0v/6mppv+0tLL/Pz8+/wQEUv8KCqf/Cgqi/wkJnP8JCZDzDQ14SwgIhEkLC6DzDAys/w0N
-        sf8ODrb/Dg6z/wcHZf8KCir/DAwo/wYGVv8NDa3/Dg63/w0Nsv8MDKz/Cwuh9BAQiEsKCo9JDQ2r8w8P
-        tP8PD7j/EBC7/xERv/8REcH/EBC0/xAQsv8REcD/ERHA/xAQu/8PD7j/Dw+0/w4Oq/QSEpJLDg6bSBER
-        tvISEr3/ExO//xQUwv8UFMT/FRXF/xUVx/8VFcj/FRXG/xQUxP8UFML/ExPA/xISvf8REbbzFBSeSh4e
-        qDMYGMHlFRXF/xYWx/8WFsj/FxfK/xcXy/8YGMv/GBjL/xcXy/8XF8r/FhbJ/xYWx/8VFcX/GBjB5h8f
-        qDQ5OZAGKSnIgh4ezfMaGs7+GhrO/hoazv4bG8/+GxvP/hsbz/4bG8/+GhrO/hoazv4aGs7+Hh7N9Ckp
-        yIM5OZEGSUnJAE9Pvgs+PtFPNTXUdTIy03YyMtN1MjLTdTIy03UyMtN1MjLTdTIy03UyMtN2NTXUdT4+
-        0U9PT74LSEjJAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAIABAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA
-        AAYAAAAGAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAPDw8QWlpaUoCAgImEhISVhISElYSE
-        hJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYGBgYlbW1tTEBAQEC8v
-        LwAAAAAANDQ0ABYWFhGQkJCOx8fH8NXV1f/X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY
-        2P/X19f/19fX/9fX1//X19f/19fX/9bW1v/IyMjwkZGRjxkZGRI2NjYA////AIuLi2HR0dH129vb/9zc
-        3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/97e3v/e3t7/3t7e/97e3v/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc
-        3P/b29v/0dHR9YyMjGP///8AAAAACL+/v6jc3Nz/3d7d/97f3v/f39//3+Df/+Dg4P/g4eD/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4OHg/+Dg4P/f4N//39/f/97f3v/d3t3/3Nzc/8DAwKkAAAAILy8vDc3N
-        zbve3t7/4ODg/+Dh4P/h4eH/4uLi/+Li4v/j4+P/4+Tj/+Tk5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eHh/+Dh4P/g4OD/3t7e/83Nzb03NzcOMDAwDc7Ozrzg4OD/4eLh/+Lj4v/j4+P/5OTk/+Xl
-        5f/l5uX/5ubm/+fn5//p6en/6enp/+fn5//m5ub/5ebl/+Xl5f/k5OT/4+Tj/+Pj4//i4uL/4ODg/87O
-        zr49PT0PMDAwDc/Pz7vi4uL/4+Tj/+Tl5P/l5eX/5ubm/+fn5//o6Oj/6+vr/+Lj4v/MzMz/yMjI/93e
-        3f/r6+v/6Ono/+fn5//m5+b/5ebl/+Xl5f/k5OT/4uLi/8/Pz748PDwPLy8vDdDR0Lvk5OT/5ubm/+fn
-        5//n6Of/6Ono/+nq6f/r6+v/r6+v/0ZGRv8YGBj/FBQU/zU1Nf+UlJT/5ubm/+rq6v/o6ej/6Ojo/+fn
-        5//m5ub/5OTk/9DR0L48PDwPLi4uDdPT07vo6Oj/6urq/+vr6//r7Ov/7O3s//Dw8P+srKz/FxcX/xAQ
-        EP9MTEz/VVVV/x0dHf8ICAj/hoaG/+3u7f/t7e3/7Ozs/+vr6//q6ur/6Ojo/9PT0747OzsPJiYmDbW1
-        tbvIycj/ysvK/8zMzP/Nzc3/zs/O/8fHx/86Ojr/ExMT/6Ghof/f39//4uLi/7y8vP8uLi7/Ghoa/7O0
-        s//Q0ND/zc3N/8zMzP/Ly8v/ycnJ/7W1tb4zMzMPBAQEDRYWFrsZGRn/Ghoa/xoaGv8bGxr/Gxsb/xgY
-        GP8AAAD/XF1c/+fn5//s7Oz/7e3t/+vr6/+MjIz/AgIC/xQUFP8bGxv/Gxsb/xoaGv8aGhr/GRkZ/xYW
-        Fr4KCgoPAAAADQAAALsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/cHBw/+/v7//19fX/9fb1//Ly
-        8v+hoaH/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAb4FBQUPAQEaDQQEXbsFBWj/BgZu/wYG
-        cf8GBnP/BgZ2/wYGcf8AABf/NjY1/9ra2v/3+Pf/+Pj4/+vr6/9eXl3/AAAH/wYGY/8HB3f/BgZ0/wYG
-        cf8GBm7/BQVo/wcHX74QECYPAgInDQgIjrsJCZ7/Cgqn/wsLq/8LC6//Cwuz/wwMuP8HB2T/AgIE/0tL
-        Sv+pqan/srKy/2ZmZv8JCQf/BARC/wsLsv8LC7T/Cwuw/wsLrP8KCqf/CQmf/wsLkL8YGDkPAgIqDQkJ
-        krsLC6L/DAyp/wwMrf8NDbD/DQ2z/w4Ot/8NDbP/Bwdb/wEBC/8FBQP/BwcF/wEBBf8FBUH/DQ2m/w4O
-        uf8NDbT/DQ2x/wwMrv8MDKr/Cgqi/w0NlL8YGDwPAwMsDQoKmrsMDKj/DQ2v/w4Osv8ODrT/Dw+3/w8P
-        uv8PD73/EBC9/w0Nmf8KCm//CQlp/wwMjv8QELj/EBC+/w8Puv8PD7j/Dg61/w4Osv8NDa//DAyo/w4O
-        m78ZGj8PAwMvDQwMorsODq//Dw+1/w8Pt/8QELn/EBC7/xERvv8REcD/ERHB/xISxf8SEsf/EhLH/xIS
-        xf8REcL/ERHA/xERvv8QELz/EBC6/w8PuP8PD7X/DQ2v/xAQo78bG0IPBAQyDQ4OqrsQELf/EhK7/xIS
-        vf8TE7//ExPA/xMTwv8UFMP/FBTE/xQUxf8VFcb/FRXG/xUVxf8UFMX/FBTD/xQUwv8TE8D/ExO//xIS
-        vf8SErv/EBC3/xISrL8cHEYPDAwzCxUVs7cTE73/FBTB/xUVw/8VFcP/FhbF/xYWxv8WFsf/FxfI/xcX
-        yP8XF8n/FxfJ/xcXyf8XF8j/FhbH/xYWxv8WFsX/FRXE/xUVw/8UFMH/ExO9/xYWtLkWFj0MCQkAAiIi
-        uo0WFsT/FRXG/xYWyP8WFsn/FxfK/xcXyv8XF8v/GBjM/xgYzP8YGM3/GBjN/xgYzP8YGMz/GBjL/xcX
-        y/8XF8r/FhbJ/xYWyP8VFcb/FhbE/yIiu48LCwACPDzgADU1tDAmJsvXFxfK/xYWy/8XF8z/FxfM/xcX
-        zf8XF83/FxfO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfN/xcXzf8XF8z/FxfM/xYWy/8XF8r/JSXL2DU1
-        tDE8POIAQUFyAAAA/wBDQ8U7NDTSsioq0+QlJdLpJCTR6SQk0ekkJNHpJCTS6SQk0ukkJNLpJCTS6SQk
-        0ukkJNLpJCTS6SQk0ekkJNHpJSXS6Skp0+Q0NNKzQ0PGPAAA/wA+PnMAAAAAAJSUVQA3N/8AZ2e4DVpa
-        0ytQUNQyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyUFDUMlpa
-        0ytmZrkNMzP/AI+PXQAAAAAA8AAPAMAAAwCAAAEAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAMAAAwDgAAcAKAAAACAA
-        AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
-        AA4JCQksFRUVPxYWFkIWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYW
-        FkEWFhZBFhYWQRYWFkEWFhZBFhYWQhUVFT8JCQksAAAADgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAMhISEzdHR0kqamptC1tbXitbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1
-        teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW14qenp9B1dXWTIiIiNAAAAAMAAAAAAAAAAAAA
-        AAAAAAAAMTExN6Kior/U1NT82tra/9ra2v/a2tr/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9TU1Pyjo6PAMzMzOAAA
-        AAAAAAAAGhoaAAAAABOenp6l2NjY/tra2v/b29v/3Nvc/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zb3P/b29v/2tra/9jY
-        2P+goKCmAAAAFB0dHQDDw8MAY2NjP87Ozujb29v/3Nzc/93e3f/e3t7/3t7e/97f3v/f39//39/f/9/g
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/f39//39/f/9/f3//e3t7/3t7e/93e
-        3f/c3Nz/29vb/8/Pz+lmZmZAysrKAP///wCcnJxg29vb+9zc3P/e3t7/39/f/9/f3//g4OD/4ODg/+Dh
-        4P/h4eH/4eLh/+Li4v/i4uL/4uLi/+Lj4v/i4+L/4uLi/+Li4v/i4uL/4eLh/+Hh4f/h4eH/4ODg/+Dg
-        4P/f39//39/f/97e3v/c3Nz/29vb+52dnWL///8A////AKenp2jc3dz+3t7e/+Dg4P/g4eD/4eHh/+Hi
-        4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OXk/+Tl5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eLh/+Hh4f/g4eD/4ODg/97e3v/c3Nz+p6ena////wD///8Ap6enaN7e3v7f4N//4eHh/+Li
-        4v/i4+L/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5+b/5ufm/+bm5v/m5ub/5ubm/+Xm
-        5f/l5eX/5OXk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/3+Df/93e3f6oqKhs////AP///wCnp6do39/f/uDh
-        4P/i4+L/4+Tj/+Tk5P/k5eT/5eXl/+bm5v/m5+b/5+fn/+fo5//o6ej/6+zr/+3t7f/t7e3/7Ozs/+nq
-        6f/n6Of/5+fn/+bn5v/m5ub/5ebl/+Xl5f/k5OT/5OTk/+Pj4//g4eD/3t/e/qmpqWz///8A////AKeo
-        p2jg4OD+4uLi/+Tl5P/l5eX/5ubm/+bm5v/n5+f/5+jn/+jo6P/p6en/7Ozs/+Dg4P+1tbX/j4+P/4iI
-        iP+np6f/1dXV/+zs7P/p6un/6Ojo/+jo6P/n5+f/5ufm/+bm5v/l5eX/5OXk/+Li4v/g4OD+qampbP//
-        /wD///8AqKioaOHi4f7k5OT/5ubm/+bn5v/n5+f/6Ojo/+jp6P/p6en/6urq/+3t7f+3t7f/Q0ND/wsL
-        C/8AAAD/AAAA/wUFBf8qKir/kpKS/+fo5//r6+v/6erp/+np6f/o6Oj/5+jn/+fn5//m5ub/5OTk/+Hi
-        4f6qqqps////AP///wCoqKho4+Pj/uXl5f/n5+f/6Ojo/+np6f/p6un/6urq/+vr6//u7+7/tLS0/x8f
-        H/8AAAD/CwsL/y8vL/83Nzf/FRUV/wAAAP8JCQn/g4OD/+zs7P/r6+v/6urq/+nq6f/p6en/6Ojo/+fo
-        5//l5uX/4+Pj/qqqqmz///8A////AKqqqmjo6Oj+6+zr/+3t7f/u7u7/7u/u/+/v7//w8PD/8vLy/+Dg
-        4P87Ozv/AAAA/ykpKf+ioqL/09PT/9fX1/+6urr/T09P/wAAAP8UFBT/ubm5//T09P/w8PD/7/Dv/+/v
-        7//u7u7/7e3t/+vs6//o6Oj+rKysbP///wD+/v4AZWVlaIuLi/6Oj47/kZGR/5KSkv+Tk5P/lJSU/5SV
-        lP+YmJj/cHBw/wUFBf8QEBD/q6ur/+Xl5f/l5eX/5ubm/+Pk4//R0tH/NjY2/wAAAP9KSkr/l5eX/5WV
-        lf+UlJT/k5OT/5KSkv+RkZH/j4+P/4uLi/5nZ2dt////AAAAAAAAAABoAAAA/gAAAP8AAAD/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8AAAD/AAAA/0FBQf/g4OD/6urq/+7u7v/u7u7/7O3s/+jo6P+BgYH/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/gICAm0AAAAAAAAAAAAAAGgAAAD+AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/UlJS/+fo5//w8fD/9PX0//T09P/09PT/7O3s/5WV
-        lf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AgICbQAAAAAEBFUAAQEiaAIC
-        LP4CAi7/AgIw/wMDMf8DAzH/AwMy/wMDM/8DAzX/AgIk/wAAAP8uLi7/3Nzc//Dw8P/4+fj/+fr5//Ly
-        8v/u7u7/Z2dn/wAAAP8BARb/AwM0/wMDM/8DAzL/AwMy/wMDMf8CAjD/AgIu/wICLP4GBiVtAwNYAA0N
-        /wAFBXFoBweS/ggImf8ICKD/CQmk/wkJpv8JCan/CQms/woKsf8JCZb/AQET/wMDAv98fHz/7O3s//P0
-        8//09PT/8vPy/6+vr/8WFhb/AAAA/wYGbv8KCrP/CQmt/wkJqv8JCaf/CQmk/wgIof8ICJr/CAiS/g8P
-        dm0KCv8AEBD/AAYGdGgICJb+CQmd/woKpP8LC6f/Cwuq/wsLrf8LC7D/DAyy/wwMtv8GBl3/AAAB/woK
-        Cf9ZWVn/o6Oj/6ysrP93d3f/Ghoa/wAAAP8EBDL/Cwur/wwMtP8MDLD/Cwut/wsLq/8LC6j/Cgqk/wkJ
-        nf8JCZb+EBB5bQ4O/wASEv8ABwd5aAoKm/4LC6L/Cwuo/wwMq/8MDK7/DAyw/w0Ns/8NDbX/DQ24/w0N
-        sv8HB1P/AQEG/wAAAP8DAwL/BAQC/wAAAP8AAAH/BAQw/wwMnv8NDbr/DQ22/w0Ns/8MDLH/DAyu/wwM
-        rP8MDKn/Cgqi/woKnP4REX9tEBD/ABQU/wAICH5oCwuh/gwMpv8MDKz/DQ2v/w4Osf8NDbP/Dg61/w8P
-        uP8ODrr/Dw+9/w8Puv8LC4P/BgZA/wMDHv8CAhr/BAQy/wkJa/8PD6//Dw++/w4Ouv8PD7j/Dg62/w4O
-        tP8NDbH/DQ2v/w0Nrf8MDKf/Cwuh/hIShG0SEv8AFxf/AAkJg2gMDKf+DQ2r/w4Osf8ODrP/Dw+1/w8P
-        tv8PD7j/EBC6/xAQvP8QEL7/ERHA/xERxP8REcD/EBCz/xAQsf8REbz/ERHE/xERwf8QEL7/EBC8/xAQ
-        u/8PD7n/Dw+3/w8Ptf8PD7P/Dg6x/w0Nq/8NDaf+FBSIbRQU/wAZGf8ACgqJaA0Nrf4ODrD/Dw+1/w8P
-        t/8QELn/EBC6/xAQvP8QEL3/ERG//xERwP8REcH/EhLC/xISw/8SEsT/EhLF/xISw/8SEsL/ERHC/xER
-        wf8REb//ERG+/xAQvP8QELv/EBC5/w8PuP8PD7X/Dg6x/w4Orf4VFY5tFhb/ABwc/wALC45oDw+z/hAQ
-        tv8REbr/ERG8/xISvf8SEr7/EhK//xMTwf8TE8L/ExPD/xMTxP8UFMX/FBTF/xQUxv8UFMb/FBTF/xQU
-        xf8TE8T/ExPD/xMTwv8TE8H/EhLA/xISvv8SEr3/ERG8/xERuv8QELb/EBC0/hcXlG0aGv8AIiL/AA4O
-        lWcREbn9ExO7/xQUv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xYWxf8WFsb/FhbG/xYWx/8WFsf/FxfI/xcX
-        yP8XF8f/FhbH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FRXC/xQUwf8UFMD/FBS//xMTu/8SErn+FhaZaiAg
-        /wAzM/8AHR2dWRYWwPoTE7//FRXD/xUVxf8VFcX/FRXG/xYWxv8WFsf/FhbI/xcXyf8XF8n/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcXyf8WFsj/FhbH/xYWx/8VFcb/FRXF/xUVxf8VFcP/ExO//xYW
-        v/ocHJ1aMjL/ADU1wAApKY0sISHG3xQUw/8WFsf/FhbJ/xcXyf8XF8r/FxfK/xcXy/8YGMv/GBjM/xgY
-        zP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGMz/GBjM/xgYy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xYW
-        x/8UFMP/ISHG4Coqjy41NcIAHx9GABkZAAQ0NMSCHh7M/BQUyP8WFsv/FxfM/xcXzP8XF8z/FxfN/xcX
-        zf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfN/xcXzf8XF8z/FxfM/xcX
-        zP8WFsv/FBTI/x4ezPw0NMSEHR0ABSEhSwAAAAAASUm3AENDkRM+Ps6UKCjS9Rsbzv8ZGc3/GRnN/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc3/GRnN/xsbzv8oKNL1PT3OlkJClBNISLkAAAAAAAAAAAAAAAAAWFi1AFVVlwtQUMtSRUXXnjw8
-        2bk2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY2
-        1rs2Nta7NjbWuzY21rs8PNm5RUXXn09PzFNVVZgMV1e2AAAAAAAAAAAAAAAAAAAAAAAAAAAA1NQAAFNT
-        /wCUlIYEgoKoCX19rQp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8
-        rAp8fKwKfHysCnx8rAp8fKwKfX2tCoKCqAmTk4YETU3/AMrKAAAAAAAAAAAAAAAAAAD/////4AAAB8AA
-        AAPAAAADgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
-        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPgAAAH+AAAHygA
-        AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAJAAAAEAAAABRAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFEAAABAAAAAJAAAAAwAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAACMbGxtiXl5eopGRkcqlpaXapqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qWlpdqSkpLLX19fox0d
-        HWMAAAAkAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAMVJSUpCzs7Pg19fX/Nzc
-        3P/b29v/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb
-        2//c3Nz/2NjY/LW1teFUVFSRAAAAMQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAnaWlpl8zM
-        zPHb29v/19fX/9fX1//Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9jY2P/X19f/19fX/9vb2//Ozs7xbW1tmAAAACgAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AA9TU1N0y8vL7dra2v/Y2Nj/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/2tra/9jY2P/a2tr/zMzM7lZWVnYAAAAQAAAAAAAA
-        AAAAAAAAAAAAAA4ODjGwsLDF3d3d/9nZ2f/b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/d3d3/3d3d/97e
-        3v/e3t7/3t7e/97e3v/e3t7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/e
-        3//e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9vb2//Z2dn/3d3d/7Ky
-        sscQEBAyAAAAAAAAAAAAAAAAAAAAA1paWl3V1dXv2tra/9vb2//c3dz/3d7d/97e3v/e3t7/3t7e/97f
-        3v/f39//39/f/9/f3//f4N//4ODg/+Dg4P/g4OD/4ODg/+Dh4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4eD/4OHg/+Dg4P/g4OD/4ODg/9/g3//f39//39/f/9/f3//e397/3t7e/97e3v/e3t7/3d7d/9zd
-        3P/b29v/2tra/9bW1vBeXl5fAAAAAwAAAAAAAAAAAAAABpSUlIHf39/92tra/9zd3P/e3t7/39/f/9/f
-        3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4uH/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Hh4f/g4eD/4ODg/+Dg4P/g4OD/3+Df/9/f
-        3//f39//39/f/97e3v/c3dz/2tra/9/f3/2WlpaCAAAABgAAAAAAAAAAAAAAB6mpqY3g4OD/29zb/93e
-        3f/f39//3+Df/9/g3//g4OD/4OHg/+Dh4P/h4eH/4eHh/+Hi4f/i4uL/4uLi/+Lj4v/i4+L/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pk4//j5OP/4+Tj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uLi/+Li4v/h4uH/4eLh/+Hh
-        4f/g4eD/4OHg/+Dg4P/f4N//3+Df/9/f3//e3t7/29zb/9/f3/+oqaiQAAAABwEBAQAAAAAAAAAAB6io
-        qJDf4N//3d3d/9/f3//g4OD/4OHg/+Dh4P/h4eH/4eLh/+Hi4f/i4uL/4uPi/+Lj4v/j4+P/4+Tj/+Tk
-        5P/k5OT/5OTk/+Tl5P/k5eT/5OXk/+Xl5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tk5P/k5OT/4+Tj/+Pj
-        4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4eH/4OHg/+Dg4P/f39//3d3d/9/f3/+qqqqVAAAACAMD
-        AwAAAAAAAAAAB6ipqJDh4eH/3t7e/+Dg4P/h4eH/4eLh/+Li4v/i4+L/4uPi/+Pj4//j5OP/4+Tj/+Tk
-        5P/k5eT/5eXl/+Xl5f/l5uX/5ebl/+bm5v/m5ub/5ubm/+bm5v/m5+b/5ubm/+bm5v/m5ub/5ebl/+Xm
-        5f/l5uX/5eXl/+Tl5P/k5OT/5OTk/+Pk4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hh4f/g4OD/3t7e/+Dg
-        4P+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDh4eH/39/f/+Dh4P/i4uL/4uPi/+Pj4//j4+P/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/m5+b/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tl5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Li
-        4v/g4eD/39/f/+Hh4f+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDi4uL/3+Df/+Hh4f/i4+L/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/n5+f/5+fn/+fo5//o6Oj/6Ojo/+jo6P/o6ej/6urq/+zs
-        7P/s7Oz/6+vr/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Pj4//h4eH/3+Df/+Li4v+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDj4+P/4eHh/+Lj
-        4v/k5OT/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5+b/5+fn/+fo5//o6Oj/6Ojo/+np6f/p6en/6urq/+7u
-        7v/o6ej/1dXV/8DBwP+6urr/y8vL/+Dg4P/u7u7/7Ozs/+np6f/p6en/6Ono/+jo6P/o6Oj/5+fn/+fn
-        5//m5ub/5ubm/+Xm5f/l5eX/5eXl/+Tk5P/i4+L/4eHh/+Pj4/+rq6uVAAAACAMDAwAAAAAAAAAAB6mp
-        qZDk5OT/4uLi/+Pk4//l5eX/5ubm/+bm5v/m5+b/5+fn/+fn5//o6Oj/6Ojo/+jp6P/p6en/6erp/+nq
-        6f/t7u3/4uPi/52dnf9QUFD/IyMj/xISEv8NDQ3/Ghoa/zY2Nv92dnb/x8fH/+7u7v/q6+r/6erp/+np
-        6f/p6en/6Ojo/+jo6P/n6Of/5+fn/+bn5v/m5ub/5ubm/+Xl5f/k5OT/4uLi/+Tk5P+srKyVAAAACAMD
-        AwAAAAAAAAAAB6qqqpDl5eX/4uPi/+Tl5P/m5ub/5ufm/+fn5//n6Of/6Ojo/+jp6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+/v7//Jycn/S0tL/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Hh4e/5KS
-        kv/q6ur/6+zr/+rr6v/q6ur/6erp/+np6f/o6ej/6Ojo/+fo5//n5+f/5ufm/+bm5v/l5eX/4+Pj/+Tl
-        5P+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDm5ub/4+Tj/+Xm5f/n5+f/5+jn/+jo6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+rr6v/r6+v/7+/v/8bGxv8wMDD/AAAA/wAAAP8AAAD/AQEB/wcHB/8JCQn/AwMD/wAA
-        AP8AAAD/AAAA/wsLC/+CgoL/7Ozs/+zs7P/r6+v/6uvq/+rq6v/p6un/6enp/+jp6P/o6Oj/5+jn/+fn
-        5//m5ub/5OTk/+Xm5f+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDn5+f/5OXk/+bn5v/o6Oj/6Ono/+np
-        6f/p6un/6urq/+rr6v/r6+v/6+vr/+vs6//u7u7/39/f/0NDQ/8AAAD/AAAA/wAAAP8lJSX/c3Nz/6io
-        qP+ysrL/kZGR/0pKSv8JCQn/AAAA/wAAAP8NDQ3/o6Oj//Dx8P/s7Oz/6+zr/+vr6//q6+r/6urq/+nq
-        6f/p6en/6Ono/+jo6P/n5+f/5eXl/+bm5v+srKyVAAAACAMDAwAAAAAAAAAAB6urq5Dq6ur/6Ono/+rr
-        6v/r7Ov/7Ozs/+3t7f/t7e3/7e7t/+7u7v/u7u7/7+/v/+/v7//09PT/jIyM/wMDA/8AAAD/AAAA/0hI
-        SP/IyMj/5ubm/+Dg4P/f39//4+Pj/+Dg4P+NjY3/EhIS/wAAAP8AAAD/NDQ0/97e3v/x8fH/7+/v/+7v
-        7v/u7u7/7u7u/+3t7f/t7e3/7Ozs/+vs6//r6+v/6enp/+rq6v+tra2VAAAACAMDAwAAAAAAAAAAB4yM
-        jJDCw8L/w8PD/8XGxf/Hx8f/yMjI/8nJyf/Jycn/ysrK/8vLy//Ly8v/zMzM/83Nzf/Dw8P/MzMz/wAA
-        AP8AAAD/Ly8v/8/Pz//i4+L/29vb/+Pj4//l5eX/39/f/9vc2//o6Oj/gYGB/wMDA/8AAAD/BQUF/4yM
-        jP/Q0ND/zMzM/8zMzP/Ly8v/ysrK/8nKyf/Jycn/yMjI/8fHx//Gxsb/w8PD/8LCwv+Ojo6WAAAACAMD
-        AwAAAAAAAAAABw8PD5AUFBT/FRUV/xYWFv8XFxf/GBgY/xgYGP8YGBj/GRkZ/xkZGf8ZGRn/Ghoa/xoa
-        Gv8XFxf/AwMD/wAAAP8DAwP/kZGR/+nq6f/e3t7/7Ozs/+zs7P/r6+v/7e3t/+Xm5f/g4OD/2dnZ/y0s
-        Lf8AAAD/AAAA/w4ODv8bGxv/Ghoa/xoaGv8ZGRn/GRkZ/xgYGP8YGBj/GBgY/xcXF/8WFhb/FRUV/xQU
-        FP8RERGWAAAACAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/xcXF/+Tk5P/q6ur/7/Dv/+7u7v/u7+7/7u7u//Dw
-        8P/g4eD/6+vr/2FhYf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8CAgKWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8dHR3/0dHR/+Xl5f/w8PD/8/Tz//Pz
-        8//z8/P/8/Pz//T09P/l5eX/7u7u/3h4eP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/xcXF/+vr
-        6//u7u7/+Pn4//f39//39/f/9/j3//f39//m5ub/8PDw/1tbW/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwIC
-        L5ADAzz/AwM8/wMDP/8DA0H/AwNC/wQEQv8EBEP/BARE/wQERf8EBEX/BARG/wQER/8EBED/AQEL/wAA
-        AP8BAQH/iIiI//X19f/o6Oj/9fX1//v7+//7/Pv/+fr5/+3t7f/t7u3/2NjY/yYmJv8AAAD/AAAA/wIC
-        KP8EBEj/BARG/wQERv8EBEX/BARE/wQEQ/8EBEP/BARC/wMDQf8DAz//AwM9/wMDPP8HBzKWCAgACAIC
-        AgAAAAAAAAAABwUFeJAHB5f/Bwea/wgIoP8ICKT/CQmn/wkJqv8JCav/CQmt/wkJr/8JCbH/Cgqz/woK
-        tv8KCrX/AwM7/wAAAP8AAAD/JiYm/83Nzf/29vb/6urq/+3t7f/u7+7/6uvq/+7v7v/y8vL/cXFx/wEB
-        Af8AAAD/AQEK/wgIjf8KCrn/Cgq0/wkJsv8JCbD/CQmu/wkJrP8JCar/CQmo/wgIpf8ICKH/Bwea/wcH
-        mP8QEH2XEREACAQEBAAAAAAAAAAABwYGdJAHB5P/CAiV/wgInP8JCaD/CQmk/woKpf8KCqf/Cgqp/woK
-        q/8KCq3/Cgqv/wsLsf8LC7j/CAiE/wEBCf8AAAD/AAAA/zk5Of+/v7//9fX1//f39//29/b/9/j3/+Tl
-        5P95eXn/CQkJ/wAAAP8AAAD/BAQ9/wsLs/8LC7L/Cgqw/woKrv8KCqz/Cgqq/woKqP8KCqb/CQmk/wkJ
-        of8ICJz/CAiW/wgIlP8REXqXEhIACAQEBAAAAAAAAAAABwcHeJAJCZf/CQmZ/woKn/8KCqT/Cwun/wsL
-        qP8LC6r/Cwus/wsLrv8MDLD/DAyx/wwMs/8MDLX/DQ24/wYGT/8AAAD/AAAA/wAAAP8XFxf/XFxc/4+P
-        j/+Wlpb/enp6/zQ0NP8FBQX/AAAA/wAAAP8CAhj/CwuY/w0Nuf8MDLT/DAyy/wwMsP8LC67/Cwut/wsL
-        q/8LC6n/Cwun/wsLpf8KCqD/CQma/wkJmP8SEn6XEREACAQEBAAAAAAAAAAABwcHfJAJCZv/Cgqd/woK
-        o/8LC6f/DAyq/wwMq/8MDK3/DAyu/wwMsP8NDbL/DQ2z/w0Ntf8NDbf/DQ26/w0Nsf8FBUX/AAAC/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICGf8LC4b/Dg69/w0Nt/8NDbb/DQ20/w0N
-        sv8MDLH/DAyv/wwMrf8MDKz/DAyq/wsLp/8KCqP/Cgqd/woKnP8TE4GXEREACAQEBAAAAAAAAAAABwgI
-        f5AKCp//Cwug/wsLpf8MDKr/DAys/w0Nrf8NDa//DQ2w/w0Nsv8NDbT/Dg61/w4Ot/8ODrj/Dg66/w8P
-        vf8PD7f/CAhi/wICE/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAT/BAQ0/w0NmP8PD8D/Dg66/w4O
-        uf8ODrf/Dg62/w4OtP8NDbP/DQ2x/w0Nr/8NDa7/DQ2s/wwMqv8LC6b/Cwug/woKoP8TE4WXEREACAQE
-        BAAAAAAAAAAABwgIgpALC6P/DAyj/wwMqP8NDaz/DQ2v/w4OsP8ODrH/Dg6y/w4OtP8ODrX/Dw+3/w8P
-        uP8PD7r/Dw+7/w8PvP8QEL7/EBDB/w4Oov8JCWL/BQU3/wICGv8CAhj/AwMn/wcHTP8LC4T/EBC4/xAQ
-        wf8PD7z/Dw+7/w8Puv8PD7n/Dw+3/w4Otv8ODrX/Dg6z/w4Osv8ODrD/DQ2v/w0Nrf8MDKn/DAyj/wsL
-        o/8UFIiXEREACAQEBAAAAAAAAAAABwkJhpAMDKf/DAyn/w0NrP8NDa//Dg6x/w4Osv8PD7T/Dw+1/w8P
-        tv8PD7f/Dw+5/xAQuv8QELv/EBC8/xAQvf8QEL7/ERG//xERw/8REcb/ERG//xAQtP8QELP/EBC5/xER
-        xP8REcX/ERHB/xERv/8QEL7/EBC9/xAQvP8QELr/EBC5/w8PuP8PD7f/Dw+1/w8PtP8PD7P/Dg6y/w0N
-        sP8NDaz/DAyn/wwMp/8VFYuXEBEACAQEBAAAAAAAAAAABwoKipAMDKz/DQ2r/w4Or/8ODrP/Dw+0/w8P
-        tv8QELf/EBC4/xAQuf8QELr/EBC7/xERvP8REb3/ERG+/xERv/8REcD/EhLB/xISwv8REcL/EhLD/xIS
-        xP8SEsT/EhLD/xISwv8SEsL/EhLB/xERwP8REcD/ERG//xERvv8REb3/EBC7/xAQuv8QELn/EBC4/xAQ
-        t/8PD7b/Dw+1/w4Os/8ODrD/DQ2r/w0NrP8WFo+XEBEACAQEBAAAAAAAAAAABwoKjZANDbD/DQ2u/w4O
-        sv8PD7X/Dw+3/w8PuP8QELn/EBC6/xAQu/8QELz/EBC9/xERvv8REb//ERHA/xERwf8REcH/ERHC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLD/xISw/8SEsP/ERHC/xERwv8REcH/ERHA/xERv/8REb7/EBC9/xAQ
-        vP8QELv/EBC6/xAQuf8PD7j/Dw+3/w8Ptv8ODrL/DQ2u/w0NsP8XF5OXEREACAQEBAAAAAAAAAAABwsL
-        kZAODrX/Dw+z/xAQtv8QELn/EBC7/xAQu/8REbz/ERG9/xERvv8REb//ERG//xISwf8SEsH/EhLC/xIS
-        w/8SEsP/ExPE/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPE/xISxP8SEsP/EhLC/xIS
-        wf8SEsH/ERHA/xERv/8REb7/ERG9/xERvf8QELz/EBC7/xAQuf8QELb/Dw+z/w4Otf8YGJeXEREACAQE
-        BAAAAAAAAAAABw0NlI8QELj/ERG2/xISuf8TE7z/ExO9/xMTvv8UFL//FBS//xQUwP8UFMH/FBTB/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbF/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8VFcX/FRXE/xUVw/8VFcP/FBTC/xQUwf8UFMD/FBTA/xQUv/8TE77/ExO+/xMTvP8SErn/ERG2/xER
-        uP8aGpuXEBAACAUFBQAAAAAAAAAABg8Pmo0SErz/EhK5/xMTvf8UFL//FBTA/xQUwf8UFMH/FBTC/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbG/xYWxv8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbH/xYWx/8WFsb/FhbG/xUVxf8VFcX/FRXE/xUVw/8VFcP/FRXC/xQUwf8UFMH/FBTB/xQU
-        v/8TE73/EhK5/xISvP8XF56SBQUABwMDAwAAAAAAAAAAAxwcn4MXF8L/EhK8/xQUwP8UFML/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbI/xYWyP8XF8n/FxfJ/xcXyf8XF8r/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8n/FxfJ/xcXyf8WFsj/FhbI/xYWx/8WFsf/FhbG/xYWxv8VFcX/FRXF/xUV
-        xP8VFcT/FRXE/xQUwv8UFMD/EhK8/xYWwv8aGp+EAAAABAAAAAAAAAAAAAAAACkpk18eHsn3ExO//xQU
-        wv8VFcX/FhbG/xYWx/8WFsf/FhbH/xYWyP8WFsj/FxfJ/xcXyf8XF8n/FxfK/xcXyv8XF8v/GBjL/xgY
-        y/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYy/8YGMv/GBjL/xcXy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xcX
-        yP8WFsj/FhbH/xYWx/8WFsf/FhbG/xUVxf8UFML/ExO+/x4eyfgpKZViAAAAAAAAAAAAAAAAenr/ACMj
-        XycsLMvSFRXE/xQUxP8VFcf/FhbJ/xcXyf8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8YGMz/GBjM/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
-        zP8YGMz/FxfL/xcXy/8XF8r/FxfK/xcXyv8XF8n/FhbJ/xUVx/8UFMT/FRXE/ywsy9QkJGQpeXn/AAAA
-        AAAAAAAADQ0IAAAAAAU5Obh1JyfT+RMTxf8VFcj/FhbK/xYWy/8WFsv/FxfM/xcXzP8XF8z/FxfM/xcX
-        zP8XF83/FxfN/xcXzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8XF83/FxfN/xcXzf8XF83/FxfM/xcXzP8XF8z/FxfM/xYWy/8WFsv/FhbK/xUVyP8TE8X/JibS+jo6
-        uXkAAAAGERERAAAAAAAAAAAAAAAAAO3t/wAxMV8XQ0PNoicn0/0VFcn/FhbK/xcXzP8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GRnO/xkZz/8ZGc//GRnO/xkZzv8ZGc7/GRnO/xkZ
-        z/8ZGc//GRnO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8XF8z/FhbK/xUV
-        yf8nJ9P+QkLOpDExYxj8/P8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AQkKEHE1N0Zg1Ndr0Hx/P/xgY
-        zP8XF8z/FxfM/xcXzP8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcX
-        zv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfM/xcX
-        zP8YGMz/Hx/P/zU12fRNTdGaQ0OIHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3fSAERE
-        bQ5ZWcRXUVHasURE3uI6Ot7xMjLZ8zAw2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMwMNjzMjLY8zo63/FDQ97jUFDasllZxVlDQ24PdnbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAC0tHAAEBAAAUVFkDGhotylnZ8o4ZGTNOmNjzTtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7ZGTNOmdnyzhoaLgqUFBmDAcHAAAqKh0AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAD///////8AAP8AAAAA/wAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAAAAAD
-        AADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAA
-        AAAABwAA8AAAAAAPAAD4AAAAAB8AAP4AAAAAfwAA////////AAAoAAAAgAAAAAABAAABACAAAAAAAAAA
-        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAAEQAAABYAAAAWAAAAGAAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGAAAABcAAAAWAAAAEQAA
-        AAwAAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJQAA
-        ADAAAAA4AAAAQAAAAEYAAABHAAAASAAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEgAAABHAAAARgAAAEAAAAA4AAAAMAAAACUAAAAZAAAAEQAAAAgAAAADAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAADAAAACQAAABQAAAAjAAAANAAAAEUAAABWAAAAZQAAAHIAAAB6AAAAgAAAAIMAAACEAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhAAAAIMAAACAAAAAegAA
-        AHIAAABlAAAAVwAAAEYAAAA1AAAAJAAAABQAAAAKAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABIAAAAjAAAAOAAAAFEAAABpAAAAfgAA
-        AI8AAACcAAAApQAAAKsAAACwAAAAswAAALMAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAswAAALAAAACsAAAApQAAAJwAAACQAAAAfwAAAGoAAABSAAAAOQAA
-        ACMAAAASAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
-        AAwAAAAaAAAAMgAAAFAAAABtAAAAiAAAAJwMDAyyWFhY0pWVleHY2Njz3Nzc8/7+/v7/////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////////////////////9zc
-        3PPc3Nzzmpqa41paWtIQEBCzAAAAngAAAIgAAABtAAAAUAAAADMAAAAbAAAADAAAAAMAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAIwAAAEAAAABiAAAAgwAAAJ43NzfAqKio5v39
-        /fz//////////+7u7v/s7Oz/1tbW/9XV1f/V1dX/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/V1dX/7Ozs/+zs7P////////////39/fyxsbHoPT09xAAA
-        AJ4AAACEAAAAYwAAAEAAAAAjAAAADwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEAAA
-        ACYAAABJAAAAbwAAAJIqKiq6t7e36v//////////2tra/9PT0//T09P/1NTU/9TU1P/U1NT/1NTU/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1NTU/9TU
-        1P/U1NT/1NTU/9PT0//T09P/2tra////////////vr6+7i4uLrwAAACUAAAAcQAAAEoAAAAnAAAAEQAA
-        AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAA8AAAAnAAAATAAAAHcAAACcdXV11P39/f3/////1NTU/9TU
-        1P/V1dX/1dXV/9bW1v/W1tb/1tbW/9bW1v/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9bW1v/W1tb/1tbW/9XV1f/V1dX/1NTU/9TU
-        1P///////v7+/n19fdcAAACcAAAAdwAAAE0AAAAnAAAAEAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAANAAAAJQAA
-        AEsAAAB4BAQEn6KiouD/////6urq/9TU1P/V1dX/1dXV/9bW1v/W1tb/19fX/9fX1//X19f/19fX/9fX
-        1//Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9fX
-        1//X19f/19fX/9fX1//X19f/1tbW/9bW1v/V1dX/1dXV/9TU1P/l5eX//////66uruUKCgqhAAAAeQAA
-        AEwAAAAmAAAADQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAB4AAABFAAAAcxcXF6TT09Pv/////9fX1//V1dX/1dXV/9bW
-        1v/W1tb/19fX/9fX1//X19f/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9bW
-        1v/W1tb/1dXV/9XV1f/U1NT//////9fX1+4eHh6nAAAAdAAAAEYAAAAfAAAACgAAAAEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAXAAAAOQAA
-        AGkEBASYzMzM7P/////U1NT/1dXV/9XV1f/W1tb/19fX/9fX1//Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2NjY/9jY2P/Y2Nj/19fX/9fX1//W1tb/1dXV/9XV1f/U1NT//////9fX
-        1+4KCgqaAAAAawAAADkAAAAXAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAACAAAADgAAACoAAABZAAAAjKWlpd3/////1dXV/9bW1v/X19f/19fX/9jY
-        2P/Z2dn/2dnZ/9ra2v/a2tr/2tra/9ra2v/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra
-        2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/V1dX//////6+vr+EAAACNAAAAWwAAACsAAAAOAAAAAgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAbAAAARAAA
-        AHl3d3fM/////9jY2P/W1tb/19fX/9jY2P/Y2Nj/2dnZ/9nZ2f/a2tr/2tra/9ra2v/b29v/29vb/9vb
-        2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/29vb/9vb2//b29v/29vb/9vb2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/Y2Nj/19fX/9bW
-        1v/V1dX//////39/f9EAAAB6AAAARgAAABwAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAADgAAAC4AAABfKSkpof39/fzs7Oz/1tbW/9fX1//X19f/2NjY/9nZ
-        2f/Z2dn/2tra/9ra2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9vb
-        2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/o6Oj//f39/TQ0NKkAAABiAAAALwAA
-        AA4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAYAAAAQgAA
-        AHq2trbh/////9bW1v/W1tb/19fX/9jY2P/Z2dn/2dnZ/9ra2v/a2tr/29vb/9vb2//c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/9jY
-        2P/X19f/1tbW/9bW1v//////w8PD5wAAAHsAAABDAAAAGQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAACYAAABWNzc3ov7+/v7Z2dn/19fX/9jY2P/Z2dn/2tra/9ra
-        2v/b29v/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb2//a2tr/2tra/9nZ2f/Y2Nj/19fX/9bW1v//////Pj4+pwAA
-        AFgAAAAnAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAANAAA
-        AGqpqanY/////9fX1//Y2Nj/2dnZ/9nZ2f/a2tr/29vb/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb
-        2//a2tr/2dnZ/9nZ2f/Y2Nj/19fX//////+xsbHcAAAAawAAADUAAAARAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABBBgYGfvv7+/nh4eH/19fX/9jY2P/Z2dn/2tra/9vb
-        2//b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/93d3f/d3d3/3d3d/9zc3P/c3Nz/29vb/9vb2//a2tr/2dnZ/9jY2P/X19f/4ODg//z8
-        /PgSEhKCAAAAQgAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAA
-        AE5XWVep/////9fY1//Y2dj/2drZ/9nb2f/a29r/29zb/9zd3P/c3dz/3d7d/93e3f/d3t3/3t/e/97f
-        3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3+Df/9/g3//f4N//3+Df/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g
-        3//e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/93e3f/d3t3/3d7d/9zd
-        3P/c3dz/29zb/9rb2v/Z29n/2drZ/9jZ2P/X2Nf//////2RkZLEAAABOAAAAHwAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAV5ubm83/////2NjY/9nZ2f/a2tr/29vb/9zc
-        3P/c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//3t7e/97e3v/e3t7/3d3d/93d3f/c3Nz/3Nzc/9vb2//a2tr/2dnZ/9jY
-        2P//////o6Oj0gAAAFcAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ACoAAABezs7O5P/////Y2Nj/2dnZ/9ra2v/b29v/3Nzc/9zc3P/d3d3/3t7e/97e3v/e3t7/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3t7e/97e
-        3v/e3t7/3d3d/93d3f/c3Nz/29vb/9ra2v/Z2dn/2dnZ//39/f/U1NTnAAAAXgAAACoAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAAGL09PTx7e3t/9nZ2f/a2tr/29vb/9vb
-        2//c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/d3d3/3d3d/9zc3P/b29v/29vb/9ra
-        2v/Z2dn/6Ojo//f39/QAAABkAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAuAAAAZPz8/Pji4+L/2drZ/9rb2v/b3Nv/293b/9zd3P/d3t3/3d7d/97f3v/e397/3uDe/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//4ODg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4eHh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uLi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Pj4//j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Pj/+Pj4//i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4eH/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4OD/3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/97g
-        3v/e397/3t/e/93e3f/d3t3/3N3c/9zd3P/b3Nv/2tva/9na2f/f4N///f39/AAAAGUAAAAwAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAABm/v7+/t3d3f/a2tr/29vb/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9/f3//f39//39/f/97e3v/d3d3/3d3d/9zc
-        3P/b29v/2tra/9nZ2f//////BwcHbAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGb/////29vb/9ra2v/b29v/3Nzc/93d3f/e3t7/3t7e/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/39/f/9/f3//f39//3t7e/97e3v/d3d3/3Nzc/9vb2//a2tr/2tra//////8hISF2AAAAMQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////c3dz/29zb/9vd
-        2//c3dz/3d7d/97f3v/e397/3+Df/9/g3//f4N//4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Tk5P/k5OT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OTk/+Tk5P/j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Pj/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/f4N//3+Df/9/g3//e397/3t/e/93e
-        3f/c3dz/3N3c/9vc2//a29r//////yEhIXYAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////93d3f/c3Nz/3d3d/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9vb2///////ISEhdgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3d3d/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/g4OD/39/f/9/f
-        3//e3t7/3d3d/93d3f/c3Nz/29vb//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////d3t3/3N3c/93e3f/d393/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4+Pj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5ub/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm5f/l5uX/5ebl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j4+P/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4OHg/+Dh4P/f4N//3+Df/97f3v/d393/3d7d/9zd3P/b3Nv//////yEh
-        IXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97e
-        3v/d3d3/3t7e/9/f3//f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Dg
-        4P/g4OD/39/f/9/f3//e3t7/3d3d/9zc3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3t7e/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Hh4f/h4eH/4ODg/+Dg4P/f39//39/f/97e3v/d3d3/3Nzc////
-        //8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///e3t7/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Hh
-        4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/c3Nz//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97f3v/d3t3/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Lj4v/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/l5eX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ubm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo
-        5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xl5f/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4uPi/+Lj4v/h4uH/4eLh/+Dh4P/g4eD/3+Df/9/g3//e397/3d7d/9ze
-        3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////39/f/97e3v/f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Li
-        4v/i4uL/4eHh/+Hh4f/g4OD/4ODg/9/f3//e3t7/3t7e//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////f39//3t7e/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/g4OD/39/f/97e
-        3v/e3t7//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////9/h3//e397/3+Df/+Dh4P/g4uD/4eLh/+Hj4f/i4+L/4uPi/+Pk4//k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6Oj/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5eXl/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/i4+L/4uPi/+Hj4f/h4uH/4OLg/+Dh4P/f4N//3uDe/97f3v//////ISEhdgAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4eHh/9/f3//g4OD/4eHh/+Li
-        4v/i4uL/4+Pj/+Pj4//j4+P/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//v7+//+fn5//////////////////////////////////////////////////z8/P/w8PD/6+vr/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg
-        4P/g4OD/39/f//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ//////h4eH/39/f/+Dg4P/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Pj4//l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6+vr//Dw8P/9/f3///////b29v/BwcH/kJCQ/35+fv9OTk7/Pz8//wsL
-        C/87Ozv/Pz8//35+fv9+fn7/uLi4/+3t7f////////////Pz8//r6+v/6urq/+rq6v/q6ur/6urq/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/+Dg4P/f39///////yEhIXYAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Hi4f/f4d//4OHg/+Hi
-        4f/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/n5+f/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6+zr//P08///////7+/v/7Gx
-        sf9dXV3/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZG
-        Rv+goKD/4+Pj///////3+Pf/7e7t/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+np
-        6f/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fn5//m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/k5eT/4+Tj/+Pk4//i4+L/4uPi/+Hi
-        4f/g4eD/4OHg/9/g3///////ISIhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGf/////4uLi/+Hh4f/h4eH/4uLi/+Pj4//j4+P/5OTk/+Tk5P/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
-        6v/r6+v/6+vr//Hx8f//////6urq/4WFhf8LCwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/XV1d/9XV1f//////9PT0/+zs
-        7P/r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+Xl5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4ODg//////8iIiJ2AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////i4uL/4eHh/+Hh
-        4f/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6+vr/+zs7P/4+Pj/+vr6/56env8LCwv/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/29vb//v7+///////+/v7//r6+v/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/k5OT/4+Pj/+Pj
-        4//i4uL/4eHh/+Hh4f/g4OD//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////+Lj4v/h4uH/4eLh/+Lj4v/j5OP/4+Tj/+Tl5P/l5eX/5ebl/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+rr6v/q6+r/6uvq/+rr6v/q6+r/6+vr/+vr
-        6//v7+///////+bm5v8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoa
-        Gv/Kysr///////Dx8P/r6+v/6+vr/+rr6v/q6+r/6uvq/+rr6v/q6+r/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xl5f/j5OP/4+Tj/+Lj4v/h4+H/4eLh/+Dh4P//////IiIidgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4+Pj/+Li
-        4v/i4uL/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/8PDw///////Kysr/Dw8P/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+jo6P///////Pz8//r6+v/6+vr/+vr
-        6//r6+v/6+vr/+vr6//q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5eXl/+Tk
-        5P/k5OT/4+Pj/+Pj4//i4uL/4eHh//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////j4+P/4uLi/+Li4v/j4+P/5OTk/+Tk5P/l5eX/5eXl/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np
-        6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v
-        7///////urq6/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP+BgYH///////Ly8v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/l5eX/5OTk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH//////yIi
-        InYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Pk
-        4//i4+L/4uTi/+Pk4//k5eT/5OXk/+Xm5f/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp
-        6P/o6ej/6Ono/+jp6P/o6ej/6enp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6uvq/+rr
-        6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//v7+///////8PDw/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+MjIz///////Dy
-        8P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6enp/+jp6P/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//m5+b/5ufm/+bn
-        5v/k5eT/5OXk/+Pk4//j5OP/4uPi/+Hi4f//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5OTk/+Pj4//k5OT/5OTk/+Xl5f/l5eX/5ubm/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/7e3t////
-        ///R0dH/CwsL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+np6f//////+/v7//s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/4uLi////
-        //8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///k5OT/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr
-        6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/29vb/8fHx/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/2ZmZv+VlZX/uLi4/7i4uP+4uLj/qKio/3V1
-        df8bGxv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcH
-        B//V1dX//f39/+3t7f/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5eXl/+Xl5f/k5OT/5OTk/+Pj4//i4uL//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Tl5P/j5OP/5OXk/+Tl5P/l5uX/5ebl/+fo
-        5//n6Of/5+jn/+jp6P/o6ej/6Ono/+jp6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6uvq/+rr
-        6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt7P/s7ez/7/Dv////
-        //9vb2//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/RkZG/8fH
-        x//5+fn//////////////////v7+///////////////////////T09P/dXV1/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ywsLP/4+Pj/8/Tz/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+np6f/o6ej/6Ono/+jp6P/n6Of/5+jn/+fo5//m5+b/5ebl/+Tl5P/k5eT/4+Tj/+Lj
-        4v//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////5eXl/+Tk5P/l5eX/5eXl/+bm5v/m5ub/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs
-        7P/s7Oz/7Ozs/+3t7f/t7e3/7e3t/+3t7f/+/v7/zMzM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/Jycn/8PDw//+/v7/+/v7/+np6f/k5OT/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/j4+P/5+fn//b29v/+/v7/3Nzc/0pKSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/5SUlP//////7+/v/+3t7f/t7e3/7e3t/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+fn5//m5ub/5eXl/+Xl5f/k5OT/4+Pj//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////l5eX/5OTk/+Xl5f/l5eX/5ubm/+bm
-        5v/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//r6+v/6+vr/+vr6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7e3t/+3t7f/t7e3/8fHx////
-        //84ODj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZGRv/u7u7//v7+/+jo
-        6P/j4+P/4eHh/+Dg4P/e3t7/3d3d/9zc3P/c3Nz/3d3d/9/f3//g4OD/4uLi/+bm5v/39/f/+vr6/4WF
-        hf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BwcH/+rq6v/29vb/7e3t/+3t
-        7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Tk
-        5P/j4+P//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////+Xn5f/k5eT/5ebl/+Xm5f/m5+b/5ufm/+jp6P/o6ej/6Ono/+nq6f/p6un/6erp/+nq
-        6f/q6ur/6uvq/+rr6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt
-        7P/s7ez/7O3s/+3t7f/t7e3/7e7t/+3u7f/+//7/xMTE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP9jY2P/+vr6//X19f/m5ub/4uLi/9/f3//c3Nz/2dnZ/9XV1f/T09P/09PT/9PT
-        0//V1dX/2NjY/9vb2//f39//4eHh/+Tk5P/v7+///v7+/6qqqv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/jo6O///////u7+7/7e7t/+3t7f/t7e3/7O3s/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+rq6v/p6un/6erp/+nq
-        6f/o6uj/6Ono/+jp6P/n6ef/5ufm/+Xm5f/l5uX/5OXk/+Pl4///////JSUleQAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5+fn/+Xl5f/m5ub/5ubm/+fn
-        5//p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+zs
-        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/u7u7/7+/v////
-        //9UVFT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/OTk5//T09P/z8/P/5OTk/+Hh
-        4f/e3t7/2dnZ/9TU1P/Pz8//y8vL/8jIyP/R0dH/y8vL/8rKyv/Nzc3/0tLS/9jY2P/d3d3/4ODg/+Tk
-        5P/s7Oz//v7+/3x8fP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/+Pj4//Pz
-        8//u7u7/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/o6Oj/5ubm/+bm
-        5v/l5eX/5eXl//////8lJSV5AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ///////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////6Ojo/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wgICP/k5OT/+vz6/+bm5v/i4+L/3t7e/9fX1//Q0dD/zM3M/+Lj4v/29vb///////v7
-        +//+/v7/+vr6/+fn5//P0M//zc7N/9XV1f/c3dz/4uPi/+Tl5P/x8fH/+vr6/z09Pf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+4uLj/////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////ygoKHkAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnbGxs/1VVVf9YWFj/W1tb/15e
-        Xv9hYWH/Y2Nj/2ZmZv9paWn/ampq/2xsbP9tbW3/b29v/3BwcP9wcHD/cXFx/3Jycv9zc3P/c3Nz/3R0
-        dP91dXX/dnZ2/3d3d/93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/35+fv9/f3//gICA/4GB
-        gf9SUlL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5eX//7+/v/p6en/5eXl/9/f
-        3//Y2Nj/zs7O/9nZ2f/8/Pz/8/Pz/+vr6//o6Oj/6Ojo/+jo6P/q6ur/8fHx///////k5OT/zc3N/9bW
-        1v/d3d3/4+Pj/+fn5//+/v7/1tbW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zQ0
-        NP+BgYH/gICA/39/f/9+fn7/fn5+/319ff98fHz/e3t7/3p6ev95eXn/eHh4/3d3d/93d3f/dnZ2/3V1
-        df90dHT/c3Nz/3Nzc/9ycnL/cXFx/3BwcP9wcHD/bm5u/2xsbP9ra2v/aWlp/2dnZ/9kZGT/YWFh/19f
-        X/9bW1v/WVlZ/1VVVf9sbGz/FRUVeQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xYWFv/z8/P/8/Pz/+fn5//h4uH/2tra/9HR0f/e397//v7+/+3t7f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6+vr//f39//s7Oz/zc7N/9fY1//g4eD/5ufm/+vs6//+/v7/VlZW/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAh5AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ioqK//7+/v/q6ur/5eXl/9/f
-        3//V1dX/1dXV//7+/v/t7e3/6urq/+rq6v/q6ur/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/7Ozs//r6
-        +v/h4eH/0tLS/9zc3P/k5OT/6enp//7+/v/ExMT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgICHkAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP/MzMz//v7+/+rq6v/l5eX/3Nzc/9DQ0P/z8/P/8fLx/+zs7P/s7Oz/7Ozs/+zs
-        7P/s7ez/7O3s/+zt7P/s7Oz/7Ozs/+zs7P/s7Oz/7+/v//z8/P/R0dH/2tra/+Li4v/p6en/8fHx//f3
-        9/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJeQAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//f39//y8vL/6erp/+Lj
-        4v/Y2dj/19fX///////v7+//7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
-        7v/t7e3/+vr6/+Hi4f/V1tX/4OHg/+jp6P/t7e3//////01NTf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCQl6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8oKCj//////+/v7//p6en/4eHh/9fX1//k5OT//Pz8/+/v7//v8O//7/Dv/+/w
-        7//v8O//7/Dv/+/w7//v8O//7/Dv/+/w7//v8O//7/Dv/+/v7//19fX/8PDw/9TU1P/f39//5+fn/+3t
-        7f//////gICA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJ
-        CXoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0dHR///////7+/v/+rq
-        6v/h4eH/1tbW/+np6f/6+vr/8fHx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy
-        8f/x8vH/8fHx//X19f/39/f/09PT/9/f3//o6Oj/7u7u//////+Xl5f/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/TExM///////w8PD/6+zr/+Pk4//X19f/7Ozs//z8/P/z8/P/8/Pz//Pz
-        8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9vb2//r6+v/T1NP/4OHg/+nq
-        6f/v8O///////52dnf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP88PDz///////Hy
-        8f/t7u3/5ubm/9na2f/n5+f///////X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1
-        9f/19fX/9fX1//X19f/6+vr/9PT0/9fX1//i4+L/6+zr//Hx8f//////ioqK/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv/9/f3/9vb2/+/v7//o6Oj/3d3d/+Dg4P//////9/f3//b3
-        9v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2///////p6en/29vb/+bm
-        5v/u7u7/8/Pz//////9dXV3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/CgoKegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9zc
-        3P/+/v7/8fHx/+vs6//i4uL/1tfW//v7+//8/Pz/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4
-        +P/4+Pj/+Pj4//j4+P/6+vr//////9vb2//f39//6urq//Hx8f/4+fj//f39/xoaGv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ra2t//7+/v/09PT/7/Dv/+jo6P/d3d3/4+Pj////
-        ///7/Pv/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+vr6///////w8PD/2tra/+bm
-        5v/t7u3/8/Pz//7+/v/W1tb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP87Ozv//f39//39/f/z8/P/7e3t/+Xl5f/Z2dn/7+/v///////9/v3/+vv6//r7+v/7+/v/+/v7//v7
-        +//6+/r/+vv6//z9/P//////+Pj4/9ra2v/j4+P/6+vr//Ly8v/4+Pj//v7+/4qKiv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CgoKegAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcICLr/BgaP/wcHkv8HB5X/BweX/wcH
-        m/8HB53/CAif/wgIoP8ICKP/CAik/wgIpf8ICKf/CQmn/wkJqP8JCaj/CQmp/wkJqv8JCav/CQmr/wkJ
-        rP8JCa3/CQmu/wkJrv8JCa//CQmw/wkJsP8JCbH/CQmy/woKs/8KCrP/Cgq0/woKtf8KCrb/Cwu3/wYG
-        cv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP++vr7//v7+//b29v/y8vL/7O3s/+Tk
-        5P/a29r/6Ojo//7+/v///////f39//z8/P/8/Pz//Pz8//z9/P///////////+/v7//a29r/4eLh/+rr
-        6v/x8vH/9fb1//7+/v/m5ub/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BARB/wsL
-        t/8KCrb/Cgq1/woKtP8KCrP/Cgqz/wkJsv8JCbH/CQmw/wkJsP8JCa//CQmu/wkJrv8JCa3/CQms/wkJ
-        q/8JCav/CQmq/wkJqf8JCaj/CQmo/wkJp/8ICKb/CAil/wgIo/8ICKH/CAif/wcHnv8HB5v/BweZ/wcH
-        lf8HB5P/BgaQ/wgIuv8dHR16AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZwkJy/8HB5v/Bwee/wgIoP8ICKP/CAim/wgIp/8JCaj/CQmr/wkJrP8JCa7/CQmu/woK
-        sP8KCrD/Cgqx/woKsv8KCrL/Cgqz/woKs/8KCrT/Cgq1/woKtv8KCrb/Cgq3/woKt/8KCrj/Cgq5/wsL
-        uf8LC7r/Cwu7/wsLu/8LC7z/Cwu9/wsLvf8LC8T/CwvU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/zAwMP/39/f//v7+//b29v/y8vL/7e3t/+Xl5f/d3d3/3t7e//X19f//////////////
-        //////////////r6+v/j4+P/29vb/+Pj4//r6+v/8fHx//b29v/9/f3//v7+/3Jycv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCqn/CwvL/wsLvf8LC73/Cwu8/wsLu/8LC7v/Cwu6/wsL
-        uf8KCrn/Cgq4/woKt/8KCrf/Cgq2/woKtv8KCrX/Cgq0/woKs/8KCrP/Cgqy/woKsv8KCrH/Cgqw/woK
-        r/8JCa7/CQmt/wkJq/8JCar/CAin/wgIpv8ICKT/CAih/wgInv8HB5z/CQnL/ysrK3oAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCAiy/wYGif8HB4v/BweP/wcH
-        kv8HB5X/BweX/wgImv8ICJv/CAid/wgIn/8ICKD/CAih/wkJov8JCaP/CQmk/wkJpf8JCaX/CQmm/wkJ
-        pv8JCaf/CQmo/wkJqf8JCar/CQmq/wkJq/8JCaz/CQmt/wkJrf8JCa7/Cgqv/woKsP8KCrH/Cgqx/woK
-        s/8MDND/AgI7/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/42Njf/+/v7//f39//b3
-        9v/z9PP/7/Dv/+nq6f/j5OP/3d3d/93d3f/k5OT/5eXl/+Xm5f/e397/3Nzc/+Hi4f/o6Oj/7u7u//Ly
-        8v/29vb//P38//7+/v+8vLz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAG/wwM
-        0v8KCrf/Cgqx/woKsf8KCrD/Cgqv/wkJrv8JCa3/CQmt/wkJrP8JCav/CQmq/wkJqv8JCan/CQmo/wkJ
-        p/8JCab/CQmm/wkJpf8JCaX/CQmk/wkJo/8JCaL/CAig/wgIoP8ICJ7/CAic/wgImv8HB5j/BweV/wcH
-        k/8HB5D/BweN/wYGif8ICLL/KioqewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcICLP/BgaK/wcHjP8HB5D/BweT/wcHlv8HB5j/CAib/wgInP8ICJ7/CAig/wgI
-        of8ICKL/CQmj/wkJpP8JCaT/CQml/wkJpv8JCaf/CQmn/wkJqP8JCan/CQmp/wkJqv8JCav/CQms/wkJ
-        rP8JCa7/CQmu/wkJr/8KCrD/Cgqx/woKsf8KCrL/Cgqz/wwMwv8KCrD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/7S0tP/+/v7//v7+//j4+P/19vX/8fLx/+7v7v/q6+r/5ufm/+Tl
-        5P/j5OP/5OTk/+bm5v/p6un/7u7u//Dx8P/09fT/9/j3//39/f/+/v7/1tbW/w0NDf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBnX/DAzK/woKtP8KCrL/Cgqx/woKsf8KCrD/CQmv/wkJ
-        rv8JCa7/CQms/wkJrP8JCav/CQmq/wkJqf8JCan/CQmo/wkJp/8JCaf/CQmm/wkJpf8JCaT/CQmk/wkJ
-        o/8ICKH/CAih/wgIn/8ICJ3/CAib/wcHmf8HB5b/BweU/wcHkf8HB47/BgaK/wgIs/8qKip7AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwgItv8GBoz/BweO/wcH
-        kf8HB5T/BweX/wcHmf8ICJv/CAid/wgIn/8ICKH/CAii/wgIo/8JCaT/CQmk/wkJpf8JCab/CQmm/wkJ
-        p/8JCaj/CQmp/wkJqf8JCar/CQmr/wkJrP8JCaz/CQmt/wkJrv8JCa//CQmv/woKsP8KCrH/Cgqy/woK
-        s/8KCrP/Cgq3/w4O1P8CAif/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6ur
-        q//+/v7//v7+//r7+v/3+Pf/9vb2//P08//x8fH/7/Dv/+/v7//v8O//8PHw//Lz8v/19vX/9/j3//r6
-        +v/+/v7//v7+/8vLy/8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
-        z/8KCrz/Cgqz/woKs/8KCrL/Cgqx/woKsP8JCa//CQmv/wkJrv8JCa3/CQms/wkJrP8JCav/CQmq/wkJ
-        qf8JCan/CQmo/wkJp/8JCab/CQmm/wkJpf8JCaT/CQmk/wgIov8ICKL/CAig/wgInv8ICJz/BweZ/wcH
-        l/8HB5X/BweS/wcHj/8GBov/CAi2/yoqKnsAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnCQm3/wcHjf8HB4//CAiT/wgIlf8ICJn/CAia/wkJnP8JCZ7/CQmf/wkJ
-        ov8JCaP/CQmk/woKpf8KCqX/Cgqm/woKp/8KCqf/Cgqo/woKqf8KCqn/Cgqq/woKq/8KCqv/Cgqs/woK
-        rf8KCq7/Cgqu/wsLr/8LC7D/Cwux/wsLsf8LC7L/Cwuz/wsLtP8LC7X/DAzE/wsLt/8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Jycv/x8fH//v7+//7+/v/7/Pv/+fr5//j4
-        +P/3+Pf/9/j3//f49//4+Pj/+fr5//r6+v/+/v7//v7+//r6+v+tra3/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBm//DAzN/wsLtv8LC7T/Cwuz/wsLsv8LC7H/Cwux/wsL
-        sP8LC6//Cgqu/woKrv8KCq3/Cgqs/woKq/8KCqv/Cgqq/woKqf8KCqn/Cgqo/woKp/8KCqf/Cgqm/woK
-        pf8KCqX/CQmj/wkJo/8JCaH/CQme/wkJnf8ICJr/CAiZ/wgIlv8ICJP/CAiQ/wcHjP8JCbf/KioqewAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC7j/CAiO/wgI
-        kP8JCZT/CQmW/wkJmf8JCZv/CQmd/woKn/8KCqD/Cgqj/woKo/8LC6X/Cwum/wsLpv8LC6f/Cwun/wsL
-        qP8LC6n/Cwup/wsLqv8LC6v/Cwus/wsLrP8LC63/Cwuu/wsLrv8MDK//DAyw/wwMsf8MDLH/DAyy/wwM
-        s/8MDLP/DAy0/wwMtf8MDLn/ERHU/wQET/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xoaGv+urq7/9vb2///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////39
-        /f/CwsL/OTk5/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIZ/xER
-        1/8MDLz/DAy1/wwMtP8MDLP/DAyz/wwMsv8MDLH/DAyx/wwMsP8MDK//Cwuu/wsLrv8LC63/Cwus/wsL
-        rP8LC6v/Cwuq/wsLqf8LC6n/Cwuo/wsLp/8LC6f/Cwum/wsLpv8LC6T/Cgqj/woKov8KCp//CQme/wkJ
-        m/8JCZr/CQmW/wkJlP8ICJL/CAiN/wsLuP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsLu/8ICJD/CAiS/wkJlv8JCZn/CQmb/wkJnv8JCZ//Cgqh/woK
-        o/8KCqX/Cgql/wsLp/8LC6f/Cwuo/wsLqP8LC6n/Cwuq/wsLqv8LC6v/Cwur/wsLrP8LC63/Cwuu/wsL
-        rv8LC6//Cwuw/wwMsf8MDLH/DAyy/wwMsv8MDLP/DAy0/wwMtf8MDLX/DAy2/wwMt/8MDMD/Dw/T/wAA
-        DP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/dnZ2/7q6
-        uv/h4eH/4uLi///////p6en/4eHh/8nJyf+EhIT/ISEh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MDLn/Dw/G/wwMuP8MDLb/DAy1/wwMtf8MDLT/DAyz/wwM
-        sv8MDLL/DAyx/wwMsf8LC7D/Cwuv/wsLrv8LC67/Cwut/wsLrP8LC6v/Cwur/wsLqv8LC6r/Cwup/wsL
-        qP8LC6j/Cwun/wsLpv8KCqX/Cgqk/woKof8JCaD/CQme/wkJnP8JCZn/CQmW/wgIlP8ICJD/Cwu7/ysr
-        K3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwu+/wkJ
-        kv8JCZP/CQmW/woKmv8KCpz/Cgqe/woKoP8LC6P/Cwuk/wsLpv8LC6b/DAyn/wwMqP8MDKj/DAyp/wwM
-        qv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrf8MDK7/DAyv/w0NsP8NDbD/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0NuP8QEMj/Dg65/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQmC/xIS
-        0v8NDbr/DQ23/w0Ntv8NDbb/DQ21/w0NtP8NDbT/DQ2z/w0Ns/8NDbL/DQ2x/w0NsP8NDbD/DAyv/wwM
-        rv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyp/wwMqP8MDKj/DAym/wsLpv8LC6X/Cwuj/woK
-        of8KCp//Cgqc/woKmv8JCZj/CQmU/wkJkf8LC77/KysrewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC8D/CQmU/wkJlv8JCZj/Cgqc/woKnv8KCqD/Cgqi/wsL
-        pP8LC6b/Cwun/wsLqP8MDKn/DAyq/wwMqv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrv8MDK//DAyv/wwM
-        sP8MDLD/DAyx/w0Nsv8NDbL/DQ2z/w0Ns/8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0Nt/8NDbj/DQ25/w0N
-        u/8QENH/DAyh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcHXP8SEtf/DQ29/w0Nuf8NDbj/DQ23/w0Nt/8NDbb/DQ22/w0N
-        tf8NDbT/DQ2z/w0Ns/8NDbL/DQ2y/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwMrf8MDKz/DAys/wwM
-        q/8MDKv/DAyq/wwMqv8MDKj/Cwuo/wsLpv8LC6X/Cgqi/woKof8KCp7/Cgqc/wkJmv8JCZb/CQmT/wsL
-        wP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsL
-        wP8JCZT/CQmW/wkJmP8KCpz/Cgqe/woKoP8KCqL/Cwuk/wsLpf8LC6f/Cwuo/wsLqf8MDKr/DAyq/wwM
-        q/8MDKv/DAys/wwMrP8MDK3/DAyt/wwMrv8MDK//DAyw/wwMsP8MDLH/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbX/DQ21/w0Ntv8NDbb/DQ23/w0NuP8NDbj/DQ25/w4Ovf8SEtT/DAyT/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HB13/EhLZ/w4O
-        wP8NDbr/DQ24/w0NuP8NDbf/DQ22/w0Ntv8NDbX/DQ21/w0NtP8NDbP/DQ2z/w0Nsv8NDbH/DAyx/wwM
-        sP8MDLD/DAyv/wwMrv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyq/wsLqP8LC6j/Cwum/wsL
-        pP8KCqL/Cgqh/woKnv8KCpz/CQma/wkJlv8JCZP/CwvA/ysrK3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwvE/wkJlv8JCZj/CQmb/woKnf8KCqD/Cgqi/woK
-        o/8LC6b/Cwun/wsLqf8LC6n/Cwur/wwMq/8MDKz/DAys/wwMrf8MDK3/DAyu/wwMr/8MDK//DAyw/wwM
-        sP8MDLH/DAyx/wwMsv8MDLP/DQ2z/w0NtP8NDbX/DQ21/w0Ntv8NDbf/DQ23/w0NuP8NDbj/DQ25/w0N
-        uf8NDbr/DQ26/w4Ov/8REdP/Dg65/wAAB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/CgqN/xQU2f8ODsH/DQ27/w0Nuv8NDbn/DQ25/w0NuP8NDbj/DQ23/w0N
-        t/8NDbb/DQ21/w0Ntf8NDbT/DQ2z/wwMs/8MDLL/DAyx/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwM
-        rf8MDK3/DAys/wwMrP8MDKv/Cwuq/wsLqf8LC6j/Cwum/woKpP8KCqL/Cgqg/woKnv8JCZv/CQmZ/wkJ
-        lv8LC8T/LCwsewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcMDMb/CgqY/woKmf8KCpz/Cwue/wsLof8LC6P/Cwuk/wwMp/8MDKj/DAyq/wwMqv8MDKv/DQ2s/w0N
-        rP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0NsP8NDbD/DQ2x/w0Nsv8NDbL/DQ2z/w4Os/8ODrT/Dg61/w4O
-        tf8ODrb/Dg62/w4Ot/8ODrf/Dg64/w4Ouf8ODrn/Dg66/w8Puv8PD7v/Dw+7/w8Pvv8REc7/ERHR/wIC
-        Kf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8Psf8UFNb/Dw/A/w8P
-        vP8PD7v/Dw+6/w4Ouv8ODrn/Dg65/w4OuP8ODrf/Dg63/w4Otv8ODrb/Dg61/w4Otf8ODrT/Dg6z/w0N
-        s/8NDbL/DQ2y/w0Nsf8NDbD/DQ2w/w0Nr/8NDa7/DQ2u/w0Nrf8NDa3/DQ2s/w0NrP8MDKr/DAyq/wwM
-        qf8MDKf/Cwul/wsLo/8LC6H/Cwuf/woKnP8KCpr/CgqX/wwMxv8sLCx7AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwwMx/8KCpn/Cgqa/woKnf8LC5//Cwui/wsL
-        pP8LC6X/DAyo/wwMqf8MDKr/DAyr/wwMrP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0Nr/8NDbD/DQ2w/w0N
-        sf8NDbH/DQ2y/w0Ns/8NDbP/Dg60/w4OtP8ODrX/Dg61/w4Otv8ODrf/Dg63/w4OuP8ODrn/Dg65/w4O
-        uv8ODrr/Dg67/w8Pu/8PD7z/Dw+8/w8Pvv8REcn/FBTY/wkJcP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wUFSP8REdP/ERHP/w8Pv/8PD7z/Dw+8/w8Pu/8ODrv/Dg66/w4Ouv8ODrn/Dg65/w4O
-        uP8ODrf/Dg63/w4Otv8ODrX/Dg61/w4OtP8ODrT/DQ2z/w0Ns/8NDbL/DQ2x/w0Nsf8NDbD/DQ2w/w0N
-        r/8NDa//DQ2u/w0Nrv8NDa3/DQ2t/wwMq/8MDKv/DAyp/wwMqP8LC6b/Cwuk/wsLov8LC6D/Cgqd/woK
-        m/8KCpj/DAzH/y0tLXwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnDAzL/woKm/8KCp3/Cgqf/wsLof8LC6P/Cwum/wsLp/8MDKn/DAyr/wwMrP8MDK3/DAyu/wwM
-        rv8NDa//DQ2v/w0NsP8NDbD/DQ2x/w0Nsf8NDbL/DQ2y/w0Ns/8NDbT/DQ20/w0Ntf8NDbX/Dg62/w4O
-        tv8ODrf/Dg64/w4OuP8ODrn/Dg65/w4Ouf8ODrr/Dg67/w4Ou/8ODrz/Dg68/w4OvP8PD73/Dw+9/w8P
-        vv8PD8T/FRXY/xERyP8FBVb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICKv8PD7P/FRXc/xERx/8PD7//Dw+9/w8P
-        vf8ODrz/Dg68/w4OvP8ODrv/Dg67/w4Ouv8ODrn/Dg65/w4Ouf8ODrj/Dg64/w4Ot/8ODrb/Dg62/w0N
-        tf8NDbX/DQ20/w0NtP8NDbP/DQ2y/w0Nsv8NDbH/DQ2x/w0NsP8NDbD/DQ2v/w0Nr/8MDK7/DAyt/wwM
-        rf8MDKv/DAyq/wsLp/8LC6b/Cwul/wsLof8KCp//Cgqd/woKm/8MDMv/LS0tfAAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcNDcv/Cgqb/wsLnf8LC5//DAyh/wwM
-        o/8MDKb/DAyn/wwMqf8NDav/DQ2s/w0NrP8NDa7/Dg6u/w4Or/8ODq//Dg6w/w4OsP8ODrH/Dg6x/w4O
-        sv8ODrL/Dg6z/w4Os/8ODrT/Dg60/w8Ptf8PD7b/Dw+2/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+7/w8Pu/8QELv/EBC8/xAQvP8QEL3/EBC9/xAQvv8QEMD/EhLJ/xUV2/8TE8//Cgp9/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUF
-        X/8QELz/FRXd/xISzf8QEML/EBC//xAQvf8QEL3/EBC8/xAQvP8QELv/Dw+7/w8Pu/8PD7r/Dw+6/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptv8PD7b/Dw+1/w4OtP8ODrT/Dg6z/w4Os/8ODrL/Dg6y/w4O
-        sf8ODrH/Dg6w/w4OsP8ODq//Dg6v/w4Orv8NDa3/DQ2s/w0Nq/8MDKr/DAyn/wwMpv8MDKX/DAyh/wsL
-        n/8LC53/Cgqb/w0Ny/8tLS18AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZw0Nzv8KCp7/Cwuf/wsLof8MDKT/DAym/wwMqP8MDKr/DAyr/w0NrP8NDa7/DQ2u/w0N
-        sP8NDbD/Dg6x/w4Osf8ODrH/Dg6y/w4Osv8ODrL/Dg6z/w4OtP8ODrT/Dg61/w4Otf8ODrb/Dg62/w8P
-        t/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8Puv8PD7r/Dw+7/w8Pu/8PD7z/Dw+8/w8Pvf8QEL3/EBC9/xAQ
-        vv8QEL7/EBC//xAQv/8QEL//EBDB/xISyf8SEtX/FRXd/xMTyf8ODpf/BQVh/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8FBVH/CgqC/xAQuP8VFd3/FRXZ/xISy/8QEMP/EBDA/xAQv/8QEL//EBC+/xAQ
-        vv8QEL3/EBC9/w8Pvf8PD7z/Dw+8/w8Pu/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dw+3/w8P
-        t/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4OtP8ODrP/Dg6y/w4Osv8ODrL/Dg6x/w4Osf8ODrH/DQ2w/w0N
-        r/8NDa7/DQ2t/wwMq/8MDKr/DAyo/wwMp/8MDKT/Cwui/wsLn/8KCp3/DQ3O/y0tLXwAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnDQ3P/woKn/8LC6D/Cwuj/wwM
-        pf8MDKf/DAyo/wwMq/8MDKz/DQ2t/w0Nr/8NDa//DQ2w/w0Nsf8ODrH/Dg6x/w4Osv8ODrL/Dg6z/w4O
-        s/8ODrT/Dg60/w4Otf8ODrX/Dg62/w4Otv8ODrf/Dg63/w8PuP8PD7j/Dw+5/w8Puf8PD7r/Dw+6/w8P
-        u/8PD7v/Dw+8/w8PvP8PD73/Dw+9/w8Pvf8PD77/EBC+/xAQv/8QEL//EBC//xAQv/8QEMD/EBDA/xAQ
-        wf8QEMT/EhLL/xIS0v8WFtr/Fhbi/xYW3P8TE9b/ExPX/xMT1/8TE9X/Fhbk/xYW3P8SEtX/EhLN/xAQ
-        xv8QEMH/EBDA/xAQwP8QEL//EBC//xAQv/8QEL//EBC+/w8Pvv8PD73/Dw+9/w8Pvf8PD7z/Dw+8/w8P
-        u/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dg63/w4Ot/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4O
-        tP8ODrP/Dg6z/w4Osv8ODrL/Dg6x/w4Osf8NDbH/DQ2v/w0Nr/8NDa7/DAys/wwMq/8MDKn/DAyn/wwM
-        pf8LC6P/Cwuh/woKnv8NDc//LS0tfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcPD9D/Cwug/wwMov8MDKT/DAym/w0NqP8NDan/DQ2s/w0Nrf8ODq7/Dg6v/w4O
-        sP8ODrH/Dg6y/w4Osv8PD7L/Dw+z/w8Ps/8PD7P/Dw+0/w8PtP8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8P
-        t/8QELj/EBC4/xAQuf8QELn/EBC6/xAQuv8QELv/EBC7/xAQvP8QELz/EBC8/xAQvf8QEL3/ERG9/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHA/xERwf8REcH/ERHB/xERwf8REcL/ERHE/xER
-        x/8REcf/ERHH/xERxv8REcP/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERwP8REb//ERG//xER
-        v/8REb7/ERG+/xERvf8QEL3/EBC9/xAQvP8QELz/EBC8/xAQu/8QELv/EBC6/xAQuv8QELn/EBC5/xAQ
-        uP8QELj/Dw+3/w8Pt/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8PD7P/Dw+z/w8Ps/8PD7L/Dg6y/w4O
-        sv8ODrD/Dg6w/w4Orv8NDa3/DQ2s/w0Nqv8NDaj/DAym/wwMpP8MDKL/Cwuf/w8P0P8uLy58AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZw8P1P8LC6L/DAyk/wwM
-        pv8MDKj/DQ2q/w0Nq/8NDa3/DQ2v/w4OsP8ODrH/Dg6y/w4Os/8ODrP/Dg6z/w8PtP8PD7T/Dw+1/w8P
-        tf8PD7b/Dw+2/w8Pt/8PD7f/Dw+3/w8PuP8PD7j/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        vP8QELz/EBC9/xAQvf8QEL7/EBC+/xAQvv8QEL//ERG//xERv/8REcD/ERHA/xERwP8REcH/ERHB/xER
-        wf8REcH/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xER
-        wv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//EBC//xAQvv8QEL7/EBC+/xAQ
-        vf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQuv8QELr/EBC6/w8Puf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8P
-        t/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8ODrP/Dg6z/w4Osv8ODrL/Dg6w/w0Nr/8NDa7/DQ2r/w0N
-        qv8MDKj/DAym/wwMpP8LC6L/Dw/U/y4vLnwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnDw/X/wsLpf8MDKb/DAyo/wwMqv8NDaz/DQ2u/w0Nr/8NDbH/Dg6y/w4O
-        s/8ODrP/Dg60/w4Otf8ODrX/Dg62/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+6/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xAQv/8QEL//EBDA/xAQ
-        wP8QEMD/EBDA/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERw/8REcP/ERHD/xER
-        w/8REcP/ERHD/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHB/xER
-        wf8REcH/EBDA/xAQwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL3/EBC9/xAQvf8QELz/EBC8/xAQ
-        vP8PD7v/Dw+6/w8Puv8PD7r/Dw+5/w8Puf8PD7j/Dw+4/w8Pt/8PD7f/Dw+3/w8Ptv8PD7b/Dg62/w4O
-        tf8ODrX/Dg6z/w4Os/8ODrL/DQ2x/w0NsP8NDa7/DQ2s/wwMqv8MDKn/DAym/wsLpP8PD9f/Li8ufAAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQENf/DAyl/wwM
-        pv8NDaj/DQ2q/w4OrP8ODq7/Dg6v/w4OsP8PD7L/Dw+z/w8Ps/8PD7T/Dw+1/w8Ptf8PD7X/EBC2/xAQ
-        tv8QELf/EBC3/xAQt/8QELj/EBC4/xAQuf8QELn/EBC5/xAQuv8QELr/EBC6/xERu/8REbz/ERG8/xER
-        vP8REb3/ERG9/xERvf8REb7/ERG+/xERv/8REb//ERG//xERwP8SEsD/EhLA/xISwP8SEsH/EhLB/xIS
-        wf8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xIS
-        wv8SEsL/EhLC/xISwv8SEsL/EhLB/xISwf8SEsH/EhLA/xISwP8SEsD/ERHA/xERv/8REb//ERG//xER
-        vv8REb7/ERG9/xERvf8REb3/ERG8/xERvP8REbz/ERG7/xAQuv8QELr/EBC6/xAQuf8QELn/EBC5/xAQ
-        uP8QELj/EBC3/xAQt/8QELf/EBC2/xAQtv8PD7X/Dw+1/w8Ptf8PD7P/Dw+z/w8Psv8ODrH/Dg6v/w4O
-        rv8ODqz/DQ2q/w0Nqf8NDab/DAyk/xAQ1/8vLy98AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ2/8MDKf/DAyp/w0Nq/8NDa3/Dg6u/w4OsP8ODrH/Dg6y/w8P
-        s/8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/EBC4/xAQuP8QELj/EBC5/xAQuf8QELr/EBC6/xAQ
-        u/8QELv/EBC7/xAQvP8QELz/EBC8/xERvf8REb3/ERG+/xERvv8REb7/ERG//xERv/8REb//ERHA/xER
-        wP8REcH/ERHB/xERwf8SEsH/EhLB/xISwv8SEsL/EhLC/xISwv8SEsP/EhLD/xISw/8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISwv8SEsL/EhLC/xIS
-        wv8SEsH/EhLB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/ERG9/xER
-        vf8QELz/EBC8/xAQvP8QELv/EBC7/xAQu/8QELr/EBC6/xAQuf8QELn/EBC4/xAQuP8QELj/Dw+3/w8P
-        t/8PD7f/Dw+2/w8Ptf8PD7X/Dw+0/w4Osv8ODrH/Dg6w/w4Orv8NDa3/DQ2r/wwMqf8MDKb/EBDb/zAw
-        MHwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDc/wwM
-        qP8MDKr/DQ2s/w0Nrv8ODq//Dg6x/w4Osv8ODrP/Dw+0/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8P
-        uP8QELn/EBC5/xAQuf8QELr/EBC6/xAQuv8QELv/EBC7/xAQu/8QELz/EBC8/xAQvf8QEL3/EBC9/xER
-        vv8REb7/ERG+/xERv/8REb//ERG//xERwP8REcD/ERHB/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xIS
-        wv8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsT/EhLE/xISxP8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xER
-        wP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQ
-        u/8QELr/EBC6/xAQuv8QELn/EBC5/xAQuf8PD7j/Dw+4/w8Pt/8PD7f/Dw+2/w8Ptv8PD7X/Dg6z/w4O
-        sv8ODrH/Dg6v/w0Nrv8NDaz/DAyq/wwMqP8QENz/MDAwfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQEN7/DAyq/wwMq/8NDa3/DQ2v/w4OsP8ODrL/Dg6z/w4O
-        tP8PD7X/Dw+2/w8Pt/8PD7j/Dw+4/w8PuP8PD7n/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        u/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xERv/8REb//ERG//xERv/8REcD/ERHA/xER
-        wf8REcH/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8SEsP/EhLD/xISw/8SEsP/EhLE/xIS
-        xP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsP/EhLD/xISw/8SEsP/ERHD/xER
-        w/8REcL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG//xAQ
-        vv8QEL7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELz/EBC7/xAQu/8QELv/EBC6/xAQuv8QELr/Dw+5/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptf8ODrT/Dg6z/w4Osv8ODrH/DQ2v/w0Nrf8MDKv/DAyp/xAQ
-        3v8wMDB8AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ
-        4v8MDKz/DAyt/w0Nr/8NDbH/Dg6y/w4OtP8ODrX/Dg62/w8Pt/8PD7j/Dw+5/w8Puv8PD7r/Dw+6/w8P
-        uv8PD7v/Dw+7/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL3/EBC+/xAQvv8QEL7/EBC//xAQ
-        v/8QEMD/EBDA/xERwP8REcD/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8REcP/ERHD/xER
-        w/8REcT/ERHE/xERxP8REcT/ERHE/xERxf8REcX/EhLF/xISxf8SEsX/EhLF/xISxf8SEsX/EhLF/xIS
-        xf8SEsX/ERHF/xERxf8REcT/ERHE/xERxP8REcT/ERHE/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xER
-        wv8REcL/ERHC/xERwf8REcH/ERHA/xERwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL7/EBC9/xAQ
-        vf8QEL3/EBC9/xAQvP8QELz/EBC8/w8Pu/8PD7v/Dw+7/w8Puv8PD7r/Dw+6/w8Puf8PD7n/Dw+3/w4O
-        tv8ODrX/Dg60/w4Os/8NDbH/DQ2v/wwMrf8MDKv/EBDi/zExMX0AAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDk/w0Nrv8NDbD/Dg6x/w4Os/8ODrX/Dw+2/w8P
-        t/8PD7j/EBC5/xAQuv8QELr/EBC8/xAQvP8QELz/EBC8/xAQvP8QEL3/EBC9/xERvf8REb7/ERG+/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHB/xERwf8SEsH/EhLC/xISwv8SEsL/EhLC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLE/xISxP8SEsX/EhLF/xISxf8SEsX/EhLF/xISxf8TE8b/ExPG/xMT
-        xv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8SEsX/EhLF/xIS
-        xf8SEsX/EhLF/xISxf8SEsT/EhLE/xISxP8SEsT/EhLD/xISw/8SEsP/EhLC/xISwv8SEsL/EhLC/xIS
-        wf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//ERG//xERvv8REb7/ERG+/xERvv8REb3/EBC9/xAQ
-        vf8QELz/EBC8/xAQvP8QELz/EBC7/xAQuv8QELn/Dw+4/w8Pt/8PD7b/Dg61/w4Os/8ODrH/DQ2w/w0N
-        rf8QEOT/MTExfQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcUFOb/Dw+w/xAQsP8QELP/ERG0/xERtv8SErf/EhK4/xISuf8SErr/ExO7/xMTu/8TE7z/ExO9/xMT
-        vf8TE73/ExO9/xMTvf8TE77/FBS+/xQUvv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXF/xYW
-        xf8WFsX/FhbF/xYWxf8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xUVxf8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVwv8VFcL/FRXC/xUVwv8UFMH/FBTB/xQUwP8UFMD/FBTA/xQU
-        wP8UFL//FBS//xQUv/8UFL//FBS+/xQUvv8TE77/ExO9/xMTvf8TE73/ExO9/xMTvf8TE7v/ExO7/xIS
-        uv8SErn/EhK4/xISt/8REbb/ERG0/xAQs/8QELH/Dw+v/xQU5v8xMTF9AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxQU5v8PD6//EBCw/xAQsv8REbT/ERG2/xIS
-        t/8SErj/EhK5/xISuv8TE7v/ExO7/xMTvP8TE7z/ExO9/xMTvf8TE73/ExO9/xMTvv8TE77/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQUwf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUV
-        w/8VFcP/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxf8VFcX/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUV
-        wv8VFcL/FBTB/xQUwf8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL//FBS//xQUvv8UFL7/ExO+/xMT
-        vv8TE73/ExO9/xMTvf8TE73/ExO8/xMTu/8TE7v/EhK6/xISuf8SErj/EhK3/xERtv8REbT/EBCz/xAQ
-        sP8PD6//FBTm/zIyMn0AAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABlFBTo/xAQsv8QELP/ERG1/xIStv8SErj/ExO5/xMTuv8TE7v/ExO8/xQUvf8UFL3/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBS//xQUwP8VFcD/FRXA/xUVwP8VFcH/FRXB/xUVwf8VFcH/FRXC/xUV
-        wv8VFcL/FRXC/xUVw/8VFcP/FhbD/xYWw/8WFsT/FhbE/xYWxP8WFsT/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsb/FhbG/xYWxv8XF8b/FxfG/xcXxv8XF8b/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXxv8XF8b/FxfG/xcXxv8WFsb/FhbG/xYWxv8WFsX/FhbF/xYW
-        xf8WFsX/FhbF/xYWxP8WFsT/FhbE/xYWxP8WFsP/FhbD/xUVw/8VFcP/FRXC/xUVwv8VFcL/FRXC/xUV
-        wf8VFcH/FRXB/xUVwf8VFcD/FRXA/xUVwP8UFMD/FBS//xQUv/8UFL//FBS//xQUv/8UFL7/FBS9/xQU
-        vf8TE7z/ExO7/xMTuv8TE7n/EhK4/xIStv8REbX/ERGz/xAQsf8UFOr/MjIyewAAADEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAGQUFOr/EBCz/xAQtP8REbX/EhK3/xIS
-        uf8SErr/ExO7/xMTvP8TE73/FBS+/xQUvv8UFL//FBS//xQUv/8UFMD/FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8VFcH/FRXB/xUVwf8VFcL/FRXC/xUVwv8VFcL/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FhbE/xYW
-        xP8WFsX/FhbF/xYWxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xYW
-        x/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxf8WFsX/FhbF/xYWxf8WFsX/FhbE/xYW
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUVwv8VFcL/FRXB/xUVwf8VFcH/FBTB/xQU
-        wP8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL7/FBS+/xMTvf8TE7z/ExO7/xISuv8SErn/EhK3/xER
-        tf8QELT/EBCy/xQU6/8yMjJ7AAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAtAAAAYhUV7v8REbX/EBC2/xERuP8REbn/EhK7/xISvP8TE73/ExO+/xMTv/8UFMD/FBTA/xQU
-        wf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQUwv8UFML/FBTC/xQUwv8VFcP/FRXD/xUVw/8VFcP/FRXE/xUV
-        xP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUVxf8VFcX/FRXG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsn/FhbJ/xYW
-        yf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8VFcb/FRXF/xUVxf8VFcX/FRXF/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQUwv8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wP8UFMD/ExO//xMTvv8TE73/EhK8/xISu/8REbn/ERG4/xAQtv8QELT/Fhbu/zQ0NHkAAAAuAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAABeGBjp/hMTuf8QELb/ERG3/xER
-        uf8SErr/EhK8/xMTvf8TE77/ExO//xQUwP8UFMD/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wv8UFML/FBTC/xQUwv8UFML/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUV
-        xf8VFcX/FRXG/xUVxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbI/xYW
-        yP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8VFcb/FRXG/xUV
-        xf8VFcX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQU
-        wv8UFML/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTA/xQUwP8TE7//ExO+/xMTvf8SErz/EhK6/xER
-        uf8REbj/EBC2/xIStv8YGO7/AAAAXwAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAJgAAAFchIeT+FxfB/xERuP8SErn/EhK7/xMTvP8TE77/FBS//xQUwP8UFMH/FRXC/xUV
-        wv8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FhbF/xYW
-        xf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xcXx/8XF8f/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8j/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8f/FxfH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8WFsX/FhbF/xYWxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUV
-        w/8VFcL/FRXC/xQUwf8UFMD/FBS//xMTvv8TE7z/EhK7/xISuf8REbj/GBi//x0d6P4AAABYAAAAJwAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAATioq2PscHM7/ERG4/xER
-        uv8SErz/ExO9/xMTvv8UFMD/FBTB/xQUwv8UFML/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8VFcX/FRXF/xUVxf8VFcX/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcX
-        yv8XF8r/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FRXF/xUVxf8VFcX/FRXF/xUV
-        xf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8UFML/FBTC/xQUwf8UFMD/ExO//xMT
-        vf8SErz/EhK6/xERuP8bG8v/JibZ+wAAAE8AAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAABoAAABCODjG8SEh4v8REbr/ERG8/xISvv8SEr//ExPA/xMTwv8UFMP/FBTE/xQU
-        xP8VFcX/FRXF/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV
-        x/8VFcf/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbJ/xYWyf8WFsn/FhbJ/xYWyf8WFsr/FhbK/xYW
-        yv8WFsr/FhbK/xcXyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyv8WFsr/FhbK/xYWyv8WFsn/FhbJ/xYWyf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xUVx/8VFcf/FRXH/xUVx/8VFcf/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUV
-        xv8VFcX/FRXF/xQUxP8UFMT/FBTD/xMTwv8TE8D/EhK//xISvv8REbz/ERG6/yEh3f80NMn1AAAAQwAA
-        ABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAADVAQKTVKSn3/xER
-        uv8SErv/ExO9/xMTv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xUVxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8XF8f/FxfH/xcXyP8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8YGMr/GBjK/xgY
-        yv8YGMr/GBjK/xgYyv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgY
-        y/8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMr/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXx/8XF8f/FhbH/xYWx/8WFsf/FhbH/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8VFcX/FRXE/xUVw/8VFcL/FBTB/xQU
-        wP8TE7//ExO9/xISu/8REbr/KCj3/z09ptoAAAA3AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAMAAAAKDg4b5MsLPn/GBi+/xISvf8TE7//FBTA/xQUwv8VFcP/FRXE/xYW
-        xf8WFsb/FhbG/xcXx/8XF8f/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/GBjJ/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMv/GBjL/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZ
-        zP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgY
-        yv8YGMn/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yP8XF8f/FxfH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FBTC/xQUwP8TE7//ExO9/xcXvf8sLPn/Ozt+pQAA
-        ACkAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAcAAAAQzg4
-        6fsoKND/EhK+/xMTv/8TE8H/FBTC/xUVw/8VFcT/FRXF/xYWxv8WFsf/FhbI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8XF8r/GBjK/xgY
-        yv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        zP8YGMz/GBjM/xgYzP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8WFsj/FhbH/xYWxv8VFcX/FRXF/xUV
-        w/8UFML/FBTB/xMTv/8SEr7/JibN/zg46/4LCxJKAAAAHQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABEAAAAvSEi12zY2/v8UFMD/ExPB/xMTwv8UFMT/FBTF/xUV
-        xv8VFcf/FhbI/xYWyf8WFsn/FhbK/xYWyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcXzP8XF8z/FxfM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcX
-        zP8XF8z/FxfM/xcXzP8XF8z/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyf8WFsn/FhbI/xUVx/8VFcb/FBTF/xQUxP8TE8L/ExPB/xMTwP82Nvz/Rka54gAA
-        ADAAAAARAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA
-        AB4rK0pjOzv5/iYmyv8SEsD/ExPC/xMTw/8UFMT/FBTF/xUVxv8VFcf/FhbI/xYWyf8WFsn/FhbJ/xYW
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXzP8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcXzP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcX
-        y/8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FhbK/xYWyf8WFsn/FhbJ/xYWyP8VFcf/FRXG/xQU
-        xf8UFMT/ExPD/xMTwv8SEsD/IyPI/zs7+v8yMlhuAAAAIAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEQAAAC5OTsLiPDz//xYWwv8SEsL/ExPD/xQU
-        xP8UFMX/FBTG/xUVx/8VFcj/FhbJ/xYWyf8WFsr/FhbK/xYWyv8WFsv/FhbL/xYWy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfM/xcXzP8XF8z/FxfM/xcXzP8XF8z/GBjM/xgY
-        zP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xYWy/8WFsv/FhbL/xYW
-        yv8WFsr/FhbK/xYWyf8WFsn/FRXI/xUVx/8UFMb/FBTG/xQUxP8TE8P/EhLC/xYWwv87O///T0/I6QAA
-        AC8AAAARAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAAIAAAAGicnQlJKSvT+MTHq/xMTwv8TE8P/ExPF/xQUxv8UFMf/FBTI/xUVyP8VFcn/FRXK/xYW
-        yv8WFsr/FhbL/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbM/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfN/xcX
-        zf8XF83/FxfN/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbL/xYWyv8WFsr/FRXK/xUVyf8VFcj/FBTI/xQU
-        x/8UFMb/ExPF/xMTw/8SEsL/MDDm/0pK9f4xMVJeAAAAGwAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAOAAAAIlJSmqdPT/7/Kyvc/xMT
-        xf8TE8b/FBTH/xUVyP8VFcn/FRXK/xYWyv8WFsv/FhbL/xYWzP8WFsz/FxfM/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zP8XF8z/FhbM/xYWy/8WFsv/FhbK/xUVyv8VFcn/FRXI/xQUx/8TE8b/ExPF/ygo1/9LS/7/VVWisQAA
-        ACMAAAAOAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAARAAAAKFtbus5LS///IiLJ/xMTxv8TE8f/FBTI/xQUyf8VFcr/FRXK/xUV
-        y/8WFsz/FhbM/xYWzP8WFsz/FhbN/xYWzf8WFs3/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FhbN/xYWzf8WFs3/FhbM/xYWzP8WFsz/FhbM/xUVy/8VFcr/FRXK/xQU
-        yf8UFMj/ExPH/xMTxv8hIcn/Skr//1tbwNcAAAApAAAAEQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAK2Fh
-        1epOTv//JibM/xUVx/8WFsj/FhbJ/xcXyv8XF8v/GBjL/xgYzP8YGMz/GBjM/xgYzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8YGM3/GBjM/xgYzP8YGMz/GBjL/xcXy/8XF8r/FhbJ/xYWyP8VFcf/JCTK/0xM//9hYdvwAAAALAAA
-        ABQAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAUFhYgMGlp1elXV///MDDh/xcXx/8WFsj/FxfJ/xcX
-        yf8YGMr/GBjL/xgYy/8ZGcv/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xoa
-        zv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcv/GBjL/xgYy/8YGMr/FxfJ/xcX
-        yf8XF8j/FhbH/y4u3f9VVf//aWnb7yAgNDgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
-        AAcAAAATAAAAJmhovcldXf7/PDz0/xsbyf8WFsn/FxfJ/xcXyv8XF8r/GBjL/xgYy/8YGMz/GBjM/xgY
-        zP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GBjM/xgY
-        zP8YGMz/GBjM/xgYy/8YGMv/FxfK/xcXyv8XF8n/FhbJ/xsbyf85OfD/Xl7+/2lpxNIAAAAnAAAAFAAA
-        AAgAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAcAAAARAAAAIGRkp5xzc/f8VFT//y0t
-        2v8ZGcr/FhbK/xcXyv8XF8v/FxfL/xcXzP8XF8z/GBjM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfL/xcXy/8XF8r/FhbK/xgY
-        yf8rK9f/U1P//3Bw+P5lZaukAAAAIQAAABEAAAAHAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAAMAAAAFzAwSjxxcc/cc3P7/ltb//83N+f/HR3N/xcXzP8XF8z/FxfN/xcX
-        zf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zf8YGM3/FxfN/xcXzf8XF8z/FxfM/x0dzf80NOT/WVn//3R0/P5zc9XgMzNNPQAAABgAAAAMAAAABQAA
-        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAA
-        ABo9PVxDdHTN0X198/x1df//YmL//1FR//9BQf//ODjo/ygo5v8eHtH/FxfP/xcXz/8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcXz/8XF8//HR3Q/ycn5P83N+j/QED//1FR//9hYf//dHT//3p6
-        9fx1dc/XQUFnSwAAABsAAAAQAAAACAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAACAAAAA8AAAAWAAAAIFxcjml0dMbAenrh7Hl5
-        4O5/f/P8fn70/IKC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//fX31/H9/8/x5eePuenri7XR0x8NeXpJuAAAAIAAAABYAAAAPAAAACQAAAAQAAAABAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAABAAAAAwAAAAYAAAAKAAAADwAAABMAAAAXAAAAGwAAAB4AAAAgAAAAIgAAACMAAAAjAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAjAAAAIwAAACIAAAAgAAAAHgAAABsAAAAYAAAAEwAA
-        AA8AAAAKAAAABwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
-        ///////////////////////////////////////////////////////////////////////////gAAAA
-        AAAAAAAAAAf/////AAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///g
-        AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAA
-        AP//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA
-        AAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAP/wA
-        AAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAA
-        Af//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///wAAAAAAAAAAAAAAAAD///+AAAAAAAAAAA
-        AAAAAB////wAAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAA////////////////////////////////
-        ////////////////////////////////////////////////////////
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/MapForm.Designer.cs b/PokemonGo/RocketAPI/Window/MapForm.Designer.cs
deleted file mode 100644
index b018491..0000000
--- a/PokemonGo/RocketAPI/Window/MapForm.Designer.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-namespace PokemonGo.RocketAPI.Window
-{
-    partial class MapForm
-    {
-        /// <summary>
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            this.components = new System.ComponentModel.Container();
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MapForm));
-            this.gMapControl1 = new GMap.NET.WindowsForms.GMapControl();
-            this.trackBar = new System.Windows.Forms.TrackBar();
-            this.tmrUpdate = new System.Windows.Forms.Timer(this.components);
-            ((System.ComponentModel.ISupportInitialize)(this.trackBar)).BeginInit();
-            this.SuspendLayout();
-            //
-            // gMapControl1
-            //
-            this.gMapControl1.BackColor = System.Drawing.SystemColors.Info;
-            this.gMapControl1.Bearing = 0F;
-            this.gMapControl1.CanDragMap = false;
-            this.gMapControl1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.gMapControl1.EmptyTileColor = System.Drawing.Color.Navy;
-            this.gMapControl1.GrayScaleMode = false;
-            this.gMapControl1.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
-            this.gMapControl1.LevelsKeepInMemmory = 5;
-            this.gMapControl1.Location = new System.Drawing.Point(0, 0);
-            this.gMapControl1.MarkersEnabled = true;
-            this.gMapControl1.MaxZoom = 2;
-            this.gMapControl1.MinZoom = 2;
-            this.gMapControl1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.ViewCenter;
-            this.gMapControl1.Name = "gMapControl1";
-            this.gMapControl1.NegativeMode = false;
-            this.gMapControl1.PolygonsEnabled = true;
-            this.gMapControl1.RetryLoadTile = 0;
-            this.gMapControl1.RoutesEnabled = true;
-            this.gMapControl1.ScaleMode = GMap.NET.WindowsForms.ScaleModes.Integer;
-            this.gMapControl1.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
-            this.gMapControl1.ShowTileGridLines = false;
-            this.gMapControl1.Size = new System.Drawing.Size(472, 389);
-            this.gMapControl1.TabIndex = 23;
-            this.gMapControl1.Zoom = 0D;
-            //
-            // trackBar
-            //
-            this.trackBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.trackBar.BackColor = System.Drawing.SystemColors.Info;
-            this.trackBar.Location = new System.Drawing.Point(415, 12);
-            this.trackBar.Name = "trackBar";
-            this.trackBar.Orientation = System.Windows.Forms.Orientation.Vertical;
-            this.trackBar.Size = new System.Drawing.Size(45, 104);
-            this.trackBar.TabIndex = 26;
-            this.trackBar.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
-            this.trackBar.Scroll += new System.EventHandler(this.trackBar_Scroll);
-            //
-            // tmrUpdate
-            //
-            this.tmrUpdate.Enabled = true;
-            this.tmrUpdate.Interval = 500;
-            this.tmrUpdate.Tick += new System.EventHandler(this.tmrUpdate_Tick);
-            //
-            // MapForm
-            //
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(472, 389);
-            this.Controls.Add(this.trackBar);
-            this.Controls.Add(this.gMapControl1);
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.Name = "MapForm";
-            this.Text = "Map";
-            ((System.ComponentModel.ISupportInitialize)(this.trackBar)).EndInit();
-            this.ResumeLayout(false);
-            this.PerformLayout();
-
-        }
-
-        #endregion
-
-        private GMap.NET.WindowsForms.GMapControl gMapControl1;
-        private System.Windows.Forms.TrackBar trackBar;
-        private System.Windows.Forms.Timer tmrUpdate;
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/MapForm.cs b/PokemonGo/RocketAPI/Window/MapForm.cs
deleted file mode 100644
index cc49274..0000000
--- a/PokemonGo/RocketAPI/Window/MapForm.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using GMap.NET;
-using GMap.NET.MapProviders;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public partial class MapForm : Form
-    {
-        private PokemonGo.RocketAPI.Client Client;
-
-        public MapForm(ref PokemonGo.RocketAPI.Client client)
-        {
-            InitializeComponent();
-
-            // Set the client
-            Client = client;
-
-            // Initialize map:
-            // Use google provider
-            gMapControl1.MapProvider = GoogleMapProvider.Instance;
-
-            // Get tiles from server only
-            gMapControl1.Manager.Mode = AccessMode.ServerOnly;
-
-            // Do not use proxy
-            GMapProvider.WebProxy = null;
-
-            // Zoom min/max
-            gMapControl1.CenterPen = new Pen(Color.Red, 2);
-            gMapControl1.MinZoom = trackBar.Maximum = 1;
-            gMapControl1.MaxZoom = trackBar.Maximum = 20;
-
-            // Set zoom
-            trackBar.Value = 17;
-            gMapControl1.Zoom = trackBar.Value;
-        }
-
-        private void trackBar_Scroll(object sender, EventArgs e)
-        {
-            gMapControl1.Zoom = trackBar.Value;
-        }
-
-        private void tmrUpdate_Tick(object sender, EventArgs e)
-        {
-            gMapControl1.Position = new PointLatLng(Client.CurrentLatitude, Client.CurrentLongitude);
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/MapForm.resx b/PokemonGo/RocketAPI/Window/MapForm.resx
deleted file mode 100644
index 118fdbe..0000000
--- a/PokemonGo/RocketAPI/Window/MapForm.resx
+++ /dev/null
@@ -1,1548 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="tmrUpdate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
-        IACoJQAA7h4AAICAAAABACAAKAgBAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA
-        AAAAAAAABAQEAAAAAAE8PDwcU1NTM1NTUzRTU1M0U1NTNFNTUzRTU1M0U1NTNFNTUzRTU1M0U1NTMzw8
-        PBwAAAACBAQEAAAAAAGLi4tQurq6yMXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXF
-        xeS6urrIjIyMUQAAAAF+fn4kycnJ0dzd3P/e3t7/3t7e/9/f3//f39//4ODg/+Dg4P/f4N//39/f/97e
-        3v/e3t7/3N3c/8nJydKAgIAlsbGxRtna2fHf4N//4OHg/+Hh4f/i4uL/4+Pj/+Pk4//j5OP/4+Pj/+Li
-        4v/h4uH/4OHg/9/g3//Z2tnysbGxR7a2tknc3dzz4uPi/+Pk4//l5eX/5ubm/+nq6f/n5+f/5ufm/+rq
-        6v/m5+b/5eXl/+Tk5P/i4+L/3N3c87a3tku3uLdJ39/f8+Xm5f/n5+f/6Ono/+jo6P+oqKj/WFhY/1JS
-        Uv+YmJj/5OXk/+np6f/n5+f/5ubm/9/g3/O4uLhLt7e3SeDg4PPn5+f/6Ono/+zt7P+lpaX/JCQk/2Vl
-        Zf9vb2//JSUl/4qKiv/r7Ov/6Ono/+fn5//g4ODzuLi4Sz4+PElNTUvzUFBO/1FRT/9TU1H/IyMi/3Fy
-        cv/q6ur/7e7t/5CQkP8dHRz/UFBO/1FRT/9QUE7/TU1L8z8/PksAABVJAAAa8wAAHf8AAB7/AAAf/wAA
-        DP+Kion/+fn5//r6+v+pqan/BgYP/wAAHv8AAB7/AAAd/wAAGvMCAhdLBgZ0SQgIj/MJCZv/Cgqh/woK
-        qP8FBWj/LS0v/6mppv+0tLL/Pz8+/wQEUv8KCqf/Cgqi/wkJnP8JCZDzDQ14SwgIhEkLC6DzDAys/w0N
-        sf8ODrb/Dg6z/wcHZf8KCir/DAwo/wYGVv8NDa3/Dg63/w0Nsv8MDKz/Cwuh9BAQiEsKCo9JDQ2r8w8P
-        tP8PD7j/EBC7/xERv/8REcH/EBC0/xAQsv8REcD/ERHA/xAQu/8PD7j/Dw+0/w4Oq/QSEpJLDg6bSBER
-        tvISEr3/ExO//xQUwv8UFMT/FRXF/xUVx/8VFcj/FRXG/xQUxP8UFML/ExPA/xISvf8REbbzFBSeSh4e
-        qDMYGMHlFRXF/xYWx/8WFsj/FxfK/xcXy/8YGMv/GBjL/xcXy/8XF8r/FhbJ/xYWx/8VFcX/GBjB5h8f
-        qDQ5OZAGKSnIgh4ezfMaGs7+GhrO/hoazv4bG8/+GxvP/hsbz/4bG8/+GhrO/hoazv4aGs7+Hh7N9Ckp
-        yIM5OZEGSUnJAE9Pvgs+PtFPNTXUdTIy03YyMtN1MjLTdTIy03UyMtN1MjLTdTIy03UyMtN2NTXUdT4+
-        0U9PT74LSEjJAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAIABAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA
-        AAYAAAAGAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAPDw8QWlpaUoCAgImEhISVhISElYSE
-        hJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYGBgYlbW1tTEBAQEC8v
-        LwAAAAAANDQ0ABYWFhGQkJCOx8fH8NXV1f/X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY
-        2P/X19f/19fX/9fX1//X19f/19fX/9bW1v/IyMjwkZGRjxkZGRI2NjYA////AIuLi2HR0dH129vb/9zc
-        3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/97e3v/e3t7/3t7e/97e3v/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc
-        3P/b29v/0dHR9YyMjGP///8AAAAACL+/v6jc3Nz/3d7d/97f3v/f39//3+Df/+Dg4P/g4eD/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4OHg/+Dg4P/f4N//39/f/97f3v/d3t3/3Nzc/8DAwKkAAAAILy8vDc3N
-        zbve3t7/4ODg/+Dh4P/h4eH/4uLi/+Li4v/j4+P/4+Tj/+Tk5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eHh/+Dh4P/g4OD/3t7e/83Nzb03NzcOMDAwDc7Ozrzg4OD/4eLh/+Lj4v/j4+P/5OTk/+Xl
-        5f/l5uX/5ubm/+fn5//p6en/6enp/+fn5//m5ub/5ebl/+Xl5f/k5OT/4+Tj/+Pj4//i4uL/4ODg/87O
-        zr49PT0PMDAwDc/Pz7vi4uL/4+Tj/+Tl5P/l5eX/5ubm/+fn5//o6Oj/6+vr/+Lj4v/MzMz/yMjI/93e
-        3f/r6+v/6Ono/+fn5//m5+b/5ebl/+Xl5f/k5OT/4uLi/8/Pz748PDwPLy8vDdDR0Lvk5OT/5ubm/+fn
-        5//n6Of/6Ono/+nq6f/r6+v/r6+v/0ZGRv8YGBj/FBQU/zU1Nf+UlJT/5ubm/+rq6v/o6ej/6Ojo/+fn
-        5//m5ub/5OTk/9DR0L48PDwPLi4uDdPT07vo6Oj/6urq/+vr6//r7Ov/7O3s//Dw8P+srKz/FxcX/xAQ
-        EP9MTEz/VVVV/x0dHf8ICAj/hoaG/+3u7f/t7e3/7Ozs/+vr6//q6ur/6Ojo/9PT0747OzsPJiYmDbW1
-        tbvIycj/ysvK/8zMzP/Nzc3/zs/O/8fHx/86Ojr/ExMT/6Ghof/f39//4uLi/7y8vP8uLi7/Ghoa/7O0
-        s//Q0ND/zc3N/8zMzP/Ly8v/ycnJ/7W1tb4zMzMPBAQEDRYWFrsZGRn/Ghoa/xoaGv8bGxr/Gxsb/xgY
-        GP8AAAD/XF1c/+fn5//s7Oz/7e3t/+vr6/+MjIz/AgIC/xQUFP8bGxv/Gxsb/xoaGv8aGhr/GRkZ/xYW
-        Fr4KCgoPAAAADQAAALsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/cHBw/+/v7//19fX/9fb1//Ly
-        8v+hoaH/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAb4FBQUPAQEaDQQEXbsFBWj/BgZu/wYG
-        cf8GBnP/BgZ2/wYGcf8AABf/NjY1/9ra2v/3+Pf/+Pj4/+vr6/9eXl3/AAAH/wYGY/8HB3f/BgZ0/wYG
-        cf8GBm7/BQVo/wcHX74QECYPAgInDQgIjrsJCZ7/Cgqn/wsLq/8LC6//Cwuz/wwMuP8HB2T/AgIE/0tL
-        Sv+pqan/srKy/2ZmZv8JCQf/BARC/wsLsv8LC7T/Cwuw/wsLrP8KCqf/CQmf/wsLkL8YGDkPAgIqDQkJ
-        krsLC6L/DAyp/wwMrf8NDbD/DQ2z/w4Ot/8NDbP/Bwdb/wEBC/8FBQP/BwcF/wEBBf8FBUH/DQ2m/w4O
-        uf8NDbT/DQ2x/wwMrv8MDKr/Cgqi/w0NlL8YGDwPAwMsDQoKmrsMDKj/DQ2v/w4Osv8ODrT/Dw+3/w8P
-        uv8PD73/EBC9/w0Nmf8KCm//CQlp/wwMjv8QELj/EBC+/w8Puv8PD7j/Dg61/w4Osv8NDa//DAyo/w4O
-        m78ZGj8PAwMvDQwMorsODq//Dw+1/w8Pt/8QELn/EBC7/xERvv8REcD/ERHB/xISxf8SEsf/EhLH/xIS
-        xf8REcL/ERHA/xERvv8QELz/EBC6/w8PuP8PD7X/DQ2v/xAQo78bG0IPBAQyDQ4OqrsQELf/EhK7/xIS
-        vf8TE7//ExPA/xMTwv8UFMP/FBTE/xQUxf8VFcb/FRXG/xUVxf8UFMX/FBTD/xQUwv8TE8D/ExO//xIS
-        vf8SErv/EBC3/xISrL8cHEYPDAwzCxUVs7cTE73/FBTB/xUVw/8VFcP/FhbF/xYWxv8WFsf/FxfI/xcX
-        yP8XF8n/FxfJ/xcXyf8XF8j/FhbH/xYWxv8WFsX/FRXE/xUVw/8UFMH/ExO9/xYWtLkWFj0MCQkAAiIi
-        uo0WFsT/FRXG/xYWyP8WFsn/FxfK/xcXyv8XF8v/GBjM/xgYzP8YGM3/GBjN/xgYzP8YGMz/GBjL/xcX
-        y/8XF8r/FhbJ/xYWyP8VFcb/FhbE/yIiu48LCwACPDzgADU1tDAmJsvXFxfK/xYWy/8XF8z/FxfM/xcX
-        zf8XF83/FxfO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfN/xcXzf8XF8z/FxfM/xYWy/8XF8r/JSXL2DU1
-        tDE8POIAQUFyAAAA/wBDQ8U7NDTSsioq0+QlJdLpJCTR6SQk0ekkJNHpJCTS6SQk0ukkJNLpJCTS6SQk
-        0ukkJNLpJCTS6SQk0ekkJNHpJSXS6Skp0+Q0NNKzQ0PGPAAA/wA+PnMAAAAAAJSUVQA3N/8AZ2e4DVpa
-        0ytQUNQyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyUFDUMlpa
-        0ytmZrkNMzP/AI+PXQAAAAAA8AAPAMAAAwCAAAEAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAMAAAwDgAAcAKAAAACAA
-        AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
-        AA4JCQksFRUVPxYWFkIWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYW
-        FkEWFhZBFhYWQRYWFkEWFhZBFhYWQhUVFT8JCQksAAAADgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAMhISEzdHR0kqamptC1tbXitbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1
-        teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW14qenp9B1dXWTIiIiNAAAAAMAAAAAAAAAAAAA
-        AAAAAAAAMTExN6Kior/U1NT82tra/9ra2v/a2tr/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9TU1Pyjo6PAMzMzOAAA
-        AAAAAAAAGhoaAAAAABOenp6l2NjY/tra2v/b29v/3Nvc/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zb3P/b29v/2tra/9jY
-        2P+goKCmAAAAFB0dHQDDw8MAY2NjP87Ozujb29v/3Nzc/93e3f/e3t7/3t7e/97f3v/f39//39/f/9/g
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/f39//39/f/9/f3//e3t7/3t7e/93e
-        3f/c3Nz/29vb/8/Pz+lmZmZAysrKAP///wCcnJxg29vb+9zc3P/e3t7/39/f/9/f3//g4OD/4ODg/+Dh
-        4P/h4eH/4eLh/+Li4v/i4uL/4uLi/+Lj4v/i4+L/4uLi/+Li4v/i4uL/4eLh/+Hh4f/h4eH/4ODg/+Dg
-        4P/f39//39/f/97e3v/c3Nz/29vb+52dnWL///8A////AKenp2jc3dz+3t7e/+Dg4P/g4eD/4eHh/+Hi
-        4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OXk/+Tl5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eLh/+Hh4f/g4eD/4ODg/97e3v/c3Nz+p6ena////wD///8Ap6enaN7e3v7f4N//4eHh/+Li
-        4v/i4+L/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5+b/5ufm/+bm5v/m5ub/5ubm/+Xm
-        5f/l5eX/5OXk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/3+Df/93e3f6oqKhs////AP///wCnp6do39/f/uDh
-        4P/i4+L/4+Tj/+Tk5P/k5eT/5eXl/+bm5v/m5+b/5+fn/+fo5//o6ej/6+zr/+3t7f/t7e3/7Ozs/+nq
-        6f/n6Of/5+fn/+bn5v/m5ub/5ebl/+Xl5f/k5OT/5OTk/+Pj4//g4eD/3t/e/qmpqWz///8A////AKeo
-        p2jg4OD+4uLi/+Tl5P/l5eX/5ubm/+bm5v/n5+f/5+jn/+jo6P/p6en/7Ozs/+Dg4P+1tbX/j4+P/4iI
-        iP+np6f/1dXV/+zs7P/p6un/6Ojo/+jo6P/n5+f/5ufm/+bm5v/l5eX/5OXk/+Li4v/g4OD+qampbP//
-        /wD///8AqKioaOHi4f7k5OT/5ubm/+bn5v/n5+f/6Ojo/+jp6P/p6en/6urq/+3t7f+3t7f/Q0ND/wsL
-        C/8AAAD/AAAA/wUFBf8qKir/kpKS/+fo5//r6+v/6erp/+np6f/o6Oj/5+jn/+fn5//m5ub/5OTk/+Hi
-        4f6qqqps////AP///wCoqKho4+Pj/uXl5f/n5+f/6Ojo/+np6f/p6un/6urq/+vr6//u7+7/tLS0/x8f
-        H/8AAAD/CwsL/y8vL/83Nzf/FRUV/wAAAP8JCQn/g4OD/+zs7P/r6+v/6urq/+nq6f/p6en/6Ojo/+fo
-        5//l5uX/4+Pj/qqqqmz///8A////AKqqqmjo6Oj+6+zr/+3t7f/u7u7/7u/u/+/v7//w8PD/8vLy/+Dg
-        4P87Ozv/AAAA/ykpKf+ioqL/09PT/9fX1/+6urr/T09P/wAAAP8UFBT/ubm5//T09P/w8PD/7/Dv/+/v
-        7//u7u7/7e3t/+vs6//o6Oj+rKysbP///wD+/v4AZWVlaIuLi/6Oj47/kZGR/5KSkv+Tk5P/lJSU/5SV
-        lP+YmJj/cHBw/wUFBf8QEBD/q6ur/+Xl5f/l5eX/5ubm/+Pk4//R0tH/NjY2/wAAAP9KSkr/l5eX/5WV
-        lf+UlJT/k5OT/5KSkv+RkZH/j4+P/4uLi/5nZ2dt////AAAAAAAAAABoAAAA/gAAAP8AAAD/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8AAAD/AAAA/0FBQf/g4OD/6urq/+7u7v/u7u7/7O3s/+jo6P+BgYH/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/gICAm0AAAAAAAAAAAAAAGgAAAD+AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/UlJS/+fo5//w8fD/9PX0//T09P/09PT/7O3s/5WV
-        lf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AgICbQAAAAAEBFUAAQEiaAIC
-        LP4CAi7/AgIw/wMDMf8DAzH/AwMy/wMDM/8DAzX/AgIk/wAAAP8uLi7/3Nzc//Dw8P/4+fj/+fr5//Ly
-        8v/u7u7/Z2dn/wAAAP8BARb/AwM0/wMDM/8DAzL/AwMy/wMDMf8CAjD/AgIu/wICLP4GBiVtAwNYAA0N
-        /wAFBXFoBweS/ggImf8ICKD/CQmk/wkJpv8JCan/CQms/woKsf8JCZb/AQET/wMDAv98fHz/7O3s//P0
-        8//09PT/8vPy/6+vr/8WFhb/AAAA/wYGbv8KCrP/CQmt/wkJqv8JCaf/CQmk/wgIof8ICJr/CAiS/g8P
-        dm0KCv8AEBD/AAYGdGgICJb+CQmd/woKpP8LC6f/Cwuq/wsLrf8LC7D/DAyy/wwMtv8GBl3/AAAB/woK
-        Cf9ZWVn/o6Oj/6ysrP93d3f/Ghoa/wAAAP8EBDL/Cwur/wwMtP8MDLD/Cwut/wsLq/8LC6j/Cgqk/wkJ
-        nf8JCZb+EBB5bQ4O/wASEv8ABwd5aAoKm/4LC6L/Cwuo/wwMq/8MDK7/DAyw/w0Ns/8NDbX/DQ24/w0N
-        sv8HB1P/AQEG/wAAAP8DAwL/BAQC/wAAAP8AAAH/BAQw/wwMnv8NDbr/DQ22/w0Ns/8MDLH/DAyu/wwM
-        rP8MDKn/Cgqi/woKnP4REX9tEBD/ABQU/wAICH5oCwuh/gwMpv8MDKz/DQ2v/w4Osf8NDbP/Dg61/w8P
-        uP8ODrr/Dw+9/w8Puv8LC4P/BgZA/wMDHv8CAhr/BAQy/wkJa/8PD6//Dw++/w4Ouv8PD7j/Dg62/w4O
-        tP8NDbH/DQ2v/w0Nrf8MDKf/Cwuh/hIShG0SEv8AFxf/AAkJg2gMDKf+DQ2r/w4Osf8ODrP/Dw+1/w8P
-        tv8PD7j/EBC6/xAQvP8QEL7/ERHA/xERxP8REcD/EBCz/xAQsf8REbz/ERHE/xERwf8QEL7/EBC8/xAQ
-        u/8PD7n/Dw+3/w8Ptf8PD7P/Dg6x/w0Nq/8NDaf+FBSIbRQU/wAZGf8ACgqJaA0Nrf4ODrD/Dw+1/w8P
-        t/8QELn/EBC6/xAQvP8QEL3/ERG//xERwP8REcH/EhLC/xISw/8SEsT/EhLF/xISw/8SEsL/ERHC/xER
-        wf8REb//ERG+/xAQvP8QELv/EBC5/w8PuP8PD7X/Dg6x/w4Orf4VFY5tFhb/ABwc/wALC45oDw+z/hAQ
-        tv8REbr/ERG8/xISvf8SEr7/EhK//xMTwf8TE8L/ExPD/xMTxP8UFMX/FBTF/xQUxv8UFMb/FBTF/xQU
-        xf8TE8T/ExPD/xMTwv8TE8H/EhLA/xISvv8SEr3/ERG8/xERuv8QELb/EBC0/hcXlG0aGv8AIiL/AA4O
-        lWcREbn9ExO7/xQUv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xYWxf8WFsb/FhbG/xYWx/8WFsf/FxfI/xcX
-        yP8XF8f/FhbH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FRXC/xQUwf8UFMD/FBS//xMTu/8SErn+FhaZaiAg
-        /wAzM/8AHR2dWRYWwPoTE7//FRXD/xUVxf8VFcX/FRXG/xYWxv8WFsf/FhbI/xcXyf8XF8n/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcXyf8WFsj/FhbH/xYWx/8VFcb/FRXF/xUVxf8VFcP/ExO//xYW
-        v/ocHJ1aMjL/ADU1wAApKY0sISHG3xQUw/8WFsf/FhbJ/xcXyf8XF8r/FxfK/xcXy/8YGMv/GBjM/xgY
-        zP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGMz/GBjM/xgYy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xYW
-        x/8UFMP/ISHG4Coqjy41NcIAHx9GABkZAAQ0NMSCHh7M/BQUyP8WFsv/FxfM/xcXzP8XF8z/FxfN/xcX
-        zf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfN/xcXzf8XF8z/FxfM/xcX
-        zP8WFsv/FBTI/x4ezPw0NMSEHR0ABSEhSwAAAAAASUm3AENDkRM+Ps6UKCjS9Rsbzv8ZGc3/GRnN/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc3/GRnN/xsbzv8oKNL1PT3OlkJClBNISLkAAAAAAAAAAAAAAAAAWFi1AFVVlwtQUMtSRUXXnjw8
-        2bk2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY2
-        1rs2Nta7NjbWuzY21rs8PNm5RUXXn09PzFNVVZgMV1e2AAAAAAAAAAAAAAAAAAAAAAAAAAAA1NQAAFNT
-        /wCUlIYEgoKoCX19rQp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8
-        rAp8fKwKfHysCnx8rAp8fKwKfX2tCoKCqAmTk4YETU3/AMrKAAAAAAAAAAAAAAAAAAD/////4AAAB8AA
-        AAPAAAADgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
-        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPgAAAH+AAAHygA
-        AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAJAAAAEAAAABRAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFEAAABAAAAAJAAAAAwAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAACMbGxtiXl5eopGRkcqlpaXapqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qWlpdqSkpLLX19fox0d
-        HWMAAAAkAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAMVJSUpCzs7Pg19fX/Nzc
-        3P/b29v/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb
-        2//c3Nz/2NjY/LW1teFUVFSRAAAAMQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAnaWlpl8zM
-        zPHb29v/19fX/9fX1//Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9jY2P/X19f/19fX/9vb2//Ozs7xbW1tmAAAACgAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AA9TU1N0y8vL7dra2v/Y2Nj/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/2tra/9jY2P/a2tr/zMzM7lZWVnYAAAAQAAAAAAAA
-        AAAAAAAAAAAAAA4ODjGwsLDF3d3d/9nZ2f/b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/d3d3/3d3d/97e
-        3v/e3t7/3t7e/97e3v/e3t7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/e
-        3//e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9vb2//Z2dn/3d3d/7Ky
-        sscQEBAyAAAAAAAAAAAAAAAAAAAAA1paWl3V1dXv2tra/9vb2//c3dz/3d7d/97e3v/e3t7/3t7e/97f
-        3v/f39//39/f/9/f3//f4N//4ODg/+Dg4P/g4OD/4ODg/+Dh4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4eD/4OHg/+Dg4P/g4OD/4ODg/9/g3//f39//39/f/9/f3//e397/3t7e/97e3v/e3t7/3d7d/9zd
-        3P/b29v/2tra/9bW1vBeXl5fAAAAAwAAAAAAAAAAAAAABpSUlIHf39/92tra/9zd3P/e3t7/39/f/9/f
-        3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4uH/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Hh4f/g4eD/4ODg/+Dg4P/g4OD/3+Df/9/f
-        3//f39//39/f/97e3v/c3dz/2tra/9/f3/2WlpaCAAAABgAAAAAAAAAAAAAAB6mpqY3g4OD/29zb/93e
-        3f/f39//3+Df/9/g3//g4OD/4OHg/+Dh4P/h4eH/4eHh/+Hi4f/i4uL/4uLi/+Lj4v/i4+L/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pk4//j5OP/4+Tj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uLi/+Li4v/h4uH/4eLh/+Hh
-        4f/g4eD/4OHg/+Dg4P/f4N//3+Df/9/f3//e3t7/29zb/9/f3/+oqaiQAAAABwEBAQAAAAAAAAAAB6io
-        qJDf4N//3d3d/9/f3//g4OD/4OHg/+Dh4P/h4eH/4eLh/+Hi4f/i4uL/4uPi/+Lj4v/j4+P/4+Tj/+Tk
-        5P/k5OT/5OTk/+Tl5P/k5eT/5OXk/+Xl5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tk5P/k5OT/4+Tj/+Pj
-        4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4eH/4OHg/+Dg4P/f39//3d3d/9/f3/+qqqqVAAAACAMD
-        AwAAAAAAAAAAB6ipqJDh4eH/3t7e/+Dg4P/h4eH/4eLh/+Li4v/i4+L/4uPi/+Pj4//j5OP/4+Tj/+Tk
-        5P/k5eT/5eXl/+Xl5f/l5uX/5ebl/+bm5v/m5ub/5ubm/+bm5v/m5+b/5ubm/+bm5v/m5ub/5ebl/+Xm
-        5f/l5uX/5eXl/+Tl5P/k5OT/5OTk/+Pk4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hh4f/g4OD/3t7e/+Dg
-        4P+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDh4eH/39/f/+Dh4P/i4uL/4uPi/+Pj4//j4+P/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/m5+b/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tl5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Li
-        4v/g4eD/39/f/+Hh4f+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDi4uL/3+Df/+Hh4f/i4+L/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/n5+f/5+fn/+fo5//o6Oj/6Ojo/+jo6P/o6ej/6urq/+zs
-        7P/s7Oz/6+vr/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Pj4//h4eH/3+Df/+Li4v+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDj4+P/4eHh/+Lj
-        4v/k5OT/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5+b/5+fn/+fo5//o6Oj/6Ojo/+np6f/p6en/6urq/+7u
-        7v/o6ej/1dXV/8DBwP+6urr/y8vL/+Dg4P/u7u7/7Ozs/+np6f/p6en/6Ono/+jo6P/o6Oj/5+fn/+fn
-        5//m5ub/5ubm/+Xm5f/l5eX/5eXl/+Tk5P/i4+L/4eHh/+Pj4/+rq6uVAAAACAMDAwAAAAAAAAAAB6mp
-        qZDk5OT/4uLi/+Pk4//l5eX/5ubm/+bm5v/m5+b/5+fn/+fn5//o6Oj/6Ojo/+jp6P/p6en/6erp/+nq
-        6f/t7u3/4uPi/52dnf9QUFD/IyMj/xISEv8NDQ3/Ghoa/zY2Nv92dnb/x8fH/+7u7v/q6+r/6erp/+np
-        6f/p6en/6Ojo/+jo6P/n6Of/5+fn/+bn5v/m5ub/5ubm/+Xl5f/k5OT/4uLi/+Tk5P+srKyVAAAACAMD
-        AwAAAAAAAAAAB6qqqpDl5eX/4uPi/+Tl5P/m5ub/5ufm/+fn5//n6Of/6Ojo/+jp6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+/v7//Jycn/S0tL/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Hh4e/5KS
-        kv/q6ur/6+zr/+rr6v/q6ur/6erp/+np6f/o6ej/6Ojo/+fo5//n5+f/5ufm/+bm5v/l5eX/4+Pj/+Tl
-        5P+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDm5ub/4+Tj/+Xm5f/n5+f/5+jn/+jo6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+rr6v/r6+v/7+/v/8bGxv8wMDD/AAAA/wAAAP8AAAD/AQEB/wcHB/8JCQn/AwMD/wAA
-        AP8AAAD/AAAA/wsLC/+CgoL/7Ozs/+zs7P/r6+v/6uvq/+rq6v/p6un/6enp/+jp6P/o6Oj/5+jn/+fn
-        5//m5ub/5OTk/+Xm5f+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDn5+f/5OXk/+bn5v/o6Oj/6Ono/+np
-        6f/p6un/6urq/+rr6v/r6+v/6+vr/+vs6//u7u7/39/f/0NDQ/8AAAD/AAAA/wAAAP8lJSX/c3Nz/6io
-        qP+ysrL/kZGR/0pKSv8JCQn/AAAA/wAAAP8NDQ3/o6Oj//Dx8P/s7Oz/6+zr/+vr6//q6+r/6urq/+nq
-        6f/p6en/6Ono/+jo6P/n5+f/5eXl/+bm5v+srKyVAAAACAMDAwAAAAAAAAAAB6urq5Dq6ur/6Ono/+rr
-        6v/r7Ov/7Ozs/+3t7f/t7e3/7e7t/+7u7v/u7u7/7+/v/+/v7//09PT/jIyM/wMDA/8AAAD/AAAA/0hI
-        SP/IyMj/5ubm/+Dg4P/f39//4+Pj/+Dg4P+NjY3/EhIS/wAAAP8AAAD/NDQ0/97e3v/x8fH/7+/v/+7v
-        7v/u7u7/7u7u/+3t7f/t7e3/7Ozs/+vs6//r6+v/6enp/+rq6v+tra2VAAAACAMDAwAAAAAAAAAAB4yM
-        jJDCw8L/w8PD/8XGxf/Hx8f/yMjI/8nJyf/Jycn/ysrK/8vLy//Ly8v/zMzM/83Nzf/Dw8P/MzMz/wAA
-        AP8AAAD/Ly8v/8/Pz//i4+L/29vb/+Pj4//l5eX/39/f/9vc2//o6Oj/gYGB/wMDA/8AAAD/BQUF/4yM
-        jP/Q0ND/zMzM/8zMzP/Ly8v/ysrK/8nKyf/Jycn/yMjI/8fHx//Gxsb/w8PD/8LCwv+Ojo6WAAAACAMD
-        AwAAAAAAAAAABw8PD5AUFBT/FRUV/xYWFv8XFxf/GBgY/xgYGP8YGBj/GRkZ/xkZGf8ZGRn/Ghoa/xoa
-        Gv8XFxf/AwMD/wAAAP8DAwP/kZGR/+nq6f/e3t7/7Ozs/+zs7P/r6+v/7e3t/+Xm5f/g4OD/2dnZ/y0s
-        Lf8AAAD/AAAA/w4ODv8bGxv/Ghoa/xoaGv8ZGRn/GRkZ/xgYGP8YGBj/GBgY/xcXF/8WFhb/FRUV/xQU
-        FP8RERGWAAAACAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/xcXF/+Tk5P/q6ur/7/Dv/+7u7v/u7+7/7u7u//Dw
-        8P/g4eD/6+vr/2FhYf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8CAgKWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8dHR3/0dHR/+Xl5f/w8PD/8/Tz//Pz
-        8//z8/P/8/Pz//T09P/l5eX/7u7u/3h4eP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/xcXF/+vr
-        6//u7u7/+Pn4//f39//39/f/9/j3//f39//m5ub/8PDw/1tbW/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwIC
-        L5ADAzz/AwM8/wMDP/8DA0H/AwNC/wQEQv8EBEP/BARE/wQERf8EBEX/BARG/wQER/8EBED/AQEL/wAA
-        AP8BAQH/iIiI//X19f/o6Oj/9fX1//v7+//7/Pv/+fr5/+3t7f/t7u3/2NjY/yYmJv8AAAD/AAAA/wIC
-        KP8EBEj/BARG/wQERv8EBEX/BARE/wQEQ/8EBEP/BARC/wMDQf8DAz//AwM9/wMDPP8HBzKWCAgACAIC
-        AgAAAAAAAAAABwUFeJAHB5f/Bwea/wgIoP8ICKT/CQmn/wkJqv8JCav/CQmt/wkJr/8JCbH/Cgqz/woK
-        tv8KCrX/AwM7/wAAAP8AAAD/JiYm/83Nzf/29vb/6urq/+3t7f/u7+7/6uvq/+7v7v/y8vL/cXFx/wEB
-        Af8AAAD/AQEK/wgIjf8KCrn/Cgq0/wkJsv8JCbD/CQmu/wkJrP8JCar/CQmo/wgIpf8ICKH/Bwea/wcH
-        mP8QEH2XEREACAQEBAAAAAAAAAAABwYGdJAHB5P/CAiV/wgInP8JCaD/CQmk/woKpf8KCqf/Cgqp/woK
-        q/8KCq3/Cgqv/wsLsf8LC7j/CAiE/wEBCf8AAAD/AAAA/zk5Of+/v7//9fX1//f39//29/b/9/j3/+Tl
-        5P95eXn/CQkJ/wAAAP8AAAD/BAQ9/wsLs/8LC7L/Cgqw/woKrv8KCqz/Cgqq/woKqP8KCqb/CQmk/wkJ
-        of8ICJz/CAiW/wgIlP8REXqXEhIACAQEBAAAAAAAAAAABwcHeJAJCZf/CQmZ/woKn/8KCqT/Cwun/wsL
-        qP8LC6r/Cwus/wsLrv8MDLD/DAyx/wwMs/8MDLX/DQ24/wYGT/8AAAD/AAAA/wAAAP8XFxf/XFxc/4+P
-        j/+Wlpb/enp6/zQ0NP8FBQX/AAAA/wAAAP8CAhj/CwuY/w0Nuf8MDLT/DAyy/wwMsP8LC67/Cwut/wsL
-        q/8LC6n/Cwun/wsLpf8KCqD/CQma/wkJmP8SEn6XEREACAQEBAAAAAAAAAAABwcHfJAJCZv/Cgqd/woK
-        o/8LC6f/DAyq/wwMq/8MDK3/DAyu/wwMsP8NDbL/DQ2z/w0Ntf8NDbf/DQ26/w0Nsf8FBUX/AAAC/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICGf8LC4b/Dg69/w0Nt/8NDbb/DQ20/w0N
-        sv8MDLH/DAyv/wwMrf8MDKz/DAyq/wsLp/8KCqP/Cgqd/woKnP8TE4GXEREACAQEBAAAAAAAAAAABwgI
-        f5AKCp//Cwug/wsLpf8MDKr/DAys/w0Nrf8NDa//DQ2w/w0Nsv8NDbT/Dg61/w4Ot/8ODrj/Dg66/w8P
-        vf8PD7f/CAhi/wICE/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAT/BAQ0/w0NmP8PD8D/Dg66/w4O
-        uf8ODrf/Dg62/w4OtP8NDbP/DQ2x/w0Nr/8NDa7/DQ2s/wwMqv8LC6b/Cwug/woKoP8TE4WXEREACAQE
-        BAAAAAAAAAAABwgIgpALC6P/DAyj/wwMqP8NDaz/DQ2v/w4OsP8ODrH/Dg6y/w4OtP8ODrX/Dw+3/w8P
-        uP8PD7r/Dw+7/w8PvP8QEL7/EBDB/w4Oov8JCWL/BQU3/wICGv8CAhj/AwMn/wcHTP8LC4T/EBC4/xAQ
-        wf8PD7z/Dw+7/w8Puv8PD7n/Dw+3/w4Otv8ODrX/Dg6z/w4Osv8ODrD/DQ2v/w0Nrf8MDKn/DAyj/wsL
-        o/8UFIiXEREACAQEBAAAAAAAAAAABwkJhpAMDKf/DAyn/w0NrP8NDa//Dg6x/w4Osv8PD7T/Dw+1/w8P
-        tv8PD7f/Dw+5/xAQuv8QELv/EBC8/xAQvf8QEL7/ERG//xERw/8REcb/ERG//xAQtP8QELP/EBC5/xER
-        xP8REcX/ERHB/xERv/8QEL7/EBC9/xAQvP8QELr/EBC5/w8PuP8PD7f/Dw+1/w8PtP8PD7P/Dg6y/w0N
-        sP8NDaz/DAyn/wwMp/8VFYuXEBEACAQEBAAAAAAAAAAABwoKipAMDKz/DQ2r/w4Or/8ODrP/Dw+0/w8P
-        tv8QELf/EBC4/xAQuf8QELr/EBC7/xERvP8REb3/ERG+/xERv/8REcD/EhLB/xISwv8REcL/EhLD/xIS
-        xP8SEsT/EhLD/xISwv8SEsL/EhLB/xERwP8REcD/ERG//xERvv8REb3/EBC7/xAQuv8QELn/EBC4/xAQ
-        t/8PD7b/Dw+1/w4Os/8ODrD/DQ2r/w0NrP8WFo+XEBEACAQEBAAAAAAAAAAABwoKjZANDbD/DQ2u/w4O
-        sv8PD7X/Dw+3/w8PuP8QELn/EBC6/xAQu/8QELz/EBC9/xERvv8REb//ERHA/xERwf8REcH/ERHC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLD/xISw/8SEsP/ERHC/xERwv8REcH/ERHA/xERv/8REb7/EBC9/xAQ
-        vP8QELv/EBC6/xAQuf8PD7j/Dw+3/w8Ptv8ODrL/DQ2u/w0NsP8XF5OXEREACAQEBAAAAAAAAAAABwsL
-        kZAODrX/Dw+z/xAQtv8QELn/EBC7/xAQu/8REbz/ERG9/xERvv8REb//ERG//xISwf8SEsH/EhLC/xIS
-        w/8SEsP/ExPE/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPE/xISxP8SEsP/EhLC/xIS
-        wf8SEsH/ERHA/xERv/8REb7/ERG9/xERvf8QELz/EBC7/xAQuf8QELb/Dw+z/w4Otf8YGJeXEREACAQE
-        BAAAAAAAAAAABw0NlI8QELj/ERG2/xISuf8TE7z/ExO9/xMTvv8UFL//FBS//xQUwP8UFMH/FBTB/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbF/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8VFcX/FRXE/xUVw/8VFcP/FBTC/xQUwf8UFMD/FBTA/xQUv/8TE77/ExO+/xMTvP8SErn/ERG2/xER
-        uP8aGpuXEBAACAUFBQAAAAAAAAAABg8Pmo0SErz/EhK5/xMTvf8UFL//FBTA/xQUwf8UFMH/FBTC/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbG/xYWxv8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbH/xYWx/8WFsb/FhbG/xUVxf8VFcX/FRXE/xUVw/8VFcP/FRXC/xQUwf8UFMH/FBTB/xQU
-        v/8TE73/EhK5/xISvP8XF56SBQUABwMDAwAAAAAAAAAAAxwcn4MXF8L/EhK8/xQUwP8UFML/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbI/xYWyP8XF8n/FxfJ/xcXyf8XF8r/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8n/FxfJ/xcXyf8WFsj/FhbI/xYWx/8WFsf/FhbG/xYWxv8VFcX/FRXF/xUV
-        xP8VFcT/FRXE/xQUwv8UFMD/EhK8/xYWwv8aGp+EAAAABAAAAAAAAAAAAAAAACkpk18eHsn3ExO//xQU
-        wv8VFcX/FhbG/xYWx/8WFsf/FhbH/xYWyP8WFsj/FxfJ/xcXyf8XF8n/FxfK/xcXyv8XF8v/GBjL/xgY
-        y/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYy/8YGMv/GBjL/xcXy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xcX
-        yP8WFsj/FhbH/xYWx/8WFsf/FhbG/xUVxf8UFML/ExO+/x4eyfgpKZViAAAAAAAAAAAAAAAAenr/ACMj
-        XycsLMvSFRXE/xQUxP8VFcf/FhbJ/xcXyf8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8YGMz/GBjM/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
-        zP8YGMz/FxfL/xcXy/8XF8r/FxfK/xcXyv8XF8n/FhbJ/xUVx/8UFMT/FRXE/ywsy9QkJGQpeXn/AAAA
-        AAAAAAAADQ0IAAAAAAU5Obh1JyfT+RMTxf8VFcj/FhbK/xYWy/8WFsv/FxfM/xcXzP8XF8z/FxfM/xcX
-        zP8XF83/FxfN/xcXzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8XF83/FxfN/xcXzf8XF83/FxfM/xcXzP8XF8z/FxfM/xYWy/8WFsv/FhbK/xUVyP8TE8X/JibS+jo6
-        uXkAAAAGERERAAAAAAAAAAAAAAAAAO3t/wAxMV8XQ0PNoicn0/0VFcn/FhbK/xcXzP8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GRnO/xkZz/8ZGc//GRnO/xkZzv8ZGc7/GRnO/xkZ
-        z/8ZGc//GRnO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8XF8z/FhbK/xUV
-        yf8nJ9P+QkLOpDExYxj8/P8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AQkKEHE1N0Zg1Ndr0Hx/P/xgY
-        zP8XF8z/FxfM/xcXzP8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcX
-        zv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfM/xcX
-        zP8YGMz/Hx/P/zU12fRNTdGaQ0OIHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3fSAERE
-        bQ5ZWcRXUVHasURE3uI6Ot7xMjLZ8zAw2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMwMNjzMjLY8zo63/FDQ97jUFDasllZxVlDQ24PdnbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAC0tHAAEBAAAUVFkDGhotylnZ8o4ZGTNOmNjzTtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7ZGTNOmdnyzhoaLgqUFBmDAcHAAAqKh0AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAD///////8AAP8AAAAA/wAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAAAAAD
-        AADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAA
-        AAAABwAA8AAAAAAPAAD4AAAAAB8AAP4AAAAAfwAA////////AAAoAAAAgAAAAAABAAABACAAAAAAAAAA
-        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAAEQAAABYAAAAWAAAAGAAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGAAAABcAAAAWAAAAEQAA
-        AAwAAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJQAA
-        ADAAAAA4AAAAQAAAAEYAAABHAAAASAAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEgAAABHAAAARgAAAEAAAAA4AAAAMAAAACUAAAAZAAAAEQAAAAgAAAADAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAADAAAACQAAABQAAAAjAAAANAAAAEUAAABWAAAAZQAAAHIAAAB6AAAAgAAAAIMAAACEAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhAAAAIMAAACAAAAAegAA
-        AHIAAABlAAAAVwAAAEYAAAA1AAAAJAAAABQAAAAKAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABIAAAAjAAAAOAAAAFEAAABpAAAAfgAA
-        AI8AAACcAAAApQAAAKsAAACwAAAAswAAALMAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAswAAALAAAACsAAAApQAAAJwAAACQAAAAfwAAAGoAAABSAAAAOQAA
-        ACMAAAASAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
-        AAwAAAAaAAAAMgAAAFAAAABtAAAAiAAAAJwMDAyyWFhY0pWVleHY2Njz3Nzc8/7+/v7/////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////////////////////9zc
-        3PPc3Nzzmpqa41paWtIQEBCzAAAAngAAAIgAAABtAAAAUAAAADMAAAAbAAAADAAAAAMAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAIwAAAEAAAABiAAAAgwAAAJ43NzfAqKio5v39
-        /fz//////////+7u7v/s7Oz/1tbW/9XV1f/V1dX/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/V1dX/7Ozs/+zs7P////////////39/fyxsbHoPT09xAAA
-        AJ4AAACEAAAAYwAAAEAAAAAjAAAADwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEAAA
-        ACYAAABJAAAAbwAAAJIqKiq6t7e36v//////////2tra/9PT0//T09P/1NTU/9TU1P/U1NT/1NTU/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1NTU/9TU
-        1P/U1NT/1NTU/9PT0//T09P/2tra////////////vr6+7i4uLrwAAACUAAAAcQAAAEoAAAAnAAAAEQAA
-        AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAA8AAAAnAAAATAAAAHcAAACcdXV11P39/f3/////1NTU/9TU
-        1P/V1dX/1dXV/9bW1v/W1tb/1tbW/9bW1v/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9bW1v/W1tb/1tbW/9XV1f/V1dX/1NTU/9TU
-        1P///////v7+/n19fdcAAACcAAAAdwAAAE0AAAAnAAAAEAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAANAAAAJQAA
-        AEsAAAB4BAQEn6KiouD/////6urq/9TU1P/V1dX/1dXV/9bW1v/W1tb/19fX/9fX1//X19f/19fX/9fX
-        1//Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9fX
-        1//X19f/19fX/9fX1//X19f/1tbW/9bW1v/V1dX/1dXV/9TU1P/l5eX//////66uruUKCgqhAAAAeQAA
-        AEwAAAAmAAAADQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAB4AAABFAAAAcxcXF6TT09Pv/////9fX1//V1dX/1dXV/9bW
-        1v/W1tb/19fX/9fX1//X19f/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9bW
-        1v/W1tb/1dXV/9XV1f/U1NT//////9fX1+4eHh6nAAAAdAAAAEYAAAAfAAAACgAAAAEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAXAAAAOQAA
-        AGkEBASYzMzM7P/////U1NT/1dXV/9XV1f/W1tb/19fX/9fX1//Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2NjY/9jY2P/Y2Nj/19fX/9fX1//W1tb/1dXV/9XV1f/U1NT//////9fX
-        1+4KCgqaAAAAawAAADkAAAAXAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAACAAAADgAAACoAAABZAAAAjKWlpd3/////1dXV/9bW1v/X19f/19fX/9jY
-        2P/Z2dn/2dnZ/9ra2v/a2tr/2tra/9ra2v/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra
-        2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/V1dX//////6+vr+EAAACNAAAAWwAAACsAAAAOAAAAAgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAbAAAARAAA
-        AHl3d3fM/////9jY2P/W1tb/19fX/9jY2P/Y2Nj/2dnZ/9nZ2f/a2tr/2tra/9ra2v/b29v/29vb/9vb
-        2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/29vb/9vb2//b29v/29vb/9vb2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/Y2Nj/19fX/9bW
-        1v/V1dX//////39/f9EAAAB6AAAARgAAABwAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAADgAAAC4AAABfKSkpof39/fzs7Oz/1tbW/9fX1//X19f/2NjY/9nZ
-        2f/Z2dn/2tra/9ra2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9vb
-        2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/o6Oj//f39/TQ0NKkAAABiAAAALwAA
-        AA4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAYAAAAQgAA
-        AHq2trbh/////9bW1v/W1tb/19fX/9jY2P/Z2dn/2dnZ/9ra2v/a2tr/29vb/9vb2//c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/9jY
-        2P/X19f/1tbW/9bW1v//////w8PD5wAAAHsAAABDAAAAGQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAACYAAABWNzc3ov7+/v7Z2dn/19fX/9jY2P/Z2dn/2tra/9ra
-        2v/b29v/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb2//a2tr/2tra/9nZ2f/Y2Nj/19fX/9bW1v//////Pj4+pwAA
-        AFgAAAAnAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAANAAA
-        AGqpqanY/////9fX1//Y2Nj/2dnZ/9nZ2f/a2tr/29vb/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb
-        2//a2tr/2dnZ/9nZ2f/Y2Nj/19fX//////+xsbHcAAAAawAAADUAAAARAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABBBgYGfvv7+/nh4eH/19fX/9jY2P/Z2dn/2tra/9vb
-        2//b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/93d3f/d3d3/3d3d/9zc3P/c3Nz/29vb/9vb2//a2tr/2dnZ/9jY2P/X19f/4ODg//z8
-        /PgSEhKCAAAAQgAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAA
-        AE5XWVep/////9fY1//Y2dj/2drZ/9nb2f/a29r/29zb/9zd3P/c3dz/3d7d/93e3f/d3t3/3t/e/97f
-        3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3+Df/9/g3//f4N//3+Df/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g
-        3//e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/93e3f/d3t3/3d7d/9zd
-        3P/c3dz/29zb/9rb2v/Z29n/2drZ/9jZ2P/X2Nf//////2RkZLEAAABOAAAAHwAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAV5ubm83/////2NjY/9nZ2f/a2tr/29vb/9zc
-        3P/c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//3t7e/97e3v/e3t7/3d3d/93d3f/c3Nz/3Nzc/9vb2//a2tr/2dnZ/9jY
-        2P//////o6Oj0gAAAFcAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ACoAAABezs7O5P/////Y2Nj/2dnZ/9ra2v/b29v/3Nzc/9zc3P/d3d3/3t7e/97e3v/e3t7/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3t7e/97e
-        3v/e3t7/3d3d/93d3f/c3Nz/29vb/9ra2v/Z2dn/2dnZ//39/f/U1NTnAAAAXgAAACoAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAAGL09PTx7e3t/9nZ2f/a2tr/29vb/9vb
-        2//c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/d3d3/3d3d/9zc3P/b29v/29vb/9ra
-        2v/Z2dn/6Ojo//f39/QAAABkAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAuAAAAZPz8/Pji4+L/2drZ/9rb2v/b3Nv/293b/9zd3P/d3t3/3d7d/97f3v/e397/3uDe/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//4ODg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4eHh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uLi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Pj4//j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Pj/+Pj4//i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4eH/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4OD/3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/97g
-        3v/e397/3t/e/93e3f/d3t3/3N3c/9zd3P/b3Nv/2tva/9na2f/f4N///f39/AAAAGUAAAAwAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAABm/v7+/t3d3f/a2tr/29vb/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9/f3//f39//39/f/97e3v/d3d3/3d3d/9zc
-        3P/b29v/2tra/9nZ2f//////BwcHbAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGb/////29vb/9ra2v/b29v/3Nzc/93d3f/e3t7/3t7e/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/39/f/9/f3//f39//3t7e/97e3v/d3d3/3Nzc/9vb2//a2tr/2tra//////8hISF2AAAAMQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////c3dz/29zb/9vd
-        2//c3dz/3d7d/97f3v/e397/3+Df/9/g3//f4N//4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Tk5P/k5OT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OTk/+Tk5P/j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Pj/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/f4N//3+Df/9/g3//e397/3t/e/93e
-        3f/c3dz/3N3c/9vc2//a29r//////yEhIXYAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////93d3f/c3Nz/3d3d/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9vb2///////ISEhdgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3d3d/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/g4OD/39/f/9/f
-        3//e3t7/3d3d/93d3f/c3Nz/29vb//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////d3t3/3N3c/93e3f/d393/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4+Pj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5ub/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm5f/l5uX/5ebl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j4+P/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4OHg/+Dh4P/f4N//3+Df/97f3v/d393/3d7d/9zd3P/b3Nv//////yEh
-        IXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97e
-        3v/d3d3/3t7e/9/f3//f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Dg
-        4P/g4OD/39/f/9/f3//e3t7/3d3d/9zc3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3t7e/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Hh4f/h4eH/4ODg/+Dg4P/f39//39/f/97e3v/d3d3/3Nzc////
-        //8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///e3t7/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Hh
-        4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/c3Nz//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97f3v/d3t3/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Lj4v/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/l5eX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ubm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo
-        5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xl5f/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4uPi/+Lj4v/h4uH/4eLh/+Dh4P/g4eD/3+Df/9/g3//e397/3d7d/9ze
-        3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////39/f/97e3v/f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Li
-        4v/i4uL/4eHh/+Hh4f/g4OD/4ODg/9/f3//e3t7/3t7e//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////f39//3t7e/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/g4OD/39/f/97e
-        3v/e3t7//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////9/h3//e397/3+Df/+Dh4P/g4uD/4eLh/+Hj4f/i4+L/4uPi/+Pk4//k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6Oj/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5eXl/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/i4+L/4uPi/+Hj4f/h4uH/4OLg/+Dh4P/f4N//3uDe/97f3v//////ISEhdgAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4eHh/9/f3//g4OD/4eHh/+Li
-        4v/i4uL/4+Pj/+Pj4//j4+P/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//v7+//+fn5//////////////////////////////////////////////////z8/P/w8PD/6+vr/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg
-        4P/g4OD/39/f//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ//////h4eH/39/f/+Dg4P/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Pj4//l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6+vr//Dw8P/9/f3///////b29v/BwcH/kJCQ/35+fv9OTk7/Pz8//wsL
-        C/87Ozv/Pz8//35+fv9+fn7/uLi4/+3t7f////////////Pz8//r6+v/6urq/+rq6v/q6ur/6urq/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/+Dg4P/f39///////yEhIXYAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Hi4f/f4d//4OHg/+Hi
-        4f/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/n5+f/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6+zr//P08///////7+/v/7Gx
-        sf9dXV3/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZG
-        Rv+goKD/4+Pj///////3+Pf/7e7t/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+np
-        6f/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fn5//m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/k5eT/4+Tj/+Pk4//i4+L/4uPi/+Hi
-        4f/g4eD/4OHg/9/g3///////ISIhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGf/////4uLi/+Hh4f/h4eH/4uLi/+Pj4//j4+P/5OTk/+Tk5P/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
-        6v/r6+v/6+vr//Hx8f//////6urq/4WFhf8LCwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/XV1d/9XV1f//////9PT0/+zs
-        7P/r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+Xl5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4ODg//////8iIiJ2AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////i4uL/4eHh/+Hh
-        4f/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6+vr/+zs7P/4+Pj/+vr6/56env8LCwv/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/29vb//v7+///////+/v7//r6+v/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/k5OT/4+Pj/+Pj
-        4//i4uL/4eHh/+Hh4f/g4OD//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////+Lj4v/h4uH/4eLh/+Lj4v/j5OP/4+Tj/+Tl5P/l5eX/5ebl/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+rr6v/q6+r/6uvq/+rr6v/q6+r/6+vr/+vr
-        6//v7+///////+bm5v8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoa
-        Gv/Kysr///////Dx8P/r6+v/6+vr/+rr6v/q6+r/6uvq/+rr6v/q6+r/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xl5f/j5OP/4+Tj/+Lj4v/h4+H/4eLh/+Dh4P//////IiIidgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4+Pj/+Li
-        4v/i4uL/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/8PDw///////Kysr/Dw8P/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+jo6P///////Pz8//r6+v/6+vr/+vr
-        6//r6+v/6+vr/+vr6//q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5eXl/+Tk
-        5P/k5OT/4+Pj/+Pj4//i4uL/4eHh//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////j4+P/4uLi/+Li4v/j4+P/5OTk/+Tk5P/l5eX/5eXl/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np
-        6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v
-        7///////urq6/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP+BgYH///////Ly8v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/l5eX/5OTk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH//////yIi
-        InYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Pk
-        4//i4+L/4uTi/+Pk4//k5eT/5OXk/+Xm5f/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp
-        6P/o6ej/6Ono/+jp6P/o6ej/6enp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6uvq/+rr
-        6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//v7+///////8PDw/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+MjIz///////Dy
-        8P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6enp/+jp6P/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//m5+b/5ufm/+bn
-        5v/k5eT/5OXk/+Pk4//j5OP/4uPi/+Hi4f//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5OTk/+Pj4//k5OT/5OTk/+Xl5f/l5eX/5ubm/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/7e3t////
-        ///R0dH/CwsL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+np6f//////+/v7//s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/4uLi////
-        //8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///k5OT/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr
-        6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/29vb/8fHx/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/2ZmZv+VlZX/uLi4/7i4uP+4uLj/qKio/3V1
-        df8bGxv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcH
-        B//V1dX//f39/+3t7f/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5eXl/+Xl5f/k5OT/5OTk/+Pj4//i4uL//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Tl5P/j5OP/5OXk/+Tl5P/l5uX/5ebl/+fo
-        5//n6Of/5+jn/+jp6P/o6ej/6Ono/+jp6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6uvq/+rr
-        6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt7P/s7ez/7/Dv////
-        //9vb2//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/RkZG/8fH
-        x//5+fn//////////////////v7+///////////////////////T09P/dXV1/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ywsLP/4+Pj/8/Tz/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+np6f/o6ej/6Ono/+jp6P/n6Of/5+jn/+fo5//m5+b/5ebl/+Tl5P/k5eT/4+Tj/+Lj
-        4v//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////5eXl/+Tk5P/l5eX/5eXl/+bm5v/m5ub/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs
-        7P/s7Oz/7Ozs/+3t7f/t7e3/7e3t/+3t7f/+/v7/zMzM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/Jycn/8PDw//+/v7/+/v7/+np6f/k5OT/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/j4+P/5+fn//b29v/+/v7/3Nzc/0pKSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/5SUlP//////7+/v/+3t7f/t7e3/7e3t/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+fn5//m5ub/5eXl/+Xl5f/k5OT/4+Pj//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////l5eX/5OTk/+Xl5f/l5eX/5ubm/+bm
-        5v/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//r6+v/6+vr/+vr6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7e3t/+3t7f/t7e3/8fHx////
-        //84ODj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZGRv/u7u7//v7+/+jo
-        6P/j4+P/4eHh/+Dg4P/e3t7/3d3d/9zc3P/c3Nz/3d3d/9/f3//g4OD/4uLi/+bm5v/39/f/+vr6/4WF
-        hf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BwcH/+rq6v/29vb/7e3t/+3t
-        7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Tk
-        5P/j4+P//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////+Xn5f/k5eT/5ebl/+Xm5f/m5+b/5ufm/+jp6P/o6ej/6Ono/+nq6f/p6un/6erp/+nq
-        6f/q6ur/6uvq/+rr6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt
-        7P/s7ez/7O3s/+3t7f/t7e3/7e7t/+3u7f/+//7/xMTE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP9jY2P/+vr6//X19f/m5ub/4uLi/9/f3//c3Nz/2dnZ/9XV1f/T09P/09PT/9PT
-        0//V1dX/2NjY/9vb2//f39//4eHh/+Tk5P/v7+///v7+/6qqqv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/jo6O///////u7+7/7e7t/+3t7f/t7e3/7O3s/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+rq6v/p6un/6erp/+nq
-        6f/o6uj/6Ono/+jp6P/n6ef/5ufm/+Xm5f/l5uX/5OXk/+Pl4///////JSUleQAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5+fn/+Xl5f/m5ub/5ubm/+fn
-        5//p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+zs
-        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/u7u7/7+/v////
-        //9UVFT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/OTk5//T09P/z8/P/5OTk/+Hh
-        4f/e3t7/2dnZ/9TU1P/Pz8//y8vL/8jIyP/R0dH/y8vL/8rKyv/Nzc3/0tLS/9jY2P/d3d3/4ODg/+Tk
-        5P/s7Oz//v7+/3x8fP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/+Pj4//Pz
-        8//u7u7/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/o6Oj/5ubm/+bm
-        5v/l5eX/5eXl//////8lJSV5AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ///////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////6Ojo/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wgICP/k5OT/+vz6/+bm5v/i4+L/3t7e/9fX1//Q0dD/zM3M/+Lj4v/29vb///////v7
-        +//+/v7/+vr6/+fn5//P0M//zc7N/9XV1f/c3dz/4uPi/+Tl5P/x8fH/+vr6/z09Pf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+4uLj/////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////ygoKHkAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnbGxs/1VVVf9YWFj/W1tb/15e
-        Xv9hYWH/Y2Nj/2ZmZv9paWn/ampq/2xsbP9tbW3/b29v/3BwcP9wcHD/cXFx/3Jycv9zc3P/c3Nz/3R0
-        dP91dXX/dnZ2/3d3d/93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/35+fv9/f3//gICA/4GB
-        gf9SUlL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5eX//7+/v/p6en/5eXl/9/f
-        3//Y2Nj/zs7O/9nZ2f/8/Pz/8/Pz/+vr6//o6Oj/6Ojo/+jo6P/q6ur/8fHx///////k5OT/zc3N/9bW
-        1v/d3d3/4+Pj/+fn5//+/v7/1tbW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zQ0
-        NP+BgYH/gICA/39/f/9+fn7/fn5+/319ff98fHz/e3t7/3p6ev95eXn/eHh4/3d3d/93d3f/dnZ2/3V1
-        df90dHT/c3Nz/3Nzc/9ycnL/cXFx/3BwcP9wcHD/bm5u/2xsbP9ra2v/aWlp/2dnZ/9kZGT/YWFh/19f
-        X/9bW1v/WVlZ/1VVVf9sbGz/FRUVeQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xYWFv/z8/P/8/Pz/+fn5//h4uH/2tra/9HR0f/e397//v7+/+3t7f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6+vr//f39//s7Oz/zc7N/9fY1//g4eD/5ufm/+vs6//+/v7/VlZW/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAh5AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ioqK//7+/v/q6ur/5eXl/9/f
-        3//V1dX/1dXV//7+/v/t7e3/6urq/+rq6v/q6ur/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/7Ozs//r6
-        +v/h4eH/0tLS/9zc3P/k5OT/6enp//7+/v/ExMT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgICHkAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP/MzMz//v7+/+rq6v/l5eX/3Nzc/9DQ0P/z8/P/8fLx/+zs7P/s7Oz/7Ozs/+zs
-        7P/s7ez/7O3s/+zt7P/s7Oz/7Ozs/+zs7P/s7Oz/7+/v//z8/P/R0dH/2tra/+Li4v/p6en/8fHx//f3
-        9/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJeQAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//f39//y8vL/6erp/+Lj
-        4v/Y2dj/19fX///////v7+//7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
-        7v/t7e3/+vr6/+Hi4f/V1tX/4OHg/+jp6P/t7e3//////01NTf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCQl6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8oKCj//////+/v7//p6en/4eHh/9fX1//k5OT//Pz8/+/v7//v8O//7/Dv/+/w
-        7//v8O//7/Dv/+/w7//v8O//7/Dv/+/w7//v8O//7/Dv/+/v7//19fX/8PDw/9TU1P/f39//5+fn/+3t
-        7f//////gICA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJ
-        CXoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0dHR///////7+/v/+rq
-        6v/h4eH/1tbW/+np6f/6+vr/8fHx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy
-        8f/x8vH/8fHx//X19f/39/f/09PT/9/f3//o6Oj/7u7u//////+Xl5f/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/TExM///////w8PD/6+zr/+Pk4//X19f/7Ozs//z8/P/z8/P/8/Pz//Pz
-        8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9vb2//r6+v/T1NP/4OHg/+nq
-        6f/v8O///////52dnf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP88PDz///////Hy
-        8f/t7u3/5ubm/9na2f/n5+f///////X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1
-        9f/19fX/9fX1//X19f/6+vr/9PT0/9fX1//i4+L/6+zr//Hx8f//////ioqK/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv/9/f3/9vb2/+/v7//o6Oj/3d3d/+Dg4P//////9/f3//b3
-        9v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2///////p6en/29vb/+bm
-        5v/u7u7/8/Pz//////9dXV3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/CgoKegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9zc
-        3P/+/v7/8fHx/+vs6//i4uL/1tfW//v7+//8/Pz/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4
-        +P/4+Pj/+Pj4//j4+P/6+vr//////9vb2//f39//6urq//Hx8f/4+fj//f39/xoaGv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ra2t//7+/v/09PT/7/Dv/+jo6P/d3d3/4+Pj////
-        ///7/Pv/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+vr6///////w8PD/2tra/+bm
-        5v/t7u3/8/Pz//7+/v/W1tb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP87Ozv//f39//39/f/z8/P/7e3t/+Xl5f/Z2dn/7+/v///////9/v3/+vv6//r7+v/7+/v/+/v7//v7
-        +//6+/r/+vv6//z9/P//////+Pj4/9ra2v/j4+P/6+vr//Ly8v/4+Pj//v7+/4qKiv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CgoKegAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcICLr/BgaP/wcHkv8HB5X/BweX/wcH
-        m/8HB53/CAif/wgIoP8ICKP/CAik/wgIpf8ICKf/CQmn/wkJqP8JCaj/CQmp/wkJqv8JCav/CQmr/wkJ
-        rP8JCa3/CQmu/wkJrv8JCa//CQmw/wkJsP8JCbH/CQmy/woKs/8KCrP/Cgq0/woKtf8KCrb/Cwu3/wYG
-        cv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP++vr7//v7+//b29v/y8vL/7O3s/+Tk
-        5P/a29r/6Ojo//7+/v///////f39//z8/P/8/Pz//Pz8//z9/P///////////+/v7//a29r/4eLh/+rr
-        6v/x8vH/9fb1//7+/v/m5ub/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BARB/wsL
-        t/8KCrb/Cgq1/woKtP8KCrP/Cgqz/wkJsv8JCbH/CQmw/wkJsP8JCa//CQmu/wkJrv8JCa3/CQms/wkJ
-        q/8JCav/CQmq/wkJqf8JCaj/CQmo/wkJp/8ICKb/CAil/wgIo/8ICKH/CAif/wcHnv8HB5v/BweZ/wcH
-        lf8HB5P/BgaQ/wgIuv8dHR16AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZwkJy/8HB5v/Bwee/wgIoP8ICKP/CAim/wgIp/8JCaj/CQmr/wkJrP8JCa7/CQmu/woK
-        sP8KCrD/Cgqx/woKsv8KCrL/Cgqz/woKs/8KCrT/Cgq1/woKtv8KCrb/Cgq3/woKt/8KCrj/Cgq5/wsL
-        uf8LC7r/Cwu7/wsLu/8LC7z/Cwu9/wsLvf8LC8T/CwvU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/zAwMP/39/f//v7+//b29v/y8vL/7e3t/+Xl5f/d3d3/3t7e//X19f//////////////
-        //////////////r6+v/j4+P/29vb/+Pj4//r6+v/8fHx//b29v/9/f3//v7+/3Jycv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCqn/CwvL/wsLvf8LC73/Cwu8/wsLu/8LC7v/Cwu6/wsL
-        uf8KCrn/Cgq4/woKt/8KCrf/Cgq2/woKtv8KCrX/Cgq0/woKs/8KCrP/Cgqy/woKsv8KCrH/Cgqw/woK
-        r/8JCa7/CQmt/wkJq/8JCar/CAin/wgIpv8ICKT/CAih/wgInv8HB5z/CQnL/ysrK3oAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCAiy/wYGif8HB4v/BweP/wcH
-        kv8HB5X/BweX/wgImv8ICJv/CAid/wgIn/8ICKD/CAih/wkJov8JCaP/CQmk/wkJpf8JCaX/CQmm/wkJ
-        pv8JCaf/CQmo/wkJqf8JCar/CQmq/wkJq/8JCaz/CQmt/wkJrf8JCa7/Cgqv/woKsP8KCrH/Cgqx/woK
-        s/8MDND/AgI7/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/42Njf/+/v7//f39//b3
-        9v/z9PP/7/Dv/+nq6f/j5OP/3d3d/93d3f/k5OT/5eXl/+Xm5f/e397/3Nzc/+Hi4f/o6Oj/7u7u//Ly
-        8v/29vb//P38//7+/v+8vLz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAG/wwM
-        0v8KCrf/Cgqx/woKsf8KCrD/Cgqv/wkJrv8JCa3/CQmt/wkJrP8JCav/CQmq/wkJqv8JCan/CQmo/wkJ
-        p/8JCab/CQmm/wkJpf8JCaX/CQmk/wkJo/8JCaL/CAig/wgIoP8ICJ7/CAic/wgImv8HB5j/BweV/wcH
-        k/8HB5D/BweN/wYGif8ICLL/KioqewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcICLP/BgaK/wcHjP8HB5D/BweT/wcHlv8HB5j/CAib/wgInP8ICJ7/CAig/wgI
-        of8ICKL/CQmj/wkJpP8JCaT/CQml/wkJpv8JCaf/CQmn/wkJqP8JCan/CQmp/wkJqv8JCav/CQms/wkJ
-        rP8JCa7/CQmu/wkJr/8KCrD/Cgqx/woKsf8KCrL/Cgqz/wwMwv8KCrD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/7S0tP/+/v7//v7+//j4+P/19vX/8fLx/+7v7v/q6+r/5ufm/+Tl
-        5P/j5OP/5OTk/+bm5v/p6un/7u7u//Dx8P/09fT/9/j3//39/f/+/v7/1tbW/w0NDf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBnX/DAzK/woKtP8KCrL/Cgqx/woKsf8KCrD/CQmv/wkJ
-        rv8JCa7/CQms/wkJrP8JCav/CQmq/wkJqf8JCan/CQmo/wkJp/8JCaf/CQmm/wkJpf8JCaT/CQmk/wkJ
-        o/8ICKH/CAih/wgIn/8ICJ3/CAib/wcHmf8HB5b/BweU/wcHkf8HB47/BgaK/wgIs/8qKip7AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwgItv8GBoz/BweO/wcH
-        kf8HB5T/BweX/wcHmf8ICJv/CAid/wgIn/8ICKH/CAii/wgIo/8JCaT/CQmk/wkJpf8JCab/CQmm/wkJ
-        p/8JCaj/CQmp/wkJqf8JCar/CQmr/wkJrP8JCaz/CQmt/wkJrv8JCa//CQmv/woKsP8KCrH/Cgqy/woK
-        s/8KCrP/Cgq3/w4O1P8CAif/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6ur
-        q//+/v7//v7+//r7+v/3+Pf/9vb2//P08//x8fH/7/Dv/+/v7//v8O//8PHw//Lz8v/19vX/9/j3//r6
-        +v/+/v7//v7+/8vLy/8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
-        z/8KCrz/Cgqz/woKs/8KCrL/Cgqx/woKsP8JCa//CQmv/wkJrv8JCa3/CQms/wkJrP8JCav/CQmq/wkJ
-        qf8JCan/CQmo/wkJp/8JCab/CQmm/wkJpf8JCaT/CQmk/wgIov8ICKL/CAig/wgInv8ICJz/BweZ/wcH
-        l/8HB5X/BweS/wcHj/8GBov/CAi2/yoqKnsAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnCQm3/wcHjf8HB4//CAiT/wgIlf8ICJn/CAia/wkJnP8JCZ7/CQmf/wkJ
-        ov8JCaP/CQmk/woKpf8KCqX/Cgqm/woKp/8KCqf/Cgqo/woKqf8KCqn/Cgqq/woKq/8KCqv/Cgqs/woK
-        rf8KCq7/Cgqu/wsLr/8LC7D/Cwux/wsLsf8LC7L/Cwuz/wsLtP8LC7X/DAzE/wsLt/8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Jycv/x8fH//v7+//7+/v/7/Pv/+fr5//j4
-        +P/3+Pf/9/j3//f49//4+Pj/+fr5//r6+v/+/v7//v7+//r6+v+tra3/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBm//DAzN/wsLtv8LC7T/Cwuz/wsLsv8LC7H/Cwux/wsL
-        sP8LC6//Cgqu/woKrv8KCq3/Cgqs/woKq/8KCqv/Cgqq/woKqf8KCqn/Cgqo/woKp/8KCqf/Cgqm/woK
-        pf8KCqX/CQmj/wkJo/8JCaH/CQme/wkJnf8ICJr/CAiZ/wgIlv8ICJP/CAiQ/wcHjP8JCbf/KioqewAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC7j/CAiO/wgI
-        kP8JCZT/CQmW/wkJmf8JCZv/CQmd/woKn/8KCqD/Cgqj/woKo/8LC6X/Cwum/wsLpv8LC6f/Cwun/wsL
-        qP8LC6n/Cwup/wsLqv8LC6v/Cwus/wsLrP8LC63/Cwuu/wsLrv8MDK//DAyw/wwMsf8MDLH/DAyy/wwM
-        s/8MDLP/DAy0/wwMtf8MDLn/ERHU/wQET/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xoaGv+urq7/9vb2///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////39
-        /f/CwsL/OTk5/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIZ/xER
-        1/8MDLz/DAy1/wwMtP8MDLP/DAyz/wwMsv8MDLH/DAyx/wwMsP8MDK//Cwuu/wsLrv8LC63/Cwus/wsL
-        rP8LC6v/Cwuq/wsLqf8LC6n/Cwuo/wsLp/8LC6f/Cwum/wsLpv8LC6T/Cgqj/woKov8KCp//CQme/wkJ
-        m/8JCZr/CQmW/wkJlP8ICJL/CAiN/wsLuP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsLu/8ICJD/CAiS/wkJlv8JCZn/CQmb/wkJnv8JCZ//Cgqh/woK
-        o/8KCqX/Cgql/wsLp/8LC6f/Cwuo/wsLqP8LC6n/Cwuq/wsLqv8LC6v/Cwur/wsLrP8LC63/Cwuu/wsL
-        rv8LC6//Cwuw/wwMsf8MDLH/DAyy/wwMsv8MDLP/DAy0/wwMtf8MDLX/DAy2/wwMt/8MDMD/Dw/T/wAA
-        DP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/dnZ2/7q6
-        uv/h4eH/4uLi///////p6en/4eHh/8nJyf+EhIT/ISEh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MDLn/Dw/G/wwMuP8MDLb/DAy1/wwMtf8MDLT/DAyz/wwM
-        sv8MDLL/DAyx/wwMsf8LC7D/Cwuv/wsLrv8LC67/Cwut/wsLrP8LC6v/Cwur/wsLqv8LC6r/Cwup/wsL
-        qP8LC6j/Cwun/wsLpv8KCqX/Cgqk/woKof8JCaD/CQme/wkJnP8JCZn/CQmW/wgIlP8ICJD/Cwu7/ysr
-        K3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwu+/wkJ
-        kv8JCZP/CQmW/woKmv8KCpz/Cgqe/woKoP8LC6P/Cwuk/wsLpv8LC6b/DAyn/wwMqP8MDKj/DAyp/wwM
-        qv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrf8MDK7/DAyv/w0NsP8NDbD/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0NuP8QEMj/Dg65/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQmC/xIS
-        0v8NDbr/DQ23/w0Ntv8NDbb/DQ21/w0NtP8NDbT/DQ2z/w0Ns/8NDbL/DQ2x/w0NsP8NDbD/DAyv/wwM
-        rv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyp/wwMqP8MDKj/DAym/wsLpv8LC6X/Cwuj/woK
-        of8KCp//Cgqc/woKmv8JCZj/CQmU/wkJkf8LC77/KysrewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC8D/CQmU/wkJlv8JCZj/Cgqc/woKnv8KCqD/Cgqi/wsL
-        pP8LC6b/Cwun/wsLqP8MDKn/DAyq/wwMqv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrv8MDK//DAyv/wwM
-        sP8MDLD/DAyx/w0Nsv8NDbL/DQ2z/w0Ns/8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0Nt/8NDbj/DQ25/w0N
-        u/8QENH/DAyh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcHXP8SEtf/DQ29/w0Nuf8NDbj/DQ23/w0Nt/8NDbb/DQ22/w0N
-        tf8NDbT/DQ2z/w0Ns/8NDbL/DQ2y/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwMrf8MDKz/DAys/wwM
-        q/8MDKv/DAyq/wwMqv8MDKj/Cwuo/wsLpv8LC6X/Cgqi/woKof8KCp7/Cgqc/wkJmv8JCZb/CQmT/wsL
-        wP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsL
-        wP8JCZT/CQmW/wkJmP8KCpz/Cgqe/woKoP8KCqL/Cwuk/wsLpf8LC6f/Cwuo/wsLqf8MDKr/DAyq/wwM
-        q/8MDKv/DAys/wwMrP8MDK3/DAyt/wwMrv8MDK//DAyw/wwMsP8MDLH/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbX/DQ21/w0Ntv8NDbb/DQ23/w0NuP8NDbj/DQ25/w4Ovf8SEtT/DAyT/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HB13/EhLZ/w4O
-        wP8NDbr/DQ24/w0NuP8NDbf/DQ22/w0Ntv8NDbX/DQ21/w0NtP8NDbP/DQ2z/w0Nsv8NDbH/DAyx/wwM
-        sP8MDLD/DAyv/wwMrv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyq/wsLqP8LC6j/Cwum/wsL
-        pP8KCqL/Cgqh/woKnv8KCpz/CQma/wkJlv8JCZP/CwvA/ysrK3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwvE/wkJlv8JCZj/CQmb/woKnf8KCqD/Cgqi/woK
-        o/8LC6b/Cwun/wsLqf8LC6n/Cwur/wwMq/8MDKz/DAys/wwMrf8MDK3/DAyu/wwMr/8MDK//DAyw/wwM
-        sP8MDLH/DAyx/wwMsv8MDLP/DQ2z/w0NtP8NDbX/DQ21/w0Ntv8NDbf/DQ23/w0NuP8NDbj/DQ25/w0N
-        uf8NDbr/DQ26/w4Ov/8REdP/Dg65/wAAB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/CgqN/xQU2f8ODsH/DQ27/w0Nuv8NDbn/DQ25/w0NuP8NDbj/DQ23/w0N
-        t/8NDbb/DQ21/w0Ntf8NDbT/DQ2z/wwMs/8MDLL/DAyx/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwM
-        rf8MDK3/DAys/wwMrP8MDKv/Cwuq/wsLqf8LC6j/Cwum/woKpP8KCqL/Cgqg/woKnv8JCZv/CQmZ/wkJ
-        lv8LC8T/LCwsewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcMDMb/CgqY/woKmf8KCpz/Cwue/wsLof8LC6P/Cwuk/wwMp/8MDKj/DAyq/wwMqv8MDKv/DQ2s/w0N
-        rP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0NsP8NDbD/DQ2x/w0Nsv8NDbL/DQ2z/w4Os/8ODrT/Dg61/w4O
-        tf8ODrb/Dg62/w4Ot/8ODrf/Dg64/w4Ouf8ODrn/Dg66/w8Puv8PD7v/Dw+7/w8Pvv8REc7/ERHR/wIC
-        Kf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8Psf8UFNb/Dw/A/w8P
-        vP8PD7v/Dw+6/w4Ouv8ODrn/Dg65/w4OuP8ODrf/Dg63/w4Otv8ODrb/Dg61/w4Otf8ODrT/Dg6z/w0N
-        s/8NDbL/DQ2y/w0Nsf8NDbD/DQ2w/w0Nr/8NDa7/DQ2u/w0Nrf8NDa3/DQ2s/w0NrP8MDKr/DAyq/wwM
-        qf8MDKf/Cwul/wsLo/8LC6H/Cwuf/woKnP8KCpr/CgqX/wwMxv8sLCx7AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwwMx/8KCpn/Cgqa/woKnf8LC5//Cwui/wsL
-        pP8LC6X/DAyo/wwMqf8MDKr/DAyr/wwMrP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0Nr/8NDbD/DQ2w/w0N
-        sf8NDbH/DQ2y/w0Ns/8NDbP/Dg60/w4OtP8ODrX/Dg61/w4Otv8ODrf/Dg63/w4OuP8ODrn/Dg65/w4O
-        uv8ODrr/Dg67/w8Pu/8PD7z/Dw+8/w8Pvv8REcn/FBTY/wkJcP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wUFSP8REdP/ERHP/w8Pv/8PD7z/Dw+8/w8Pu/8ODrv/Dg66/w4Ouv8ODrn/Dg65/w4O
-        uP8ODrf/Dg63/w4Otv8ODrX/Dg61/w4OtP8ODrT/DQ2z/w0Ns/8NDbL/DQ2x/w0Nsf8NDbD/DQ2w/w0N
-        r/8NDa//DQ2u/w0Nrv8NDa3/DQ2t/wwMq/8MDKv/DAyp/wwMqP8LC6b/Cwuk/wsLov8LC6D/Cgqd/woK
-        m/8KCpj/DAzH/y0tLXwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnDAzL/woKm/8KCp3/Cgqf/wsLof8LC6P/Cwum/wsLp/8MDKn/DAyr/wwMrP8MDK3/DAyu/wwM
-        rv8NDa//DQ2v/w0NsP8NDbD/DQ2x/w0Nsf8NDbL/DQ2y/w0Ns/8NDbT/DQ20/w0Ntf8NDbX/Dg62/w4O
-        tv8ODrf/Dg64/w4OuP8ODrn/Dg65/w4Ouf8ODrr/Dg67/w4Ou/8ODrz/Dg68/w4OvP8PD73/Dw+9/w8P
-        vv8PD8T/FRXY/xERyP8FBVb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICKv8PD7P/FRXc/xERx/8PD7//Dw+9/w8P
-        vf8ODrz/Dg68/w4OvP8ODrv/Dg67/w4Ouv8ODrn/Dg65/w4Ouf8ODrj/Dg64/w4Ot/8ODrb/Dg62/w0N
-        tf8NDbX/DQ20/w0NtP8NDbP/DQ2y/w0Nsv8NDbH/DQ2x/w0NsP8NDbD/DQ2v/w0Nr/8MDK7/DAyt/wwM
-        rf8MDKv/DAyq/wsLp/8LC6b/Cwul/wsLof8KCp//Cgqd/woKm/8MDMv/LS0tfAAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcNDcv/Cgqb/wsLnf8LC5//DAyh/wwM
-        o/8MDKb/DAyn/wwMqf8NDav/DQ2s/w0NrP8NDa7/Dg6u/w4Or/8ODq//Dg6w/w4OsP8ODrH/Dg6x/w4O
-        sv8ODrL/Dg6z/w4Os/8ODrT/Dg60/w8Ptf8PD7b/Dw+2/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+7/w8Pu/8QELv/EBC8/xAQvP8QEL3/EBC9/xAQvv8QEMD/EhLJ/xUV2/8TE8//Cgp9/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUF
-        X/8QELz/FRXd/xISzf8QEML/EBC//xAQvf8QEL3/EBC8/xAQvP8QELv/Dw+7/w8Pu/8PD7r/Dw+6/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptv8PD7b/Dw+1/w4OtP8ODrT/Dg6z/w4Os/8ODrL/Dg6y/w4O
-        sf8ODrH/Dg6w/w4OsP8ODq//Dg6v/w4Orv8NDa3/DQ2s/w0Nq/8MDKr/DAyn/wwMpv8MDKX/DAyh/wsL
-        n/8LC53/Cgqb/w0Ny/8tLS18AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZw0Nzv8KCp7/Cwuf/wsLof8MDKT/DAym/wwMqP8MDKr/DAyr/w0NrP8NDa7/DQ2u/w0N
-        sP8NDbD/Dg6x/w4Osf8ODrH/Dg6y/w4Osv8ODrL/Dg6z/w4OtP8ODrT/Dg61/w4Otf8ODrb/Dg62/w8P
-        t/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8Puv8PD7r/Dw+7/w8Pu/8PD7z/Dw+8/w8Pvf8QEL3/EBC9/xAQ
-        vv8QEL7/EBC//xAQv/8QEL//EBDB/xISyf8SEtX/FRXd/xMTyf8ODpf/BQVh/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8FBVH/CgqC/xAQuP8VFd3/FRXZ/xISy/8QEMP/EBDA/xAQv/8QEL//EBC+/xAQ
-        vv8QEL3/EBC9/w8Pvf8PD7z/Dw+8/w8Pu/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dw+3/w8P
-        t/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4OtP8ODrP/Dg6y/w4Osv8ODrL/Dg6x/w4Osf8ODrH/DQ2w/w0N
-        r/8NDa7/DQ2t/wwMq/8MDKr/DAyo/wwMp/8MDKT/Cwui/wsLn/8KCp3/DQ3O/y0tLXwAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnDQ3P/woKn/8LC6D/Cwuj/wwM
-        pf8MDKf/DAyo/wwMq/8MDKz/DQ2t/w0Nr/8NDa//DQ2w/w0Nsf8ODrH/Dg6x/w4Osv8ODrL/Dg6z/w4O
-        s/8ODrT/Dg60/w4Otf8ODrX/Dg62/w4Otv8ODrf/Dg63/w8PuP8PD7j/Dw+5/w8Puf8PD7r/Dw+6/w8P
-        u/8PD7v/Dw+8/w8PvP8PD73/Dw+9/w8Pvf8PD77/EBC+/xAQv/8QEL//EBC//xAQv/8QEMD/EBDA/xAQ
-        wf8QEMT/EhLL/xIS0v8WFtr/Fhbi/xYW3P8TE9b/ExPX/xMT1/8TE9X/Fhbk/xYW3P8SEtX/EhLN/xAQ
-        xv8QEMH/EBDA/xAQwP8QEL//EBC//xAQv/8QEL//EBC+/w8Pvv8PD73/Dw+9/w8Pvf8PD7z/Dw+8/w8P
-        u/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dg63/w4Ot/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4O
-        tP8ODrP/Dg6z/w4Osv8ODrL/Dg6x/w4Osf8NDbH/DQ2v/w0Nr/8NDa7/DAys/wwMq/8MDKn/DAyn/wwM
-        pf8LC6P/Cwuh/woKnv8NDc//LS0tfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcPD9D/Cwug/wwMov8MDKT/DAym/w0NqP8NDan/DQ2s/w0Nrf8ODq7/Dg6v/w4O
-        sP8ODrH/Dg6y/w4Osv8PD7L/Dw+z/w8Ps/8PD7P/Dw+0/w8PtP8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8P
-        t/8QELj/EBC4/xAQuf8QELn/EBC6/xAQuv8QELv/EBC7/xAQvP8QELz/EBC8/xAQvf8QEL3/ERG9/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHA/xERwf8REcH/ERHB/xERwf8REcL/ERHE/xER
-        x/8REcf/ERHH/xERxv8REcP/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERwP8REb//ERG//xER
-        v/8REb7/ERG+/xERvf8QEL3/EBC9/xAQvP8QELz/EBC8/xAQu/8QELv/EBC6/xAQuv8QELn/EBC5/xAQ
-        uP8QELj/Dw+3/w8Pt/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8PD7P/Dw+z/w8Ps/8PD7L/Dg6y/w4O
-        sv8ODrD/Dg6w/w4Orv8NDa3/DQ2s/w0Nqv8NDaj/DAym/wwMpP8MDKL/Cwuf/w8P0P8uLy58AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZw8P1P8LC6L/DAyk/wwM
-        pv8MDKj/DQ2q/w0Nq/8NDa3/DQ2v/w4OsP8ODrH/Dg6y/w4Os/8ODrP/Dg6z/w8PtP8PD7T/Dw+1/w8P
-        tf8PD7b/Dw+2/w8Pt/8PD7f/Dw+3/w8PuP8PD7j/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        vP8QELz/EBC9/xAQvf8QEL7/EBC+/xAQvv8QEL//ERG//xERv/8REcD/ERHA/xERwP8REcH/ERHB/xER
-        wf8REcH/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xER
-        wv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//EBC//xAQvv8QEL7/EBC+/xAQ
-        vf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQuv8QELr/EBC6/w8Puf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8P
-        t/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8ODrP/Dg6z/w4Osv8ODrL/Dg6w/w0Nr/8NDa7/DQ2r/w0N
-        qv8MDKj/DAym/wwMpP8LC6L/Dw/U/y4vLnwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnDw/X/wsLpf8MDKb/DAyo/wwMqv8NDaz/DQ2u/w0Nr/8NDbH/Dg6y/w4O
-        s/8ODrP/Dg60/w4Otf8ODrX/Dg62/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+6/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xAQv/8QEL//EBDA/xAQ
-        wP8QEMD/EBDA/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERw/8REcP/ERHD/xER
-        w/8REcP/ERHD/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHB/xER
-        wf8REcH/EBDA/xAQwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL3/EBC9/xAQvf8QELz/EBC8/xAQ
-        vP8PD7v/Dw+6/w8Puv8PD7r/Dw+5/w8Puf8PD7j/Dw+4/w8Pt/8PD7f/Dw+3/w8Ptv8PD7b/Dg62/w4O
-        tf8ODrX/Dg6z/w4Os/8ODrL/DQ2x/w0NsP8NDa7/DQ2s/wwMqv8MDKn/DAym/wsLpP8PD9f/Li8ufAAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQENf/DAyl/wwM
-        pv8NDaj/DQ2q/w4OrP8ODq7/Dg6v/w4OsP8PD7L/Dw+z/w8Ps/8PD7T/Dw+1/w8Ptf8PD7X/EBC2/xAQ
-        tv8QELf/EBC3/xAQt/8QELj/EBC4/xAQuf8QELn/EBC5/xAQuv8QELr/EBC6/xERu/8REbz/ERG8/xER
-        vP8REb3/ERG9/xERvf8REb7/ERG+/xERv/8REb//ERG//xERwP8SEsD/EhLA/xISwP8SEsH/EhLB/xIS
-        wf8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xIS
-        wv8SEsL/EhLC/xISwv8SEsL/EhLB/xISwf8SEsH/EhLA/xISwP8SEsD/ERHA/xERv/8REb//ERG//xER
-        vv8REb7/ERG9/xERvf8REb3/ERG8/xERvP8REbz/ERG7/xAQuv8QELr/EBC6/xAQuf8QELn/EBC5/xAQ
-        uP8QELj/EBC3/xAQt/8QELf/EBC2/xAQtv8PD7X/Dw+1/w8Ptf8PD7P/Dw+z/w8Psv8ODrH/Dg6v/w4O
-        rv8ODqz/DQ2q/w0Nqf8NDab/DAyk/xAQ1/8vLy98AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ2/8MDKf/DAyp/w0Nq/8NDa3/Dg6u/w4OsP8ODrH/Dg6y/w8P
-        s/8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/EBC4/xAQuP8QELj/EBC5/xAQuf8QELr/EBC6/xAQ
-        u/8QELv/EBC7/xAQvP8QELz/EBC8/xERvf8REb3/ERG+/xERvv8REb7/ERG//xERv/8REb//ERHA/xER
-        wP8REcH/ERHB/xERwf8SEsH/EhLB/xISwv8SEsL/EhLC/xISwv8SEsP/EhLD/xISw/8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISwv8SEsL/EhLC/xIS
-        wv8SEsH/EhLB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/ERG9/xER
-        vf8QELz/EBC8/xAQvP8QELv/EBC7/xAQu/8QELr/EBC6/xAQuf8QELn/EBC4/xAQuP8QELj/Dw+3/w8P
-        t/8PD7f/Dw+2/w8Ptf8PD7X/Dw+0/w4Osv8ODrH/Dg6w/w4Orv8NDa3/DQ2r/wwMqf8MDKb/EBDb/zAw
-        MHwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDc/wwM
-        qP8MDKr/DQ2s/w0Nrv8ODq//Dg6x/w4Osv8ODrP/Dw+0/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8P
-        uP8QELn/EBC5/xAQuf8QELr/EBC6/xAQuv8QELv/EBC7/xAQu/8QELz/EBC8/xAQvf8QEL3/EBC9/xER
-        vv8REb7/ERG+/xERv/8REb//ERG//xERwP8REcD/ERHB/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xIS
-        wv8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsT/EhLE/xISxP8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xER
-        wP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQ
-        u/8QELr/EBC6/xAQuv8QELn/EBC5/xAQuf8PD7j/Dw+4/w8Pt/8PD7f/Dw+2/w8Ptv8PD7X/Dg6z/w4O
-        sv8ODrH/Dg6v/w0Nrv8NDaz/DAyq/wwMqP8QENz/MDAwfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQEN7/DAyq/wwMq/8NDa3/DQ2v/w4OsP8ODrL/Dg6z/w4O
-        tP8PD7X/Dw+2/w8Pt/8PD7j/Dw+4/w8PuP8PD7n/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        u/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xERv/8REb//ERG//xERv/8REcD/ERHA/xER
-        wf8REcH/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8SEsP/EhLD/xISw/8SEsP/EhLE/xIS
-        xP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsP/EhLD/xISw/8SEsP/ERHD/xER
-        w/8REcL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG//xAQ
-        vv8QEL7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELz/EBC7/xAQu/8QELv/EBC6/xAQuv8QELr/Dw+5/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptf8ODrT/Dg6z/w4Osv8ODrH/DQ2v/w0Nrf8MDKv/DAyp/xAQ
-        3v8wMDB8AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ
-        4v8MDKz/DAyt/w0Nr/8NDbH/Dg6y/w4OtP8ODrX/Dg62/w8Pt/8PD7j/Dw+5/w8Puv8PD7r/Dw+6/w8P
-        uv8PD7v/Dw+7/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL3/EBC+/xAQvv8QEL7/EBC//xAQ
-        v/8QEMD/EBDA/xERwP8REcD/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8REcP/ERHD/xER
-        w/8REcT/ERHE/xERxP8REcT/ERHE/xERxf8REcX/EhLF/xISxf8SEsX/EhLF/xISxf8SEsX/EhLF/xIS
-        xf8SEsX/ERHF/xERxf8REcT/ERHE/xERxP8REcT/ERHE/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xER
-        wv8REcL/ERHC/xERwf8REcH/ERHA/xERwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL7/EBC9/xAQ
-        vf8QEL3/EBC9/xAQvP8QELz/EBC8/w8Pu/8PD7v/Dw+7/w8Puv8PD7r/Dw+6/w8Puf8PD7n/Dw+3/w4O
-        tv8ODrX/Dg60/w4Os/8NDbH/DQ2v/wwMrf8MDKv/EBDi/zExMX0AAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDk/w0Nrv8NDbD/Dg6x/w4Os/8ODrX/Dw+2/w8P
-        t/8PD7j/EBC5/xAQuv8QELr/EBC8/xAQvP8QELz/EBC8/xAQvP8QEL3/EBC9/xERvf8REb7/ERG+/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHB/xERwf8SEsH/EhLC/xISwv8SEsL/EhLC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLE/xISxP8SEsX/EhLF/xISxf8SEsX/EhLF/xISxf8TE8b/ExPG/xMT
-        xv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8SEsX/EhLF/xIS
-        xf8SEsX/EhLF/xISxf8SEsT/EhLE/xISxP8SEsT/EhLD/xISw/8SEsP/EhLC/xISwv8SEsL/EhLC/xIS
-        wf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//ERG//xERvv8REb7/ERG+/xERvv8REb3/EBC9/xAQ
-        vf8QELz/EBC8/xAQvP8QELz/EBC7/xAQuv8QELn/Dw+4/w8Pt/8PD7b/Dg61/w4Os/8ODrH/DQ2w/w0N
-        rf8QEOT/MTExfQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcUFOb/Dw+w/xAQsP8QELP/ERG0/xERtv8SErf/EhK4/xISuf8SErr/ExO7/xMTu/8TE7z/ExO9/xMT
-        vf8TE73/ExO9/xMTvf8TE77/FBS+/xQUvv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXF/xYW
-        xf8WFsX/FhbF/xYWxf8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xUVxf8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVwv8VFcL/FRXC/xUVwv8UFMH/FBTB/xQUwP8UFMD/FBTA/xQU
-        wP8UFL//FBS//xQUv/8UFL//FBS+/xQUvv8TE77/ExO9/xMTvf8TE73/ExO9/xMTvf8TE7v/ExO7/xIS
-        uv8SErn/EhK4/xISt/8REbb/ERG0/xAQs/8QELH/Dw+v/xQU5v8xMTF9AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxQU5v8PD6//EBCw/xAQsv8REbT/ERG2/xIS
-        t/8SErj/EhK5/xISuv8TE7v/ExO7/xMTvP8TE7z/ExO9/xMTvf8TE73/ExO9/xMTvv8TE77/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQUwf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUV
-        w/8VFcP/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxf8VFcX/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUV
-        wv8VFcL/FBTB/xQUwf8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL//FBS//xQUvv8UFL7/ExO+/xMT
-        vv8TE73/ExO9/xMTvf8TE73/ExO8/xMTu/8TE7v/EhK6/xISuf8SErj/EhK3/xERtv8REbT/EBCz/xAQ
-        sP8PD6//FBTm/zIyMn0AAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABlFBTo/xAQsv8QELP/ERG1/xIStv8SErj/ExO5/xMTuv8TE7v/ExO8/xQUvf8UFL3/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBS//xQUwP8VFcD/FRXA/xUVwP8VFcH/FRXB/xUVwf8VFcH/FRXC/xUV
-        wv8VFcL/FRXC/xUVw/8VFcP/FhbD/xYWw/8WFsT/FhbE/xYWxP8WFsT/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsb/FhbG/xYWxv8XF8b/FxfG/xcXxv8XF8b/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXxv8XF8b/FxfG/xcXxv8WFsb/FhbG/xYWxv8WFsX/FhbF/xYW
-        xf8WFsX/FhbF/xYWxP8WFsT/FhbE/xYWxP8WFsP/FhbD/xUVw/8VFcP/FRXC/xUVwv8VFcL/FRXC/xUV
-        wf8VFcH/FRXB/xUVwf8VFcD/FRXA/xUVwP8UFMD/FBS//xQUv/8UFL//FBS//xQUv/8UFL7/FBS9/xQU
-        vf8TE7z/ExO7/xMTuv8TE7n/EhK4/xIStv8REbX/ERGz/xAQsf8UFOr/MjIyewAAADEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAGQUFOr/EBCz/xAQtP8REbX/EhK3/xIS
-        uf8SErr/ExO7/xMTvP8TE73/FBS+/xQUvv8UFL//FBS//xQUv/8UFMD/FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8VFcH/FRXB/xUVwf8VFcL/FRXC/xUVwv8VFcL/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FhbE/xYW
-        xP8WFsX/FhbF/xYWxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xYW
-        x/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxf8WFsX/FhbF/xYWxf8WFsX/FhbE/xYW
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUVwv8VFcL/FRXB/xUVwf8VFcH/FBTB/xQU
-        wP8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL7/FBS+/xMTvf8TE7z/ExO7/xISuv8SErn/EhK3/xER
-        tf8QELT/EBCy/xQU6/8yMjJ7AAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAtAAAAYhUV7v8REbX/EBC2/xERuP8REbn/EhK7/xISvP8TE73/ExO+/xMTv/8UFMD/FBTA/xQU
-        wf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQUwv8UFML/FBTC/xQUwv8VFcP/FRXD/xUVw/8VFcP/FRXE/xUV
-        xP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUVxf8VFcX/FRXG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsn/FhbJ/xYW
-        yf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8VFcb/FRXF/xUVxf8VFcX/FRXF/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQUwv8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wP8UFMD/ExO//xMTvv8TE73/EhK8/xISu/8REbn/ERG4/xAQtv8QELT/Fhbu/zQ0NHkAAAAuAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAABeGBjp/hMTuf8QELb/ERG3/xER
-        uf8SErr/EhK8/xMTvf8TE77/ExO//xQUwP8UFMD/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wv8UFML/FBTC/xQUwv8UFML/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUV
-        xf8VFcX/FRXG/xUVxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbI/xYW
-        yP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8VFcb/FRXG/xUV
-        xf8VFcX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQU
-        wv8UFML/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTA/xQUwP8TE7//ExO+/xMTvf8SErz/EhK6/xER
-        uf8REbj/EBC2/xIStv8YGO7/AAAAXwAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAJgAAAFchIeT+FxfB/xERuP8SErn/EhK7/xMTvP8TE77/FBS//xQUwP8UFMH/FRXC/xUV
-        wv8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FhbF/xYW
-        xf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xcXx/8XF8f/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8j/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8f/FxfH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8WFsX/FhbF/xYWxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUV
-        w/8VFcL/FRXC/xQUwf8UFMD/FBS//xMTvv8TE7z/EhK7/xISuf8REbj/GBi//x0d6P4AAABYAAAAJwAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAATioq2PscHM7/ERG4/xER
-        uv8SErz/ExO9/xMTvv8UFMD/FBTB/xQUwv8UFML/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8VFcX/FRXF/xUVxf8VFcX/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcX
-        yv8XF8r/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FRXF/xUVxf8VFcX/FRXF/xUV
-        xf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8UFML/FBTC/xQUwf8UFMD/ExO//xMT
-        vf8SErz/EhK6/xERuP8bG8v/JibZ+wAAAE8AAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAABoAAABCODjG8SEh4v8REbr/ERG8/xISvv8SEr//ExPA/xMTwv8UFMP/FBTE/xQU
-        xP8VFcX/FRXF/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV
-        x/8VFcf/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbJ/xYWyf8WFsn/FhbJ/xYWyf8WFsr/FhbK/xYW
-        yv8WFsr/FhbK/xcXyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyv8WFsr/FhbK/xYWyv8WFsn/FhbJ/xYWyf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xUVx/8VFcf/FRXH/xUVx/8VFcf/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUV
-        xv8VFcX/FRXF/xQUxP8UFMT/FBTD/xMTwv8TE8D/EhK//xISvv8REbz/ERG6/yEh3f80NMn1AAAAQwAA
-        ABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAADVAQKTVKSn3/xER
-        uv8SErv/ExO9/xMTv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xUVxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8XF8f/FxfH/xcXyP8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8YGMr/GBjK/xgY
-        yv8YGMr/GBjK/xgYyv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgY
-        y/8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMr/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXx/8XF8f/FhbH/xYWx/8WFsf/FhbH/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8VFcX/FRXE/xUVw/8VFcL/FBTB/xQU
-        wP8TE7//ExO9/xISu/8REbr/KCj3/z09ptoAAAA3AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAMAAAAKDg4b5MsLPn/GBi+/xISvf8TE7//FBTA/xQUwv8VFcP/FRXE/xYW
-        xf8WFsb/FhbG/xcXx/8XF8f/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/GBjJ/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMv/GBjL/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZ
-        zP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgY
-        yv8YGMn/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yP8XF8f/FxfH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FBTC/xQUwP8TE7//ExO9/xcXvf8sLPn/Ozt+pQAA
-        ACkAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAcAAAAQzg4
-        6fsoKND/EhK+/xMTv/8TE8H/FBTC/xUVw/8VFcT/FRXF/xYWxv8WFsf/FhbI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8XF8r/GBjK/xgY
-        yv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        zP8YGMz/GBjM/xgYzP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8WFsj/FhbH/xYWxv8VFcX/FRXF/xUV
-        w/8UFML/FBTB/xMTv/8SEr7/JibN/zg46/4LCxJKAAAAHQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABEAAAAvSEi12zY2/v8UFMD/ExPB/xMTwv8UFMT/FBTF/xUV
-        xv8VFcf/FhbI/xYWyf8WFsn/FhbK/xYWyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcXzP8XF8z/FxfM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcX
-        zP8XF8z/FxfM/xcXzP8XF8z/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyf8WFsn/FhbI/xUVx/8VFcb/FBTF/xQUxP8TE8L/ExPB/xMTwP82Nvz/Rka54gAA
-        ADAAAAARAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA
-        AB4rK0pjOzv5/iYmyv8SEsD/ExPC/xMTw/8UFMT/FBTF/xUVxv8VFcf/FhbI/xYWyf8WFsn/FhbJ/xYW
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXzP8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcXzP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcX
-        y/8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FhbK/xYWyf8WFsn/FhbJ/xYWyP8VFcf/FRXG/xQU
-        xf8UFMT/ExPD/xMTwv8SEsD/IyPI/zs7+v8yMlhuAAAAIAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEQAAAC5OTsLiPDz//xYWwv8SEsL/ExPD/xQU
-        xP8UFMX/FBTG/xUVx/8VFcj/FhbJ/xYWyf8WFsr/FhbK/xYWyv8WFsv/FhbL/xYWy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfM/xcXzP8XF8z/FxfM/xcXzP8XF8z/GBjM/xgY
-        zP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xYWy/8WFsv/FhbL/xYW
-        yv8WFsr/FhbK/xYWyf8WFsn/FRXI/xUVx/8UFMb/FBTG/xQUxP8TE8P/EhLC/xYWwv87O///T0/I6QAA
-        AC8AAAARAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAAIAAAAGicnQlJKSvT+MTHq/xMTwv8TE8P/ExPF/xQUxv8UFMf/FBTI/xUVyP8VFcn/FRXK/xYW
-        yv8WFsr/FhbL/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbM/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfN/xcX
-        zf8XF83/FxfN/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbL/xYWyv8WFsr/FRXK/xUVyf8VFcj/FBTI/xQU
-        x/8UFMb/ExPF/xMTw/8SEsL/MDDm/0pK9f4xMVJeAAAAGwAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAOAAAAIlJSmqdPT/7/Kyvc/xMT
-        xf8TE8b/FBTH/xUVyP8VFcn/FRXK/xYWyv8WFsv/FhbL/xYWzP8WFsz/FxfM/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zP8XF8z/FhbM/xYWy/8WFsv/FhbK/xUVyv8VFcn/FRXI/xQUx/8TE8b/ExPF/ygo1/9LS/7/VVWisQAA
-        ACMAAAAOAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAARAAAAKFtbus5LS///IiLJ/xMTxv8TE8f/FBTI/xQUyf8VFcr/FRXK/xUV
-        y/8WFsz/FhbM/xYWzP8WFsz/FhbN/xYWzf8WFs3/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FhbN/xYWzf8WFs3/FhbM/xYWzP8WFsz/FhbM/xUVy/8VFcr/FRXK/xQU
-        yf8UFMj/ExPH/xMTxv8hIcn/Skr//1tbwNcAAAApAAAAEQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAK2Fh
-        1epOTv//JibM/xUVx/8WFsj/FhbJ/xcXyv8XF8v/GBjL/xgYzP8YGMz/GBjM/xgYzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8YGM3/GBjM/xgYzP8YGMz/GBjL/xcXy/8XF8r/FhbJ/xYWyP8VFcf/JCTK/0xM//9hYdvwAAAALAAA
-        ABQAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAUFhYgMGlp1elXV///MDDh/xcXx/8WFsj/FxfJ/xcX
-        yf8YGMr/GBjL/xgYy/8ZGcv/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xoa
-        zv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcv/GBjL/xgYy/8YGMr/FxfJ/xcX
-        yf8XF8j/FhbH/y4u3f9VVf//aWnb7yAgNDgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
-        AAcAAAATAAAAJmhovcldXf7/PDz0/xsbyf8WFsn/FxfJ/xcXyv8XF8r/GBjL/xgYy/8YGMz/GBjM/xgY
-        zP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GBjM/xgY
-        zP8YGMz/GBjM/xgYy/8YGMv/FxfK/xcXyv8XF8n/FhbJ/xsbyf85OfD/Xl7+/2lpxNIAAAAnAAAAFAAA
-        AAgAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAcAAAARAAAAIGRkp5xzc/f8VFT//y0t
-        2v8ZGcr/FhbK/xcXyv8XF8v/FxfL/xcXzP8XF8z/GBjM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfL/xcXy/8XF8r/FhbK/xgY
-        yf8rK9f/U1P//3Bw+P5lZaukAAAAIQAAABEAAAAHAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAAMAAAAFzAwSjxxcc/cc3P7/ltb//83N+f/HR3N/xcXzP8XF8z/FxfN/xcX
-        zf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zf8YGM3/FxfN/xcXzf8XF8z/FxfM/x0dzf80NOT/WVn//3R0/P5zc9XgMzNNPQAAABgAAAAMAAAABQAA
-        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAA
-        ABo9PVxDdHTN0X198/x1df//YmL//1FR//9BQf//ODjo/ygo5v8eHtH/FxfP/xcXz/8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcXz/8XF8//HR3Q/ycn5P83N+j/QED//1FR//9hYf//dHT//3p6
-        9fx1dc/XQUFnSwAAABsAAAAQAAAACAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAACAAAAA8AAAAWAAAAIFxcjml0dMbAenrh7Hl5
-        4O5/f/P8fn70/IKC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//fX31/H9/8/x5eePuenri7XR0x8NeXpJuAAAAIAAAABYAAAAPAAAACQAAAAQAAAABAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAABAAAAAwAAAAYAAAAKAAAADwAAABMAAAAXAAAAGwAAAB4AAAAgAAAAIgAAACMAAAAjAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAjAAAAIwAAACIAAAAgAAAAHgAAABsAAAAYAAAAEwAA
-        AA8AAAAKAAAABwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
-        ///////////////////////////////////////////////////////////////////////////gAAAA
-        AAAAAAAAAAf/////AAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///g
-        AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAA
-        AP//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA
-        AAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAP/wA
-        AAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAA
-        Af//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///wAAAAAAAAAAAAAAAAD///+AAAAAAAAAAA
-        AAAAAB////wAAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAA////////////////////////////////
-        ////////////////////////////////////////////////////////
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/PokeUi.Designer.cs b/PokemonGo/RocketAPI/Window/PokeUi.Designer.cs
deleted file mode 100644
index f875958..0000000
--- a/PokemonGo/RocketAPI/Window/PokeUi.Designer.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-namespace PokemonGo.RocketAPI.Window
-{
-    partial class PokeUi
-    {
-        /// <summary>
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            this.components = new System.ComponentModel.Container();
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PokeUi));
-            this.btnReload = new System.Windows.Forms.Button();
-            this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
-            this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
-            this.btnEvolve = new System.Windows.Forms.Button();
-            this.btnTransfer = new System.Windows.Forms.Button();
-            this.btnUpgrade = new System.Windows.Forms.Button();
-            this.dataGridView1 = new System.Windows.Forms.DataGridView();
-            this.contextMenuStrip1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
-            this.SuspendLayout();
-            //
-            // btnReload
-            //
-            this.btnReload.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-            this.btnReload.Dock = System.Windows.Forms.DockStyle.Bottom;
-            this.btnReload.Location = new System.Drawing.Point(0, 573);
-            this.btnReload.Name = "btnReload";
-            this.btnReload.Size = new System.Drawing.Size(622, 26);
-            this.btnReload.TabIndex = 3;
-            this.btnReload.Text = "Reload";
-            this.btnReload.UseVisualStyleBackColor = true;
-            this.btnReload.Click += new System.EventHandler(this.button1_Click);
-            //
-            // contextMenuStrip1
-            //
-            this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
-            this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.toolStripMenuItem1});
-            this.contextMenuStrip1.Name = "contextMenuStrip1";
-            this.contextMenuStrip1.Size = new System.Drawing.Size(118, 26);
-            //
-            // toolStripMenuItem1
-            //
-            this.toolStripMenuItem1.Name = "toolStripMenuItem1";
-            this.toolStripMenuItem1.Size = new System.Drawing.Size(117, 22);
-            this.toolStripMenuItem1.Text = "Transfer";
-            this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);
-            //
-            // btnEvolve
-            //
-            this.btnEvolve.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-            this.btnEvolve.Dock = System.Windows.Forms.DockStyle.Bottom;
-            this.btnEvolve.Location = new System.Drawing.Point(0, 547);
-            this.btnEvolve.Name = "btnEvolve";
-            this.btnEvolve.Size = new System.Drawing.Size(622, 26);
-            this.btnEvolve.TabIndex = 4;
-            this.btnEvolve.Text = "Evolve Selected";
-            this.btnEvolve.UseVisualStyleBackColor = true;
-            this.btnEvolve.Click += new System.EventHandler(this.button2_Click);
-            //
-            // btnTransfer
-            //
-            this.btnTransfer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-            this.btnTransfer.Dock = System.Windows.Forms.DockStyle.Bottom;
-            this.btnTransfer.Location = new System.Drawing.Point(0, 521);
-            this.btnTransfer.Name = "btnTransfer";
-            this.btnTransfer.Size = new System.Drawing.Size(622, 26);
-            this.btnTransfer.TabIndex = 5;
-            this.btnTransfer.Text = "Transfer Selected";
-            this.btnTransfer.UseVisualStyleBackColor = true;
-            this.btnTransfer.Click += new System.EventHandler(this.button3_Click);
-            //
-            // btnUpgrade
-            //
-            this.btnUpgrade.Dock = System.Windows.Forms.DockStyle.Bottom;
-            this.btnUpgrade.Location = new System.Drawing.Point(0, 495);
-            this.btnUpgrade.Name = "btnUpgrade";
-            this.btnUpgrade.Size = new System.Drawing.Size(622, 26);
-            this.btnUpgrade.TabIndex = 6;
-            this.btnUpgrade.Text = "Upgrade Selected";
-            this.btnUpgrade.UseVisualStyleBackColor = true;
-            this.btnUpgrade.Click += new System.EventHandler(this.btnUpgrade_Click);
-            //
-            // dataGridView1
-            //
-            this.dataGridView1.AllowUserToAddRows = false;
-            this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
-            this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
-            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            this.dataGridView1.Location = new System.Drawing.Point(12, 12);
-            this.dataGridView1.Name = "dataGridView1";
-            this.dataGridView1.Size = new System.Drawing.Size(596, 477);
-            this.dataGridView1.TabIndex = 7;
-            this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
-            this.dataGridView1.SortCompare += new System.Windows.Forms.DataGridViewSortCompareEventHandler(this.dataGridView1_SortCompare);
-            //
-            // PokeUi
-            //
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(622, 599);
-            this.Controls.Add(this.dataGridView1);
-            this.Controls.Add(this.btnUpgrade);
-            this.Controls.Add(this.btnTransfer);
-            this.Controls.Add(this.btnEvolve);
-            this.Controls.Add(this.btnReload);
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.Name = "PokeUi";
-            this.Text = "PokeUi";
-            this.Load += new System.EventHandler(this.PokeUi_Load);
-            this.contextMenuStrip1.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
-            this.ResumeLayout(false);
-
-        }
-
-        #endregion
-        private System.Windows.Forms.Button btnReload;
-        private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
-        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
-        private System.Windows.Forms.Button btnEvolve;
-        private System.Windows.Forms.Button btnTransfer;
-        private System.Windows.Forms.Button btnUpgrade;
-        private System.Windows.Forms.DataGridView dataGridView1;
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/PokeUi.cs b/PokemonGo/RocketAPI/Window/PokeUi.cs
deleted file mode 100644
index 3c162ab..0000000
--- a/PokemonGo/RocketAPI/Window/PokeUi.cs
+++ /dev/null
@@ -1,386 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using PokemonGo.RocketAPI.Enums;
-using PokemonGo.RocketAPI.GeneratedCode;
-using System.Net;
-using System.IO;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public partial class PokeUi : Form
-    {
-        private static Client client;
-        public PokeUi()
-        {
-            InitializeComponent();
-            ClientSettings = Settings.Instance;
-        }
-
-        private void PokeUi_Load(object sender, EventArgs e)
-        {
-            Execute();
-        }
-
-        public static ISettings ClientSettings;
-
-        private async void Execute()
-        {
-            EnabledButton(false);
-
-            client = new Client(ClientSettings);
-
-            try
-            {
-
-                await client.Login();
-
-                await client.SetServer();
-                var profile = await client.GetProfile();
-                var inventory = await client.GetInventory();
-                var pokemons =
-                    inventory.InventoryDelta.InventoryItems
-                    .Select(i => i.InventoryItemData?.Pokemon)
-                        .Where(p => p != null && p?.PokemonId > 0)
-                        .OrderByDescending(key => key.Cp);
-                var families = inventory.InventoryDelta.InventoryItems
-                    .Select(i => i.InventoryItemData?.PokemonFamily)
-                    .Where(p => p != null && (int)p?.FamilyId > 0)
-                    .OrderByDescending(p => (int)p.FamilyId);
-
-
-                //listView1.ShowItemToolTips = true;
-
-
-                //put data into gridview
-                this.dataGridView1.AutoGenerateColumns = false;
-                DataGridViewCheckBoxColumn checkbox = new DataGridViewCheckBoxColumn()
-                {
-                    HeaderText = "Checkbox",
-                    Name = "Checkbox",
-                    Visible = true
-                };
-                // add the new column to your dataGridView
-                this.dataGridView1.Columns.Insert(0, checkbox);
-                this.dataGridView1.Columns.Add("Image", "Image");
-                this.dataGridView1.Columns.Add("Name", "Name");
-                this.dataGridView1.Columns.Add("CP", "CP");
-                this.dataGridView1.Columns.Add("IV %", "IV %");
-                this.dataGridView1.Columns.Add("Candy", "Candy");
-                this.dataGridView1.Columns.Add("Number", "Number");
-                this.dataGridView1.Columns.Add("WeightKg", "WeightKg");
-                this.dataGridView1.Columns.Add("HeightM", "HeightM");
-
-                this.dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
-                for (int i = 1; i < this.dataGridView1.Columns.Count; i++)
-                {
-                    this.dataGridView1.Columns[i].ReadOnly = true;
-                }
-
-                foreach (var pokemon in pokemons)
-                {
-                    Bitmap pokemonImage = null;
-                    await Task.Run(() =>
-                    {
-                        pokemonImage = GetPokemonImage((int)pokemon.PokemonId);
-                    });
-
-                    var currentCandy = families
-                        .Where(i => (int)i.FamilyId <= (int)pokemon.PokemonId)
-                        .Select(f => f.Candy)
-                        .First();
-                    var currIv = Math.Round(Perfect(pokemon));
-
-
-                    var pokemonId2 = pokemon.PokemonId;
-                    var pokemonName = pokemon.Id;
-
-                    var row = new DataGridViewRow();
-                    //row.HeaderCell.Value = row.Index + 1 + "";
-                    row.Cells.Add(new DataGridViewCheckBoxCell { Value = false });
-                    row.Cells.Add(new DataGridViewImageCell { Value = pokemonImage });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = pokemon.PokemonId });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = pokemon.Cp });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = currIv });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = currentCandy });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = (int)pokemon.PokemonId });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = pokemon.WeightKg });
-                    row.Cells.Add(new DataGridViewTextBoxCell { Value = pokemon.HeightM });
-                    row.Tag = pokemon;
-                    this.dataGridView1.Rows.Add(row);
-                }
-
-                this.Text = "PokeUi " + pokemons.Count<PokemonData>() + "/" + profile.Profile.PokeStorage;
-                EnabledButton(true);
-
-            }
-            catch (TaskCanceledException) { Execute(); }
-            catch (UriFormatException) { Execute(); }
-            catch (ArgumentOutOfRangeException) { Execute(); }
-            catch (ArgumentNullException) { Execute(); }
-            catch (NullReferenceException) { Execute(); }
-            catch (Exception ex) { Execute(); }
-        }
-
-        private void EnabledButton(bool enabled)
-        {
-            btnReload.Enabled = enabled;
-            btnEvolve.Enabled = enabled;
-            btnTransfer.Enabled = enabled;
-            btnUpgrade.Enabled = enabled;
-        }
-
-        private static Bitmap GetPokemonImage(int pokemonId)
-        {
-            var Sprites = AppDomain.CurrentDomain.BaseDirectory + "Sprites\\";
-            string location = Sprites + pokemonId + ".png";
-            if (!Directory.Exists(Sprites))
-                Directory.CreateDirectory(Sprites);
-            if (!File.Exists(location))
-            {
-                WebClient wc = new WebClient();
-                wc.DownloadFile("http://pokeapi.co/media/sprites/pokemon/" + pokemonId + ".png", @location);
-            }
-
-            var imageSize = ClientSettings.ImageSize;
-
-            if ((imageSize > 96) || (imageSize < 1)) // no bigger than orig size and no smaller than 1x1
-                imageSize = 50;
-
-            PictureBox picbox = new PictureBox();
-            picbox.Image = Image.FromFile(location);
-            Bitmap bitmapRemote = new Bitmap(picbox.Image, imageSize, imageSize);
-            return bitmapRemote;
-        }
-
-        private void button1_Click(object sender, EventArgs e)
-        {
-            this.dataGridView1.DataSource = null;
-            this.dataGridView1.Columns.Clear();
-            this.dataGridView1.Rows.Clear();
-            Execute();
-        }
-
-        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
-        {
-
-        }
-        public static float Perfect(PokemonData poke)
-        {
-            return ((float)(poke.IndividualAttack + poke.IndividualDefense + poke.IndividualStamina) / (3.0f * 15.0f)) * 100.0f;
-        }
-
-        /*private void listView1_MouseClick(object sender, MouseEventArgs e)
-        {
-            if (e.Button == MouseButtons.Right)
-            {
-                this.dataGridView1.
-                if (listView1.FocusedItem.Bounds.Contains(e.Location) == true)
-                {
-                    contextMenuStrip1.Show(Cursor.Position);
-                }
-            }
-        }*/
-
-        private async void toolStripMenuItem1_Click(object sender, EventArgs e)
-        {
-            var pokemon = (PokemonData)this.dataGridView1.SelectedRows[0].Tag;
-
-
-            if (MessageBox.Show(this, pokemon.PokemonId + " with " + pokemon.Cp + " CP thats " + Math.Round(Perfect(pokemon)) + "% perfect", "Are you sure you want to transfer?", MessageBoxButtons.OKCancel) == DialogResult.OK)
-            {
-                var transfer = await client.TransferPokemon(pokemon.Id);
-            }
-            this.dataGridView1.Rows.Remove(this.dataGridView1.SelectedRows[0]);
-        }
-
-        private async void button2_Click(object sender, EventArgs e)
-        {
-
-            IEnumerable<DataGridViewRow> selectedItems = (from row in dataGridView1.Rows.Cast<DataGridViewRow>()
-                                                          where Convert.ToBoolean(((DataGridViewCheckBoxCell)row.Cells["Checkbox"]).EditedFormattedValue)
-                                                          select row).ToList();
-
-            foreach (DataGridViewRow selectedItem in selectedItems)
-            {
-                await evolvePokemon((PokemonData)selectedItem.Tag);
-            }
-
-            this.dataGridView1.DataSource = null;
-            this.dataGridView1.Columns.Clear();
-            this.dataGridView1.Rows.Clear();
-            Execute();
-        }
-
-        private async void button3_Click(object sender, EventArgs e)
-        {
-            IEnumerable<DataGridViewRow> selectedItems = (from row in dataGridView1.Rows.Cast<DataGridViewRow>()
-                                                          where Convert.ToBoolean(((DataGridViewCheckBoxCell)row.Cells["Checkbox"]).EditedFormattedValue)
-                                                          select row).ToList();
-
-            foreach (DataGridViewRow selectedItem in selectedItems)
-            {
-                await transferPokemon((PokemonData)selectedItem.Tag);
-            }
-
-            this.dataGridView1.DataSource = null;
-            this.dataGridView1.Columns.Clear();
-            this.dataGridView1.Rows.Clear();
-            Execute();
-        }
-
-        private static async Task evolvePokemon(PokemonData pokemon)
-        {
-            try
-            {
-                var evolvePokemonResponse = await client.EvolvePokemon(pokemon.Id);
-                string message = "";
-                string caption = "";
-                MessageBoxButtons buttons = MessageBoxButtons.OK;
-                DialogResult result;
-
-                if (evolvePokemonResponse.Result == 1)
-                {
-                    message = $"{pokemon.PokemonId} successfully evolved into {evolvePokemonResponse.EvolvedPokemon.PokemonType}\n{evolvePokemonResponse.ExpAwarded} experience awarded\n{evolvePokemonResponse.CandyAwarded} candy awarded";
-                    caption = $"{pokemon.PokemonId} evolved into {evolvePokemonResponse.EvolvedPokemon.PokemonType}";
-                }
-                else
-                {
-                    message = $"{pokemon.PokemonId} could not be evolved";
-                    caption = $"Evolve {pokemon.PokemonId} failed";
-                }
-
-                result = MessageBox.Show(message, caption, buttons, MessageBoxIcon.Information);
-            }
-            catch (TaskCanceledException) { await evolvePokemon(pokemon); }
-            catch (UriFormatException) { await evolvePokemon(pokemon); }
-            catch (ArgumentOutOfRangeException) { await evolvePokemon(pokemon); }
-            catch (ArgumentNullException) { await evolvePokemon(pokemon); }
-            catch (NullReferenceException) { await evolvePokemon(pokemon); }
-            catch (Exception ex) { await evolvePokemon(pokemon); }
-        }
-
-        private static async Task transferPokemon(PokemonData pokemon)
-        {
-            try
-            {
-                var transferPokemonResponse = await client.TransferPokemon(pokemon.Id);
-                string message = "";
-                string caption = "";
-                MessageBoxButtons buttons = MessageBoxButtons.OK;
-                DialogResult result;
-
-                if (transferPokemonResponse.Status == 1)
-                {
-                    message = $"{pokemon.PokemonId} was transferred\n{transferPokemonResponse.CandyAwarded} candy awarded";
-                    caption = $"{pokemon.PokemonId} transferred";
-                }
-                else
-                {
-                    message = $"{pokemon.PokemonId} could not be transferred";
-                    caption = $"Transfer {pokemon.PokemonId} failed";
-                }
-
-                result = MessageBox.Show(message, caption, buttons, MessageBoxIcon.Information);
-            }
-            catch (TaskCanceledException) { await transferPokemon(pokemon); }
-            catch (UriFormatException) { await transferPokemon(pokemon); }
-            catch (ArgumentOutOfRangeException) { await transferPokemon(pokemon); }
-            catch (ArgumentNullException) { await transferPokemon(pokemon); }
-            catch (NullReferenceException) { await transferPokemon(pokemon); }
-            catch (Exception ex) { await transferPokemon(pokemon); }
-        }
-
-        private async void btnUpgrade_Click(object sender, EventArgs e)
-        {
-            IEnumerable<DataGridViewRow> selectedItems = (from row in dataGridView1.Rows.Cast<DataGridViewRow>()
-                                                          where Convert.ToBoolean(((DataGridViewCheckBoxCell)row.Cells["Checkbox"]).EditedFormattedValue)
-                                                          select row).ToList();
-
-            foreach (DataGridViewRow selectedItem in selectedItems)
-            {
-                await PowerUp((PokemonData)selectedItem.Tag);
-            }
-
-            this.dataGridView1.DataSource = null;
-            this.dataGridView1.Columns.Clear();
-            this.dataGridView1.Rows.Clear();
-            Execute();
-        }
-
-        private static async Task PowerUp(PokemonData pokemon)
-        {
-            try
-            {
-                var evolvePokemonResponse = await client.PowerUp(pokemon.Id);
-                string message = "";
-                string caption = "";
-                MessageBoxButtons buttons = MessageBoxButtons.OK;
-                DialogResult result;
-
-                if (evolvePokemonResponse.Result == 1)
-                {
-                    message = $"{pokemon.PokemonId} successfully upgraded.";
-                    caption = $"{pokemon.PokemonId} upgraded";
-                }
-                else
-                {
-                    message = $"{pokemon.PokemonId} could not be upgraded";
-                    caption = $"Upgrade {pokemon.PokemonId} failed";
-                }
-
-                result = MessageBox.Show(message, caption, buttons, MessageBoxIcon.Information);
-            }
-            catch (TaskCanceledException) { await PowerUp(pokemon); }
-            catch (UriFormatException) { await PowerUp(pokemon); }
-            catch (ArgumentOutOfRangeException) { await PowerUp(pokemon); }
-            catch (ArgumentNullException) { await PowerUp(pokemon); }
-            catch (NullReferenceException) { await PowerUp(pokemon); }
-            catch (Exception ex) { await PowerUp(pokemon); }
-        }
-
-        private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
-        {
-            //sort the numeric column
-            if (!e.Column.Name.Equals("Name") && !e.Column.Name.Equals("Image"))
-            {
-                e.SortResult = (Convert.ToDouble(e.CellValue1) - Convert.ToDouble(e.CellValue2) > 0) ? 1 : (Convert.ToDouble(e.CellValue1) - Convert.ToDouble(e.CellValue2) < 0) ? -1 : 0;
-            }
-
-            // if the value is same, then sort by IV
-            if (e.SortResult == 0 && e.Column.Name.Equals("IV %"))
-            {
-                e.SortResult = Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex1].Cells["IV %"].Value.ToString()) -
-                        Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex2].Cells["IV %"].Value.ToString());
-            }
-
-            e.Handled = true;
-        }
-
-
-        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
-        {
-            if (e.ColumnIndex != 0)
-                return;
-
-            bool isChecked = Convert.ToBoolean(this.dataGridView1.Rows[e.RowIndex].Cells["Checkbox"].EditedFormattedValue);
-
-            if (isChecked)
-            {
-                this.dataGridView1.Rows[e.RowIndex].Cells["Checkbox"].Value = true;
-                this.dataGridView1.Rows[e.RowIndex].Selected = true;
-            }
-            else
-            {
-                this.dataGridView1.Rows[e.RowIndex].Cells["Checkbox"].Value = false;
-                this.dataGridView1.Rows[e.RowIndex].Selected = false;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/PokeUi.resx b/PokemonGo/RocketAPI/Window/PokeUi.resx
deleted file mode 100644
index 9379818..0000000
--- a/PokemonGo/RocketAPI/Window/PokeUi.resx
+++ /dev/null
@@ -1,1548 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
-        IACoJQAA7h4AAICAAAABACAAKAgBAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA
-        AAAAAAAABAQEAAAAAAE8PDwcU1NTM1NTUzRTU1M0U1NTNFNTUzRTU1M0U1NTNFNTUzRTU1M0U1NTMzw8
-        PBwAAAACBAQEAAAAAAGLi4tQurq6yMXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXF
-        xeS6urrIjIyMUQAAAAF+fn4kycnJ0dzd3P/e3t7/3t7e/9/f3//f39//4ODg/+Dg4P/f4N//39/f/97e
-        3v/e3t7/3N3c/8nJydKAgIAlsbGxRtna2fHf4N//4OHg/+Hh4f/i4uL/4+Pj/+Pk4//j5OP/4+Pj/+Li
-        4v/h4uH/4OHg/9/g3//Z2tnysbGxR7a2tknc3dzz4uPi/+Pk4//l5eX/5ubm/+nq6f/n5+f/5ufm/+rq
-        6v/m5+b/5eXl/+Tk5P/i4+L/3N3c87a3tku3uLdJ39/f8+Xm5f/n5+f/6Ono/+jo6P+oqKj/WFhY/1JS
-        Uv+YmJj/5OXk/+np6f/n5+f/5ubm/9/g3/O4uLhLt7e3SeDg4PPn5+f/6Ono/+zt7P+lpaX/JCQk/2Vl
-        Zf9vb2//JSUl/4qKiv/r7Ov/6Ono/+fn5//g4ODzuLi4Sz4+PElNTUvzUFBO/1FRT/9TU1H/IyMi/3Fy
-        cv/q6ur/7e7t/5CQkP8dHRz/UFBO/1FRT/9QUE7/TU1L8z8/PksAABVJAAAa8wAAHf8AAB7/AAAf/wAA
-        DP+Kion/+fn5//r6+v+pqan/BgYP/wAAHv8AAB7/AAAd/wAAGvMCAhdLBgZ0SQgIj/MJCZv/Cgqh/woK
-        qP8FBWj/LS0v/6mppv+0tLL/Pz8+/wQEUv8KCqf/Cgqi/wkJnP8JCZDzDQ14SwgIhEkLC6DzDAys/w0N
-        sf8ODrb/Dg6z/wcHZf8KCir/DAwo/wYGVv8NDa3/Dg63/w0Nsv8MDKz/Cwuh9BAQiEsKCo9JDQ2r8w8P
-        tP8PD7j/EBC7/xERv/8REcH/EBC0/xAQsv8REcD/ERHA/xAQu/8PD7j/Dw+0/w4Oq/QSEpJLDg6bSBER
-        tvISEr3/ExO//xQUwv8UFMT/FRXF/xUVx/8VFcj/FRXG/xQUxP8UFML/ExPA/xISvf8REbbzFBSeSh4e
-        qDMYGMHlFRXF/xYWx/8WFsj/FxfK/xcXy/8YGMv/GBjL/xcXy/8XF8r/FhbJ/xYWx/8VFcX/GBjB5h8f
-        qDQ5OZAGKSnIgh4ezfMaGs7+GhrO/hoazv4bG8/+GxvP/hsbz/4bG8/+GhrO/hoazv4aGs7+Hh7N9Ckp
-        yIM5OZEGSUnJAE9Pvgs+PtFPNTXUdTIy03YyMtN1MjLTdTIy03UyMtN1MjLTdTIy03UyMtN2NTXUdT4+
-        0U9PT74LSEjJAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAIABAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA
-        AAYAAAAGAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAPDw8QWlpaUoCAgImEhISVhISElYSE
-        hJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYGBgYlbW1tTEBAQEC8v
-        LwAAAAAANDQ0ABYWFhGQkJCOx8fH8NXV1f/X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY
-        2P/X19f/19fX/9fX1//X19f/19fX/9bW1v/IyMjwkZGRjxkZGRI2NjYA////AIuLi2HR0dH129vb/9zc
-        3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/97e3v/e3t7/3t7e/97e3v/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc
-        3P/b29v/0dHR9YyMjGP///8AAAAACL+/v6jc3Nz/3d7d/97f3v/f39//3+Df/+Dg4P/g4eD/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4OHg/+Dg4P/f4N//39/f/97f3v/d3t3/3Nzc/8DAwKkAAAAILy8vDc3N
-        zbve3t7/4ODg/+Dh4P/h4eH/4uLi/+Li4v/j4+P/4+Tj/+Tk5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eHh/+Dh4P/g4OD/3t7e/83Nzb03NzcOMDAwDc7Ozrzg4OD/4eLh/+Lj4v/j4+P/5OTk/+Xl
-        5f/l5uX/5ubm/+fn5//p6en/6enp/+fn5//m5ub/5ebl/+Xl5f/k5OT/4+Tj/+Pj4//i4uL/4ODg/87O
-        zr49PT0PMDAwDc/Pz7vi4uL/4+Tj/+Tl5P/l5eX/5ubm/+fn5//o6Oj/6+vr/+Lj4v/MzMz/yMjI/93e
-        3f/r6+v/6Ono/+fn5//m5+b/5ebl/+Xl5f/k5OT/4uLi/8/Pz748PDwPLy8vDdDR0Lvk5OT/5ubm/+fn
-        5//n6Of/6Ono/+nq6f/r6+v/r6+v/0ZGRv8YGBj/FBQU/zU1Nf+UlJT/5ubm/+rq6v/o6ej/6Ojo/+fn
-        5//m5ub/5OTk/9DR0L48PDwPLi4uDdPT07vo6Oj/6urq/+vr6//r7Ov/7O3s//Dw8P+srKz/FxcX/xAQ
-        EP9MTEz/VVVV/x0dHf8ICAj/hoaG/+3u7f/t7e3/7Ozs/+vr6//q6ur/6Ojo/9PT0747OzsPJiYmDbW1
-        tbvIycj/ysvK/8zMzP/Nzc3/zs/O/8fHx/86Ojr/ExMT/6Ghof/f39//4uLi/7y8vP8uLi7/Ghoa/7O0
-        s//Q0ND/zc3N/8zMzP/Ly8v/ycnJ/7W1tb4zMzMPBAQEDRYWFrsZGRn/Ghoa/xoaGv8bGxr/Gxsb/xgY
-        GP8AAAD/XF1c/+fn5//s7Oz/7e3t/+vr6/+MjIz/AgIC/xQUFP8bGxv/Gxsb/xoaGv8aGhr/GRkZ/xYW
-        Fr4KCgoPAAAADQAAALsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/cHBw/+/v7//19fX/9fb1//Ly
-        8v+hoaH/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAb4FBQUPAQEaDQQEXbsFBWj/BgZu/wYG
-        cf8GBnP/BgZ2/wYGcf8AABf/NjY1/9ra2v/3+Pf/+Pj4/+vr6/9eXl3/AAAH/wYGY/8HB3f/BgZ0/wYG
-        cf8GBm7/BQVo/wcHX74QECYPAgInDQgIjrsJCZ7/Cgqn/wsLq/8LC6//Cwuz/wwMuP8HB2T/AgIE/0tL
-        Sv+pqan/srKy/2ZmZv8JCQf/BARC/wsLsv8LC7T/Cwuw/wsLrP8KCqf/CQmf/wsLkL8YGDkPAgIqDQkJ
-        krsLC6L/DAyp/wwMrf8NDbD/DQ2z/w4Ot/8NDbP/Bwdb/wEBC/8FBQP/BwcF/wEBBf8FBUH/DQ2m/w4O
-        uf8NDbT/DQ2x/wwMrv8MDKr/Cgqi/w0NlL8YGDwPAwMsDQoKmrsMDKj/DQ2v/w4Osv8ODrT/Dw+3/w8P
-        uv8PD73/EBC9/w0Nmf8KCm//CQlp/wwMjv8QELj/EBC+/w8Puv8PD7j/Dg61/w4Osv8NDa//DAyo/w4O
-        m78ZGj8PAwMvDQwMorsODq//Dw+1/w8Pt/8QELn/EBC7/xERvv8REcD/ERHB/xISxf8SEsf/EhLH/xIS
-        xf8REcL/ERHA/xERvv8QELz/EBC6/w8PuP8PD7X/DQ2v/xAQo78bG0IPBAQyDQ4OqrsQELf/EhK7/xIS
-        vf8TE7//ExPA/xMTwv8UFMP/FBTE/xQUxf8VFcb/FRXG/xUVxf8UFMX/FBTD/xQUwv8TE8D/ExO//xIS
-        vf8SErv/EBC3/xISrL8cHEYPDAwzCxUVs7cTE73/FBTB/xUVw/8VFcP/FhbF/xYWxv8WFsf/FxfI/xcX
-        yP8XF8n/FxfJ/xcXyf8XF8j/FhbH/xYWxv8WFsX/FRXE/xUVw/8UFMH/ExO9/xYWtLkWFj0MCQkAAiIi
-        uo0WFsT/FRXG/xYWyP8WFsn/FxfK/xcXyv8XF8v/GBjM/xgYzP8YGM3/GBjN/xgYzP8YGMz/GBjL/xcX
-        y/8XF8r/FhbJ/xYWyP8VFcb/FhbE/yIiu48LCwACPDzgADU1tDAmJsvXFxfK/xYWy/8XF8z/FxfM/xcX
-        zf8XF83/FxfO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfN/xcXzf8XF8z/FxfM/xYWy/8XF8r/JSXL2DU1
-        tDE8POIAQUFyAAAA/wBDQ8U7NDTSsioq0+QlJdLpJCTR6SQk0ekkJNHpJCTS6SQk0ukkJNLpJCTS6SQk
-        0ukkJNLpJCTS6SQk0ekkJNHpJSXS6Skp0+Q0NNKzQ0PGPAAA/wA+PnMAAAAAAJSUVQA3N/8AZ2e4DVpa
-        0ytQUNQyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyUFDUMlpa
-        0ytmZrkNMzP/AI+PXQAAAAAA8AAPAMAAAwCAAAEAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAMAAAwDgAAcAKAAAACAA
-        AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
-        AA4JCQksFRUVPxYWFkIWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYW
-        FkEWFhZBFhYWQRYWFkEWFhZBFhYWQhUVFT8JCQksAAAADgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAMhISEzdHR0kqamptC1tbXitbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1
-        teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW14qenp9B1dXWTIiIiNAAAAAMAAAAAAAAAAAAA
-        AAAAAAAAMTExN6Kior/U1NT82tra/9ra2v/a2tr/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9TU1Pyjo6PAMzMzOAAA
-        AAAAAAAAGhoaAAAAABOenp6l2NjY/tra2v/b29v/3Nvc/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zb3P/b29v/2tra/9jY
-        2P+goKCmAAAAFB0dHQDDw8MAY2NjP87Ozujb29v/3Nzc/93e3f/e3t7/3t7e/97f3v/f39//39/f/9/g
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/f39//39/f/9/f3//e3t7/3t7e/93e
-        3f/c3Nz/29vb/8/Pz+lmZmZAysrKAP///wCcnJxg29vb+9zc3P/e3t7/39/f/9/f3//g4OD/4ODg/+Dh
-        4P/h4eH/4eLh/+Li4v/i4uL/4uLi/+Lj4v/i4+L/4uLi/+Li4v/i4uL/4eLh/+Hh4f/h4eH/4ODg/+Dg
-        4P/f39//39/f/97e3v/c3Nz/29vb+52dnWL///8A////AKenp2jc3dz+3t7e/+Dg4P/g4eD/4eHh/+Hi
-        4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OXk/+Tl5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eLh/+Hh4f/g4eD/4ODg/97e3v/c3Nz+p6ena////wD///8Ap6enaN7e3v7f4N//4eHh/+Li
-        4v/i4+L/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5+b/5ufm/+bm5v/m5ub/5ubm/+Xm
-        5f/l5eX/5OXk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/3+Df/93e3f6oqKhs////AP///wCnp6do39/f/uDh
-        4P/i4+L/4+Tj/+Tk5P/k5eT/5eXl/+bm5v/m5+b/5+fn/+fo5//o6ej/6+zr/+3t7f/t7e3/7Ozs/+nq
-        6f/n6Of/5+fn/+bn5v/m5ub/5ebl/+Xl5f/k5OT/5OTk/+Pj4//g4eD/3t/e/qmpqWz///8A////AKeo
-        p2jg4OD+4uLi/+Tl5P/l5eX/5ubm/+bm5v/n5+f/5+jn/+jo6P/p6en/7Ozs/+Dg4P+1tbX/j4+P/4iI
-        iP+np6f/1dXV/+zs7P/p6un/6Ojo/+jo6P/n5+f/5ufm/+bm5v/l5eX/5OXk/+Li4v/g4OD+qampbP//
-        /wD///8AqKioaOHi4f7k5OT/5ubm/+bn5v/n5+f/6Ojo/+jp6P/p6en/6urq/+3t7f+3t7f/Q0ND/wsL
-        C/8AAAD/AAAA/wUFBf8qKir/kpKS/+fo5//r6+v/6erp/+np6f/o6Oj/5+jn/+fn5//m5ub/5OTk/+Hi
-        4f6qqqps////AP///wCoqKho4+Pj/uXl5f/n5+f/6Ojo/+np6f/p6un/6urq/+vr6//u7+7/tLS0/x8f
-        H/8AAAD/CwsL/y8vL/83Nzf/FRUV/wAAAP8JCQn/g4OD/+zs7P/r6+v/6urq/+nq6f/p6en/6Ojo/+fo
-        5//l5uX/4+Pj/qqqqmz///8A////AKqqqmjo6Oj+6+zr/+3t7f/u7u7/7u/u/+/v7//w8PD/8vLy/+Dg
-        4P87Ozv/AAAA/ykpKf+ioqL/09PT/9fX1/+6urr/T09P/wAAAP8UFBT/ubm5//T09P/w8PD/7/Dv/+/v
-        7//u7u7/7e3t/+vs6//o6Oj+rKysbP///wD+/v4AZWVlaIuLi/6Oj47/kZGR/5KSkv+Tk5P/lJSU/5SV
-        lP+YmJj/cHBw/wUFBf8QEBD/q6ur/+Xl5f/l5eX/5ubm/+Pk4//R0tH/NjY2/wAAAP9KSkr/l5eX/5WV
-        lf+UlJT/k5OT/5KSkv+RkZH/j4+P/4uLi/5nZ2dt////AAAAAAAAAABoAAAA/gAAAP8AAAD/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8AAAD/AAAA/0FBQf/g4OD/6urq/+7u7v/u7u7/7O3s/+jo6P+BgYH/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/gICAm0AAAAAAAAAAAAAAGgAAAD+AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/UlJS/+fo5//w8fD/9PX0//T09P/09PT/7O3s/5WV
-        lf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AgICbQAAAAAEBFUAAQEiaAIC
-        LP4CAi7/AgIw/wMDMf8DAzH/AwMy/wMDM/8DAzX/AgIk/wAAAP8uLi7/3Nzc//Dw8P/4+fj/+fr5//Ly
-        8v/u7u7/Z2dn/wAAAP8BARb/AwM0/wMDM/8DAzL/AwMy/wMDMf8CAjD/AgIu/wICLP4GBiVtAwNYAA0N
-        /wAFBXFoBweS/ggImf8ICKD/CQmk/wkJpv8JCan/CQms/woKsf8JCZb/AQET/wMDAv98fHz/7O3s//P0
-        8//09PT/8vPy/6+vr/8WFhb/AAAA/wYGbv8KCrP/CQmt/wkJqv8JCaf/CQmk/wgIof8ICJr/CAiS/g8P
-        dm0KCv8AEBD/AAYGdGgICJb+CQmd/woKpP8LC6f/Cwuq/wsLrf8LC7D/DAyy/wwMtv8GBl3/AAAB/woK
-        Cf9ZWVn/o6Oj/6ysrP93d3f/Ghoa/wAAAP8EBDL/Cwur/wwMtP8MDLD/Cwut/wsLq/8LC6j/Cgqk/wkJ
-        nf8JCZb+EBB5bQ4O/wASEv8ABwd5aAoKm/4LC6L/Cwuo/wwMq/8MDK7/DAyw/w0Ns/8NDbX/DQ24/w0N
-        sv8HB1P/AQEG/wAAAP8DAwL/BAQC/wAAAP8AAAH/BAQw/wwMnv8NDbr/DQ22/w0Ns/8MDLH/DAyu/wwM
-        rP8MDKn/Cgqi/woKnP4REX9tEBD/ABQU/wAICH5oCwuh/gwMpv8MDKz/DQ2v/w4Osf8NDbP/Dg61/w8P
-        uP8ODrr/Dw+9/w8Puv8LC4P/BgZA/wMDHv8CAhr/BAQy/wkJa/8PD6//Dw++/w4Ouv8PD7j/Dg62/w4O
-        tP8NDbH/DQ2v/w0Nrf8MDKf/Cwuh/hIShG0SEv8AFxf/AAkJg2gMDKf+DQ2r/w4Osf8ODrP/Dw+1/w8P
-        tv8PD7j/EBC6/xAQvP8QEL7/ERHA/xERxP8REcD/EBCz/xAQsf8REbz/ERHE/xERwf8QEL7/EBC8/xAQ
-        u/8PD7n/Dw+3/w8Ptf8PD7P/Dg6x/w0Nq/8NDaf+FBSIbRQU/wAZGf8ACgqJaA0Nrf4ODrD/Dw+1/w8P
-        t/8QELn/EBC6/xAQvP8QEL3/ERG//xERwP8REcH/EhLC/xISw/8SEsT/EhLF/xISw/8SEsL/ERHC/xER
-        wf8REb//ERG+/xAQvP8QELv/EBC5/w8PuP8PD7X/Dg6x/w4Orf4VFY5tFhb/ABwc/wALC45oDw+z/hAQ
-        tv8REbr/ERG8/xISvf8SEr7/EhK//xMTwf8TE8L/ExPD/xMTxP8UFMX/FBTF/xQUxv8UFMb/FBTF/xQU
-        xf8TE8T/ExPD/xMTwv8TE8H/EhLA/xISvv8SEr3/ERG8/xERuv8QELb/EBC0/hcXlG0aGv8AIiL/AA4O
-        lWcREbn9ExO7/xQUv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xYWxf8WFsb/FhbG/xYWx/8WFsf/FxfI/xcX
-        yP8XF8f/FhbH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FRXC/xQUwf8UFMD/FBS//xMTu/8SErn+FhaZaiAg
-        /wAzM/8AHR2dWRYWwPoTE7//FRXD/xUVxf8VFcX/FRXG/xYWxv8WFsf/FhbI/xcXyf8XF8n/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcXyf8WFsj/FhbH/xYWx/8VFcb/FRXF/xUVxf8VFcP/ExO//xYW
-        v/ocHJ1aMjL/ADU1wAApKY0sISHG3xQUw/8WFsf/FhbJ/xcXyf8XF8r/FxfK/xcXy/8YGMv/GBjM/xgY
-        zP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGMz/GBjM/xgYy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xYW
-        x/8UFMP/ISHG4Coqjy41NcIAHx9GABkZAAQ0NMSCHh7M/BQUyP8WFsv/FxfM/xcXzP8XF8z/FxfN/xcX
-        zf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfN/xcXzf8XF8z/FxfM/xcX
-        zP8WFsv/FBTI/x4ezPw0NMSEHR0ABSEhSwAAAAAASUm3AENDkRM+Ps6UKCjS9Rsbzv8ZGc3/GRnN/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc3/GRnN/xsbzv8oKNL1PT3OlkJClBNISLkAAAAAAAAAAAAAAAAAWFi1AFVVlwtQUMtSRUXXnjw8
-        2bk2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY2
-        1rs2Nta7NjbWuzY21rs8PNm5RUXXn09PzFNVVZgMV1e2AAAAAAAAAAAAAAAAAAAAAAAAAAAA1NQAAFNT
-        /wCUlIYEgoKoCX19rQp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8
-        rAp8fKwKfHysCnx8rAp8fKwKfX2tCoKCqAmTk4YETU3/AMrKAAAAAAAAAAAAAAAAAAD/////4AAAB8AA
-        AAPAAAADgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
-        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPgAAAH+AAAHygA
-        AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAJAAAAEAAAABRAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFEAAABAAAAAJAAAAAwAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAACMbGxtiXl5eopGRkcqlpaXapqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qWlpdqSkpLLX19fox0d
-        HWMAAAAkAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAMVJSUpCzs7Pg19fX/Nzc
-        3P/b29v/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb
-        2//c3Nz/2NjY/LW1teFUVFSRAAAAMQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAnaWlpl8zM
-        zPHb29v/19fX/9fX1//Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9jY2P/X19f/19fX/9vb2//Ozs7xbW1tmAAAACgAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AA9TU1N0y8vL7dra2v/Y2Nj/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/2tra/9jY2P/a2tr/zMzM7lZWVnYAAAAQAAAAAAAA
-        AAAAAAAAAAAAAA4ODjGwsLDF3d3d/9nZ2f/b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/d3d3/3d3d/97e
-        3v/e3t7/3t7e/97e3v/e3t7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/e
-        3//e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9vb2//Z2dn/3d3d/7Ky
-        sscQEBAyAAAAAAAAAAAAAAAAAAAAA1paWl3V1dXv2tra/9vb2//c3dz/3d7d/97e3v/e3t7/3t7e/97f
-        3v/f39//39/f/9/f3//f4N//4ODg/+Dg4P/g4OD/4ODg/+Dh4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4eD/4OHg/+Dg4P/g4OD/4ODg/9/g3//f39//39/f/9/f3//e397/3t7e/97e3v/e3t7/3d7d/9zd
-        3P/b29v/2tra/9bW1vBeXl5fAAAAAwAAAAAAAAAAAAAABpSUlIHf39/92tra/9zd3P/e3t7/39/f/9/f
-        3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4uH/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Hh4f/g4eD/4ODg/+Dg4P/g4OD/3+Df/9/f
-        3//f39//39/f/97e3v/c3dz/2tra/9/f3/2WlpaCAAAABgAAAAAAAAAAAAAAB6mpqY3g4OD/29zb/93e
-        3f/f39//3+Df/9/g3//g4OD/4OHg/+Dh4P/h4eH/4eHh/+Hi4f/i4uL/4uLi/+Lj4v/i4+L/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pk4//j5OP/4+Tj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uLi/+Li4v/h4uH/4eLh/+Hh
-        4f/g4eD/4OHg/+Dg4P/f4N//3+Df/9/f3//e3t7/29zb/9/f3/+oqaiQAAAABwEBAQAAAAAAAAAAB6io
-        qJDf4N//3d3d/9/f3//g4OD/4OHg/+Dh4P/h4eH/4eLh/+Hi4f/i4uL/4uPi/+Lj4v/j4+P/4+Tj/+Tk
-        5P/k5OT/5OTk/+Tl5P/k5eT/5OXk/+Xl5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tk5P/k5OT/4+Tj/+Pj
-        4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4eH/4OHg/+Dg4P/f39//3d3d/9/f3/+qqqqVAAAACAMD
-        AwAAAAAAAAAAB6ipqJDh4eH/3t7e/+Dg4P/h4eH/4eLh/+Li4v/i4+L/4uPi/+Pj4//j5OP/4+Tj/+Tk
-        5P/k5eT/5eXl/+Xl5f/l5uX/5ebl/+bm5v/m5ub/5ubm/+bm5v/m5+b/5ubm/+bm5v/m5ub/5ebl/+Xm
-        5f/l5uX/5eXl/+Tl5P/k5OT/5OTk/+Pk4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hh4f/g4OD/3t7e/+Dg
-        4P+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDh4eH/39/f/+Dh4P/i4uL/4uPi/+Pj4//j4+P/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/m5+b/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tl5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Li
-        4v/g4eD/39/f/+Hh4f+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDi4uL/3+Df/+Hh4f/i4+L/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/n5+f/5+fn/+fo5//o6Oj/6Ojo/+jo6P/o6ej/6urq/+zs
-        7P/s7Oz/6+vr/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Pj4//h4eH/3+Df/+Li4v+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDj4+P/4eHh/+Lj
-        4v/k5OT/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5+b/5+fn/+fo5//o6Oj/6Ojo/+np6f/p6en/6urq/+7u
-        7v/o6ej/1dXV/8DBwP+6urr/y8vL/+Dg4P/u7u7/7Ozs/+np6f/p6en/6Ono/+jo6P/o6Oj/5+fn/+fn
-        5//m5ub/5ubm/+Xm5f/l5eX/5eXl/+Tk5P/i4+L/4eHh/+Pj4/+rq6uVAAAACAMDAwAAAAAAAAAAB6mp
-        qZDk5OT/4uLi/+Pk4//l5eX/5ubm/+bm5v/m5+b/5+fn/+fn5//o6Oj/6Ojo/+jp6P/p6en/6erp/+nq
-        6f/t7u3/4uPi/52dnf9QUFD/IyMj/xISEv8NDQ3/Ghoa/zY2Nv92dnb/x8fH/+7u7v/q6+r/6erp/+np
-        6f/p6en/6Ojo/+jo6P/n6Of/5+fn/+bn5v/m5ub/5ubm/+Xl5f/k5OT/4uLi/+Tk5P+srKyVAAAACAMD
-        AwAAAAAAAAAAB6qqqpDl5eX/4uPi/+Tl5P/m5ub/5ufm/+fn5//n6Of/6Ojo/+jp6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+/v7//Jycn/S0tL/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Hh4e/5KS
-        kv/q6ur/6+zr/+rr6v/q6ur/6erp/+np6f/o6ej/6Ojo/+fo5//n5+f/5ufm/+bm5v/l5eX/4+Pj/+Tl
-        5P+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDm5ub/4+Tj/+Xm5f/n5+f/5+jn/+jo6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+rr6v/r6+v/7+/v/8bGxv8wMDD/AAAA/wAAAP8AAAD/AQEB/wcHB/8JCQn/AwMD/wAA
-        AP8AAAD/AAAA/wsLC/+CgoL/7Ozs/+zs7P/r6+v/6uvq/+rq6v/p6un/6enp/+jp6P/o6Oj/5+jn/+fn
-        5//m5ub/5OTk/+Xm5f+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDn5+f/5OXk/+bn5v/o6Oj/6Ono/+np
-        6f/p6un/6urq/+rr6v/r6+v/6+vr/+vs6//u7u7/39/f/0NDQ/8AAAD/AAAA/wAAAP8lJSX/c3Nz/6io
-        qP+ysrL/kZGR/0pKSv8JCQn/AAAA/wAAAP8NDQ3/o6Oj//Dx8P/s7Oz/6+zr/+vr6//q6+r/6urq/+nq
-        6f/p6en/6Ono/+jo6P/n5+f/5eXl/+bm5v+srKyVAAAACAMDAwAAAAAAAAAAB6urq5Dq6ur/6Ono/+rr
-        6v/r7Ov/7Ozs/+3t7f/t7e3/7e7t/+7u7v/u7u7/7+/v/+/v7//09PT/jIyM/wMDA/8AAAD/AAAA/0hI
-        SP/IyMj/5ubm/+Dg4P/f39//4+Pj/+Dg4P+NjY3/EhIS/wAAAP8AAAD/NDQ0/97e3v/x8fH/7+/v/+7v
-        7v/u7u7/7u7u/+3t7f/t7e3/7Ozs/+vs6//r6+v/6enp/+rq6v+tra2VAAAACAMDAwAAAAAAAAAAB4yM
-        jJDCw8L/w8PD/8XGxf/Hx8f/yMjI/8nJyf/Jycn/ysrK/8vLy//Ly8v/zMzM/83Nzf/Dw8P/MzMz/wAA
-        AP8AAAD/Ly8v/8/Pz//i4+L/29vb/+Pj4//l5eX/39/f/9vc2//o6Oj/gYGB/wMDA/8AAAD/BQUF/4yM
-        jP/Q0ND/zMzM/8zMzP/Ly8v/ysrK/8nKyf/Jycn/yMjI/8fHx//Gxsb/w8PD/8LCwv+Ojo6WAAAACAMD
-        AwAAAAAAAAAABw8PD5AUFBT/FRUV/xYWFv8XFxf/GBgY/xgYGP8YGBj/GRkZ/xkZGf8ZGRn/Ghoa/xoa
-        Gv8XFxf/AwMD/wAAAP8DAwP/kZGR/+nq6f/e3t7/7Ozs/+zs7P/r6+v/7e3t/+Xm5f/g4OD/2dnZ/y0s
-        Lf8AAAD/AAAA/w4ODv8bGxv/Ghoa/xoaGv8ZGRn/GRkZ/xgYGP8YGBj/GBgY/xcXF/8WFhb/FRUV/xQU
-        FP8RERGWAAAACAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/xcXF/+Tk5P/q6ur/7/Dv/+7u7v/u7+7/7u7u//Dw
-        8P/g4eD/6+vr/2FhYf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8CAgKWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8dHR3/0dHR/+Xl5f/w8PD/8/Tz//Pz
-        8//z8/P/8/Pz//T09P/l5eX/7u7u/3h4eP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/xcXF/+vr
-        6//u7u7/+Pn4//f39//39/f/9/j3//f39//m5ub/8PDw/1tbW/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwIC
-        L5ADAzz/AwM8/wMDP/8DA0H/AwNC/wQEQv8EBEP/BARE/wQERf8EBEX/BARG/wQER/8EBED/AQEL/wAA
-        AP8BAQH/iIiI//X19f/o6Oj/9fX1//v7+//7/Pv/+fr5/+3t7f/t7u3/2NjY/yYmJv8AAAD/AAAA/wIC
-        KP8EBEj/BARG/wQERv8EBEX/BARE/wQEQ/8EBEP/BARC/wMDQf8DAz//AwM9/wMDPP8HBzKWCAgACAIC
-        AgAAAAAAAAAABwUFeJAHB5f/Bwea/wgIoP8ICKT/CQmn/wkJqv8JCav/CQmt/wkJr/8JCbH/Cgqz/woK
-        tv8KCrX/AwM7/wAAAP8AAAD/JiYm/83Nzf/29vb/6urq/+3t7f/u7+7/6uvq/+7v7v/y8vL/cXFx/wEB
-        Af8AAAD/AQEK/wgIjf8KCrn/Cgq0/wkJsv8JCbD/CQmu/wkJrP8JCar/CQmo/wgIpf8ICKH/Bwea/wcH
-        mP8QEH2XEREACAQEBAAAAAAAAAAABwYGdJAHB5P/CAiV/wgInP8JCaD/CQmk/woKpf8KCqf/Cgqp/woK
-        q/8KCq3/Cgqv/wsLsf8LC7j/CAiE/wEBCf8AAAD/AAAA/zk5Of+/v7//9fX1//f39//29/b/9/j3/+Tl
-        5P95eXn/CQkJ/wAAAP8AAAD/BAQ9/wsLs/8LC7L/Cgqw/woKrv8KCqz/Cgqq/woKqP8KCqb/CQmk/wkJ
-        of8ICJz/CAiW/wgIlP8REXqXEhIACAQEBAAAAAAAAAAABwcHeJAJCZf/CQmZ/woKn/8KCqT/Cwun/wsL
-        qP8LC6r/Cwus/wsLrv8MDLD/DAyx/wwMs/8MDLX/DQ24/wYGT/8AAAD/AAAA/wAAAP8XFxf/XFxc/4+P
-        j/+Wlpb/enp6/zQ0NP8FBQX/AAAA/wAAAP8CAhj/CwuY/w0Nuf8MDLT/DAyy/wwMsP8LC67/Cwut/wsL
-        q/8LC6n/Cwun/wsLpf8KCqD/CQma/wkJmP8SEn6XEREACAQEBAAAAAAAAAAABwcHfJAJCZv/Cgqd/woK
-        o/8LC6f/DAyq/wwMq/8MDK3/DAyu/wwMsP8NDbL/DQ2z/w0Ntf8NDbf/DQ26/w0Nsf8FBUX/AAAC/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICGf8LC4b/Dg69/w0Nt/8NDbb/DQ20/w0N
-        sv8MDLH/DAyv/wwMrf8MDKz/DAyq/wsLp/8KCqP/Cgqd/woKnP8TE4GXEREACAQEBAAAAAAAAAAABwgI
-        f5AKCp//Cwug/wsLpf8MDKr/DAys/w0Nrf8NDa//DQ2w/w0Nsv8NDbT/Dg61/w4Ot/8ODrj/Dg66/w8P
-        vf8PD7f/CAhi/wICE/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAT/BAQ0/w0NmP8PD8D/Dg66/w4O
-        uf8ODrf/Dg62/w4OtP8NDbP/DQ2x/w0Nr/8NDa7/DQ2s/wwMqv8LC6b/Cwug/woKoP8TE4WXEREACAQE
-        BAAAAAAAAAAABwgIgpALC6P/DAyj/wwMqP8NDaz/DQ2v/w4OsP8ODrH/Dg6y/w4OtP8ODrX/Dw+3/w8P
-        uP8PD7r/Dw+7/w8PvP8QEL7/EBDB/w4Oov8JCWL/BQU3/wICGv8CAhj/AwMn/wcHTP8LC4T/EBC4/xAQ
-        wf8PD7z/Dw+7/w8Puv8PD7n/Dw+3/w4Otv8ODrX/Dg6z/w4Osv8ODrD/DQ2v/w0Nrf8MDKn/DAyj/wsL
-        o/8UFIiXEREACAQEBAAAAAAAAAAABwkJhpAMDKf/DAyn/w0NrP8NDa//Dg6x/w4Osv8PD7T/Dw+1/w8P
-        tv8PD7f/Dw+5/xAQuv8QELv/EBC8/xAQvf8QEL7/ERG//xERw/8REcb/ERG//xAQtP8QELP/EBC5/xER
-        xP8REcX/ERHB/xERv/8QEL7/EBC9/xAQvP8QELr/EBC5/w8PuP8PD7f/Dw+1/w8PtP8PD7P/Dg6y/w0N
-        sP8NDaz/DAyn/wwMp/8VFYuXEBEACAQEBAAAAAAAAAAABwoKipAMDKz/DQ2r/w4Or/8ODrP/Dw+0/w8P
-        tv8QELf/EBC4/xAQuf8QELr/EBC7/xERvP8REb3/ERG+/xERv/8REcD/EhLB/xISwv8REcL/EhLD/xIS
-        xP8SEsT/EhLD/xISwv8SEsL/EhLB/xERwP8REcD/ERG//xERvv8REb3/EBC7/xAQuv8QELn/EBC4/xAQ
-        t/8PD7b/Dw+1/w4Os/8ODrD/DQ2r/w0NrP8WFo+XEBEACAQEBAAAAAAAAAAABwoKjZANDbD/DQ2u/w4O
-        sv8PD7X/Dw+3/w8PuP8QELn/EBC6/xAQu/8QELz/EBC9/xERvv8REb//ERHA/xERwf8REcH/ERHC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLD/xISw/8SEsP/ERHC/xERwv8REcH/ERHA/xERv/8REb7/EBC9/xAQ
-        vP8QELv/EBC6/xAQuf8PD7j/Dw+3/w8Ptv8ODrL/DQ2u/w0NsP8XF5OXEREACAQEBAAAAAAAAAAABwsL
-        kZAODrX/Dw+z/xAQtv8QELn/EBC7/xAQu/8REbz/ERG9/xERvv8REb//ERG//xISwf8SEsH/EhLC/xIS
-        w/8SEsP/ExPE/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPE/xISxP8SEsP/EhLC/xIS
-        wf8SEsH/ERHA/xERv/8REb7/ERG9/xERvf8QELz/EBC7/xAQuf8QELb/Dw+z/w4Otf8YGJeXEREACAQE
-        BAAAAAAAAAAABw0NlI8QELj/ERG2/xISuf8TE7z/ExO9/xMTvv8UFL//FBS//xQUwP8UFMH/FBTB/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbF/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8VFcX/FRXE/xUVw/8VFcP/FBTC/xQUwf8UFMD/FBTA/xQUv/8TE77/ExO+/xMTvP8SErn/ERG2/xER
-        uP8aGpuXEBAACAUFBQAAAAAAAAAABg8Pmo0SErz/EhK5/xMTvf8UFL//FBTA/xQUwf8UFMH/FBTC/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbG/xYWxv8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbH/xYWx/8WFsb/FhbG/xUVxf8VFcX/FRXE/xUVw/8VFcP/FRXC/xQUwf8UFMH/FBTB/xQU
-        v/8TE73/EhK5/xISvP8XF56SBQUABwMDAwAAAAAAAAAAAxwcn4MXF8L/EhK8/xQUwP8UFML/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbI/xYWyP8XF8n/FxfJ/xcXyf8XF8r/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8n/FxfJ/xcXyf8WFsj/FhbI/xYWx/8WFsf/FhbG/xYWxv8VFcX/FRXF/xUV
-        xP8VFcT/FRXE/xQUwv8UFMD/EhK8/xYWwv8aGp+EAAAABAAAAAAAAAAAAAAAACkpk18eHsn3ExO//xQU
-        wv8VFcX/FhbG/xYWx/8WFsf/FhbH/xYWyP8WFsj/FxfJ/xcXyf8XF8n/FxfK/xcXyv8XF8v/GBjL/xgY
-        y/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYy/8YGMv/GBjL/xcXy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xcX
-        yP8WFsj/FhbH/xYWx/8WFsf/FhbG/xUVxf8UFML/ExO+/x4eyfgpKZViAAAAAAAAAAAAAAAAenr/ACMj
-        XycsLMvSFRXE/xQUxP8VFcf/FhbJ/xcXyf8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8YGMz/GBjM/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
-        zP8YGMz/FxfL/xcXy/8XF8r/FxfK/xcXyv8XF8n/FhbJ/xUVx/8UFMT/FRXE/ywsy9QkJGQpeXn/AAAA
-        AAAAAAAADQ0IAAAAAAU5Obh1JyfT+RMTxf8VFcj/FhbK/xYWy/8WFsv/FxfM/xcXzP8XF8z/FxfM/xcX
-        zP8XF83/FxfN/xcXzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8XF83/FxfN/xcXzf8XF83/FxfM/xcXzP8XF8z/FxfM/xYWy/8WFsv/FhbK/xUVyP8TE8X/JibS+jo6
-        uXkAAAAGERERAAAAAAAAAAAAAAAAAO3t/wAxMV8XQ0PNoicn0/0VFcn/FhbK/xcXzP8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GRnO/xkZz/8ZGc//GRnO/xkZzv8ZGc7/GRnO/xkZ
-        z/8ZGc//GRnO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8XF8z/FhbK/xUV
-        yf8nJ9P+QkLOpDExYxj8/P8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AQkKEHE1N0Zg1Ndr0Hx/P/xgY
-        zP8XF8z/FxfM/xcXzP8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcX
-        zv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfM/xcX
-        zP8YGMz/Hx/P/zU12fRNTdGaQ0OIHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3fSAERE
-        bQ5ZWcRXUVHasURE3uI6Ot7xMjLZ8zAw2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMwMNjzMjLY8zo63/FDQ97jUFDasllZxVlDQ24PdnbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAC0tHAAEBAAAUVFkDGhotylnZ8o4ZGTNOmNjzTtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7ZGTNOmdnyzhoaLgqUFBmDAcHAAAqKh0AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAD///////8AAP8AAAAA/wAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAAAAAD
-        AADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAA
-        AAAABwAA8AAAAAAPAAD4AAAAAB8AAP4AAAAAfwAA////////AAAoAAAAgAAAAAABAAABACAAAAAAAAAA
-        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAAEQAAABYAAAAWAAAAGAAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGAAAABcAAAAWAAAAEQAA
-        AAwAAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJQAA
-        ADAAAAA4AAAAQAAAAEYAAABHAAAASAAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEgAAABHAAAARgAAAEAAAAA4AAAAMAAAACUAAAAZAAAAEQAAAAgAAAADAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAADAAAACQAAABQAAAAjAAAANAAAAEUAAABWAAAAZQAAAHIAAAB6AAAAgAAAAIMAAACEAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhAAAAIMAAACAAAAAegAA
-        AHIAAABlAAAAVwAAAEYAAAA1AAAAJAAAABQAAAAKAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABIAAAAjAAAAOAAAAFEAAABpAAAAfgAA
-        AI8AAACcAAAApQAAAKsAAACwAAAAswAAALMAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAswAAALAAAACsAAAApQAAAJwAAACQAAAAfwAAAGoAAABSAAAAOQAA
-        ACMAAAASAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
-        AAwAAAAaAAAAMgAAAFAAAABtAAAAiAAAAJwMDAyyWFhY0pWVleHY2Njz3Nzc8/7+/v7/////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////////////////////9zc
-        3PPc3Nzzmpqa41paWtIQEBCzAAAAngAAAIgAAABtAAAAUAAAADMAAAAbAAAADAAAAAMAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAIwAAAEAAAABiAAAAgwAAAJ43NzfAqKio5v39
-        /fz//////////+7u7v/s7Oz/1tbW/9XV1f/V1dX/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/V1dX/7Ozs/+zs7P////////////39/fyxsbHoPT09xAAA
-        AJ4AAACEAAAAYwAAAEAAAAAjAAAADwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEAAA
-        ACYAAABJAAAAbwAAAJIqKiq6t7e36v//////////2tra/9PT0//T09P/1NTU/9TU1P/U1NT/1NTU/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1NTU/9TU
-        1P/U1NT/1NTU/9PT0//T09P/2tra////////////vr6+7i4uLrwAAACUAAAAcQAAAEoAAAAnAAAAEQAA
-        AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAA8AAAAnAAAATAAAAHcAAACcdXV11P39/f3/////1NTU/9TU
-        1P/V1dX/1dXV/9bW1v/W1tb/1tbW/9bW1v/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9bW1v/W1tb/1tbW/9XV1f/V1dX/1NTU/9TU
-        1P///////v7+/n19fdcAAACcAAAAdwAAAE0AAAAnAAAAEAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAANAAAAJQAA
-        AEsAAAB4BAQEn6KiouD/////6urq/9TU1P/V1dX/1dXV/9bW1v/W1tb/19fX/9fX1//X19f/19fX/9fX
-        1//Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9fX
-        1//X19f/19fX/9fX1//X19f/1tbW/9bW1v/V1dX/1dXV/9TU1P/l5eX//////66uruUKCgqhAAAAeQAA
-        AEwAAAAmAAAADQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAB4AAABFAAAAcxcXF6TT09Pv/////9fX1//V1dX/1dXV/9bW
-        1v/W1tb/19fX/9fX1//X19f/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9bW
-        1v/W1tb/1dXV/9XV1f/U1NT//////9fX1+4eHh6nAAAAdAAAAEYAAAAfAAAACgAAAAEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAXAAAAOQAA
-        AGkEBASYzMzM7P/////U1NT/1dXV/9XV1f/W1tb/19fX/9fX1//Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2NjY/9jY2P/Y2Nj/19fX/9fX1//W1tb/1dXV/9XV1f/U1NT//////9fX
-        1+4KCgqaAAAAawAAADkAAAAXAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAACAAAADgAAACoAAABZAAAAjKWlpd3/////1dXV/9bW1v/X19f/19fX/9jY
-        2P/Z2dn/2dnZ/9ra2v/a2tr/2tra/9ra2v/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra
-        2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/V1dX//////6+vr+EAAACNAAAAWwAAACsAAAAOAAAAAgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAbAAAARAAA
-        AHl3d3fM/////9jY2P/W1tb/19fX/9jY2P/Y2Nj/2dnZ/9nZ2f/a2tr/2tra/9ra2v/b29v/29vb/9vb
-        2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/29vb/9vb2//b29v/29vb/9vb2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/Y2Nj/19fX/9bW
-        1v/V1dX//////39/f9EAAAB6AAAARgAAABwAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAADgAAAC4AAABfKSkpof39/fzs7Oz/1tbW/9fX1//X19f/2NjY/9nZ
-        2f/Z2dn/2tra/9ra2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9vb
-        2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/o6Oj//f39/TQ0NKkAAABiAAAALwAA
-        AA4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAYAAAAQgAA
-        AHq2trbh/////9bW1v/W1tb/19fX/9jY2P/Z2dn/2dnZ/9ra2v/a2tr/29vb/9vb2//c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/9jY
-        2P/X19f/1tbW/9bW1v//////w8PD5wAAAHsAAABDAAAAGQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAACYAAABWNzc3ov7+/v7Z2dn/19fX/9jY2P/Z2dn/2tra/9ra
-        2v/b29v/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb2//a2tr/2tra/9nZ2f/Y2Nj/19fX/9bW1v//////Pj4+pwAA
-        AFgAAAAnAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAANAAA
-        AGqpqanY/////9fX1//Y2Nj/2dnZ/9nZ2f/a2tr/29vb/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb
-        2//a2tr/2dnZ/9nZ2f/Y2Nj/19fX//////+xsbHcAAAAawAAADUAAAARAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABBBgYGfvv7+/nh4eH/19fX/9jY2P/Z2dn/2tra/9vb
-        2//b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/93d3f/d3d3/3d3d/9zc3P/c3Nz/29vb/9vb2//a2tr/2dnZ/9jY2P/X19f/4ODg//z8
-        /PgSEhKCAAAAQgAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAA
-        AE5XWVep/////9fY1//Y2dj/2drZ/9nb2f/a29r/29zb/9zd3P/c3dz/3d7d/93e3f/d3t3/3t/e/97f
-        3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3+Df/9/g3//f4N//3+Df/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g
-        3//e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/93e3f/d3t3/3d7d/9zd
-        3P/c3dz/29zb/9rb2v/Z29n/2drZ/9jZ2P/X2Nf//////2RkZLEAAABOAAAAHwAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAV5ubm83/////2NjY/9nZ2f/a2tr/29vb/9zc
-        3P/c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//3t7e/97e3v/e3t7/3d3d/93d3f/c3Nz/3Nzc/9vb2//a2tr/2dnZ/9jY
-        2P//////o6Oj0gAAAFcAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ACoAAABezs7O5P/////Y2Nj/2dnZ/9ra2v/b29v/3Nzc/9zc3P/d3d3/3t7e/97e3v/e3t7/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3t7e/97e
-        3v/e3t7/3d3d/93d3f/c3Nz/29vb/9ra2v/Z2dn/2dnZ//39/f/U1NTnAAAAXgAAACoAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAAGL09PTx7e3t/9nZ2f/a2tr/29vb/9vb
-        2//c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/d3d3/3d3d/9zc3P/b29v/29vb/9ra
-        2v/Z2dn/6Ojo//f39/QAAABkAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAuAAAAZPz8/Pji4+L/2drZ/9rb2v/b3Nv/293b/9zd3P/d3t3/3d7d/97f3v/e397/3uDe/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//4ODg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4eHh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uLi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Pj4//j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Pj/+Pj4//i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4eH/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4OD/3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/97g
-        3v/e397/3t/e/93e3f/d3t3/3N3c/9zd3P/b3Nv/2tva/9na2f/f4N///f39/AAAAGUAAAAwAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAABm/v7+/t3d3f/a2tr/29vb/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9/f3//f39//39/f/97e3v/d3d3/3d3d/9zc
-        3P/b29v/2tra/9nZ2f//////BwcHbAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGb/////29vb/9ra2v/b29v/3Nzc/93d3f/e3t7/3t7e/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/39/f/9/f3//f39//3t7e/97e3v/d3d3/3Nzc/9vb2//a2tr/2tra//////8hISF2AAAAMQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////c3dz/29zb/9vd
-        2//c3dz/3d7d/97f3v/e397/3+Df/9/g3//f4N//4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Tk5P/k5OT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OTk/+Tk5P/j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Pj/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/f4N//3+Df/9/g3//e397/3t/e/93e
-        3f/c3dz/3N3c/9vc2//a29r//////yEhIXYAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////93d3f/c3Nz/3d3d/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9vb2///////ISEhdgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3d3d/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/g4OD/39/f/9/f
-        3//e3t7/3d3d/93d3f/c3Nz/29vb//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////d3t3/3N3c/93e3f/d393/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4+Pj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5ub/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm5f/l5uX/5ebl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j4+P/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4OHg/+Dh4P/f4N//3+Df/97f3v/d393/3d7d/9zd3P/b3Nv//////yEh
-        IXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97e
-        3v/d3d3/3t7e/9/f3//f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Dg
-        4P/g4OD/39/f/9/f3//e3t7/3d3d/9zc3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3t7e/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Hh4f/h4eH/4ODg/+Dg4P/f39//39/f/97e3v/d3d3/3Nzc////
-        //8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///e3t7/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Hh
-        4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/c3Nz//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97f3v/d3t3/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Lj4v/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/l5eX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ubm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo
-        5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xl5f/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4uPi/+Lj4v/h4uH/4eLh/+Dh4P/g4eD/3+Df/9/g3//e397/3d7d/9ze
-        3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////39/f/97e3v/f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Li
-        4v/i4uL/4eHh/+Hh4f/g4OD/4ODg/9/f3//e3t7/3t7e//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////f39//3t7e/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/g4OD/39/f/97e
-        3v/e3t7//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////9/h3//e397/3+Df/+Dh4P/g4uD/4eLh/+Hj4f/i4+L/4uPi/+Pk4//k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6Oj/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5eXl/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/i4+L/4uPi/+Hj4f/h4uH/4OLg/+Dh4P/f4N//3uDe/97f3v//////ISEhdgAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4eHh/9/f3//g4OD/4eHh/+Li
-        4v/i4uL/4+Pj/+Pj4//j4+P/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//v7+//+fn5//////////////////////////////////////////////////z8/P/w8PD/6+vr/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg
-        4P/g4OD/39/f//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ//////h4eH/39/f/+Dg4P/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Pj4//l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6+vr//Dw8P/9/f3///////b29v/BwcH/kJCQ/35+fv9OTk7/Pz8//wsL
-        C/87Ozv/Pz8//35+fv9+fn7/uLi4/+3t7f////////////Pz8//r6+v/6urq/+rq6v/q6ur/6urq/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/+Dg4P/f39///////yEhIXYAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Hi4f/f4d//4OHg/+Hi
-        4f/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/n5+f/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6+zr//P08///////7+/v/7Gx
-        sf9dXV3/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZG
-        Rv+goKD/4+Pj///////3+Pf/7e7t/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+np
-        6f/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fn5//m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/k5eT/4+Tj/+Pk4//i4+L/4uPi/+Hi
-        4f/g4eD/4OHg/9/g3///////ISIhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGf/////4uLi/+Hh4f/h4eH/4uLi/+Pj4//j4+P/5OTk/+Tk5P/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
-        6v/r6+v/6+vr//Hx8f//////6urq/4WFhf8LCwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/XV1d/9XV1f//////9PT0/+zs
-        7P/r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+Xl5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4ODg//////8iIiJ2AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////i4uL/4eHh/+Hh
-        4f/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6+vr/+zs7P/4+Pj/+vr6/56env8LCwv/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/29vb//v7+///////+/v7//r6+v/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/k5OT/4+Pj/+Pj
-        4//i4uL/4eHh/+Hh4f/g4OD//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////+Lj4v/h4uH/4eLh/+Lj4v/j5OP/4+Tj/+Tl5P/l5eX/5ebl/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+rr6v/q6+r/6uvq/+rr6v/q6+r/6+vr/+vr
-        6//v7+///////+bm5v8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoa
-        Gv/Kysr///////Dx8P/r6+v/6+vr/+rr6v/q6+r/6uvq/+rr6v/q6+r/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xl5f/j5OP/4+Tj/+Lj4v/h4+H/4eLh/+Dh4P//////IiIidgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4+Pj/+Li
-        4v/i4uL/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/8PDw///////Kysr/Dw8P/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+jo6P///////Pz8//r6+v/6+vr/+vr
-        6//r6+v/6+vr/+vr6//q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5eXl/+Tk
-        5P/k5OT/4+Pj/+Pj4//i4uL/4eHh//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////j4+P/4uLi/+Li4v/j4+P/5OTk/+Tk5P/l5eX/5eXl/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np
-        6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v
-        7///////urq6/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP+BgYH///////Ly8v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/l5eX/5OTk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH//////yIi
-        InYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Pk
-        4//i4+L/4uTi/+Pk4//k5eT/5OXk/+Xm5f/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp
-        6P/o6ej/6Ono/+jp6P/o6ej/6enp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6uvq/+rr
-        6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//v7+///////8PDw/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+MjIz///////Dy
-        8P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6enp/+jp6P/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//m5+b/5ufm/+bn
-        5v/k5eT/5OXk/+Pk4//j5OP/4uPi/+Hi4f//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5OTk/+Pj4//k5OT/5OTk/+Xl5f/l5eX/5ubm/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/7e3t////
-        ///R0dH/CwsL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+np6f//////+/v7//s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/4uLi////
-        //8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///k5OT/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr
-        6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/29vb/8fHx/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/2ZmZv+VlZX/uLi4/7i4uP+4uLj/qKio/3V1
-        df8bGxv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcH
-        B//V1dX//f39/+3t7f/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5eXl/+Xl5f/k5OT/5OTk/+Pj4//i4uL//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Tl5P/j5OP/5OXk/+Tl5P/l5uX/5ebl/+fo
-        5//n6Of/5+jn/+jp6P/o6ej/6Ono/+jp6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6uvq/+rr
-        6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt7P/s7ez/7/Dv////
-        //9vb2//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/RkZG/8fH
-        x//5+fn//////////////////v7+///////////////////////T09P/dXV1/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ywsLP/4+Pj/8/Tz/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+np6f/o6ej/6Ono/+jp6P/n6Of/5+jn/+fo5//m5+b/5ebl/+Tl5P/k5eT/4+Tj/+Lj
-        4v//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////5eXl/+Tk5P/l5eX/5eXl/+bm5v/m5ub/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs
-        7P/s7Oz/7Ozs/+3t7f/t7e3/7e3t/+3t7f/+/v7/zMzM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/Jycn/8PDw//+/v7/+/v7/+np6f/k5OT/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/j4+P/5+fn//b29v/+/v7/3Nzc/0pKSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/5SUlP//////7+/v/+3t7f/t7e3/7e3t/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+fn5//m5ub/5eXl/+Xl5f/k5OT/4+Pj//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////l5eX/5OTk/+Xl5f/l5eX/5ubm/+bm
-        5v/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//r6+v/6+vr/+vr6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7e3t/+3t7f/t7e3/8fHx////
-        //84ODj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZGRv/u7u7//v7+/+jo
-        6P/j4+P/4eHh/+Dg4P/e3t7/3d3d/9zc3P/c3Nz/3d3d/9/f3//g4OD/4uLi/+bm5v/39/f/+vr6/4WF
-        hf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BwcH/+rq6v/29vb/7e3t/+3t
-        7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Tk
-        5P/j4+P//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////+Xn5f/k5eT/5ebl/+Xm5f/m5+b/5ufm/+jp6P/o6ej/6Ono/+nq6f/p6un/6erp/+nq
-        6f/q6ur/6uvq/+rr6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt
-        7P/s7ez/7O3s/+3t7f/t7e3/7e7t/+3u7f/+//7/xMTE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP9jY2P/+vr6//X19f/m5ub/4uLi/9/f3//c3Nz/2dnZ/9XV1f/T09P/09PT/9PT
-        0//V1dX/2NjY/9vb2//f39//4eHh/+Tk5P/v7+///v7+/6qqqv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/jo6O///////u7+7/7e7t/+3t7f/t7e3/7O3s/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+rq6v/p6un/6erp/+nq
-        6f/o6uj/6Ono/+jp6P/n6ef/5ufm/+Xm5f/l5uX/5OXk/+Pl4///////JSUleQAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5+fn/+Xl5f/m5ub/5ubm/+fn
-        5//p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+zs
-        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/u7u7/7+/v////
-        //9UVFT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/OTk5//T09P/z8/P/5OTk/+Hh
-        4f/e3t7/2dnZ/9TU1P/Pz8//y8vL/8jIyP/R0dH/y8vL/8rKyv/Nzc3/0tLS/9jY2P/d3d3/4ODg/+Tk
-        5P/s7Oz//v7+/3x8fP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/+Pj4//Pz
-        8//u7u7/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/o6Oj/5ubm/+bm
-        5v/l5eX/5eXl//////8lJSV5AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ///////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////6Ojo/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wgICP/k5OT/+vz6/+bm5v/i4+L/3t7e/9fX1//Q0dD/zM3M/+Lj4v/29vb///////v7
-        +//+/v7/+vr6/+fn5//P0M//zc7N/9XV1f/c3dz/4uPi/+Tl5P/x8fH/+vr6/z09Pf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+4uLj/////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////ygoKHkAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnbGxs/1VVVf9YWFj/W1tb/15e
-        Xv9hYWH/Y2Nj/2ZmZv9paWn/ampq/2xsbP9tbW3/b29v/3BwcP9wcHD/cXFx/3Jycv9zc3P/c3Nz/3R0
-        dP91dXX/dnZ2/3d3d/93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/35+fv9/f3//gICA/4GB
-        gf9SUlL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5eX//7+/v/p6en/5eXl/9/f
-        3//Y2Nj/zs7O/9nZ2f/8/Pz/8/Pz/+vr6//o6Oj/6Ojo/+jo6P/q6ur/8fHx///////k5OT/zc3N/9bW
-        1v/d3d3/4+Pj/+fn5//+/v7/1tbW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zQ0
-        NP+BgYH/gICA/39/f/9+fn7/fn5+/319ff98fHz/e3t7/3p6ev95eXn/eHh4/3d3d/93d3f/dnZ2/3V1
-        df90dHT/c3Nz/3Nzc/9ycnL/cXFx/3BwcP9wcHD/bm5u/2xsbP9ra2v/aWlp/2dnZ/9kZGT/YWFh/19f
-        X/9bW1v/WVlZ/1VVVf9sbGz/FRUVeQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xYWFv/z8/P/8/Pz/+fn5//h4uH/2tra/9HR0f/e397//v7+/+3t7f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6+vr//f39//s7Oz/zc7N/9fY1//g4eD/5ufm/+vs6//+/v7/VlZW/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAh5AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ioqK//7+/v/q6ur/5eXl/9/f
-        3//V1dX/1dXV//7+/v/t7e3/6urq/+rq6v/q6ur/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/7Ozs//r6
-        +v/h4eH/0tLS/9zc3P/k5OT/6enp//7+/v/ExMT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgICHkAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP/MzMz//v7+/+rq6v/l5eX/3Nzc/9DQ0P/z8/P/8fLx/+zs7P/s7Oz/7Ozs/+zs
-        7P/s7ez/7O3s/+zt7P/s7Oz/7Ozs/+zs7P/s7Oz/7+/v//z8/P/R0dH/2tra/+Li4v/p6en/8fHx//f3
-        9/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJeQAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//f39//y8vL/6erp/+Lj
-        4v/Y2dj/19fX///////v7+//7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
-        7v/t7e3/+vr6/+Hi4f/V1tX/4OHg/+jp6P/t7e3//////01NTf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCQl6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8oKCj//////+/v7//p6en/4eHh/9fX1//k5OT//Pz8/+/v7//v8O//7/Dv/+/w
-        7//v8O//7/Dv/+/w7//v8O//7/Dv/+/w7//v8O//7/Dv/+/v7//19fX/8PDw/9TU1P/f39//5+fn/+3t
-        7f//////gICA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJ
-        CXoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0dHR///////7+/v/+rq
-        6v/h4eH/1tbW/+np6f/6+vr/8fHx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy
-        8f/x8vH/8fHx//X19f/39/f/09PT/9/f3//o6Oj/7u7u//////+Xl5f/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/TExM///////w8PD/6+zr/+Pk4//X19f/7Ozs//z8/P/z8/P/8/Pz//Pz
-        8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9vb2//r6+v/T1NP/4OHg/+nq
-        6f/v8O///////52dnf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP88PDz///////Hy
-        8f/t7u3/5ubm/9na2f/n5+f///////X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1
-        9f/19fX/9fX1//X19f/6+vr/9PT0/9fX1//i4+L/6+zr//Hx8f//////ioqK/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv/9/f3/9vb2/+/v7//o6Oj/3d3d/+Dg4P//////9/f3//b3
-        9v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2///////p6en/29vb/+bm
-        5v/u7u7/8/Pz//////9dXV3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/CgoKegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9zc
-        3P/+/v7/8fHx/+vs6//i4uL/1tfW//v7+//8/Pz/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4
-        +P/4+Pj/+Pj4//j4+P/6+vr//////9vb2//f39//6urq//Hx8f/4+fj//f39/xoaGv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ra2t//7+/v/09PT/7/Dv/+jo6P/d3d3/4+Pj////
-        ///7/Pv/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+vr6///////w8PD/2tra/+bm
-        5v/t7u3/8/Pz//7+/v/W1tb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP87Ozv//f39//39/f/z8/P/7e3t/+Xl5f/Z2dn/7+/v///////9/v3/+vv6//r7+v/7+/v/+/v7//v7
-        +//6+/r/+vv6//z9/P//////+Pj4/9ra2v/j4+P/6+vr//Ly8v/4+Pj//v7+/4qKiv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CgoKegAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcICLr/BgaP/wcHkv8HB5X/BweX/wcH
-        m/8HB53/CAif/wgIoP8ICKP/CAik/wgIpf8ICKf/CQmn/wkJqP8JCaj/CQmp/wkJqv8JCav/CQmr/wkJ
-        rP8JCa3/CQmu/wkJrv8JCa//CQmw/wkJsP8JCbH/CQmy/woKs/8KCrP/Cgq0/woKtf8KCrb/Cwu3/wYG
-        cv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP++vr7//v7+//b29v/y8vL/7O3s/+Tk
-        5P/a29r/6Ojo//7+/v///////f39//z8/P/8/Pz//Pz8//z9/P///////////+/v7//a29r/4eLh/+rr
-        6v/x8vH/9fb1//7+/v/m5ub/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BARB/wsL
-        t/8KCrb/Cgq1/woKtP8KCrP/Cgqz/wkJsv8JCbH/CQmw/wkJsP8JCa//CQmu/wkJrv8JCa3/CQms/wkJ
-        q/8JCav/CQmq/wkJqf8JCaj/CQmo/wkJp/8ICKb/CAil/wgIo/8ICKH/CAif/wcHnv8HB5v/BweZ/wcH
-        lf8HB5P/BgaQ/wgIuv8dHR16AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZwkJy/8HB5v/Bwee/wgIoP8ICKP/CAim/wgIp/8JCaj/CQmr/wkJrP8JCa7/CQmu/woK
-        sP8KCrD/Cgqx/woKsv8KCrL/Cgqz/woKs/8KCrT/Cgq1/woKtv8KCrb/Cgq3/woKt/8KCrj/Cgq5/wsL
-        uf8LC7r/Cwu7/wsLu/8LC7z/Cwu9/wsLvf8LC8T/CwvU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/zAwMP/39/f//v7+//b29v/y8vL/7e3t/+Xl5f/d3d3/3t7e//X19f//////////////
-        //////////////r6+v/j4+P/29vb/+Pj4//r6+v/8fHx//b29v/9/f3//v7+/3Jycv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCqn/CwvL/wsLvf8LC73/Cwu8/wsLu/8LC7v/Cwu6/wsL
-        uf8KCrn/Cgq4/woKt/8KCrf/Cgq2/woKtv8KCrX/Cgq0/woKs/8KCrP/Cgqy/woKsv8KCrH/Cgqw/woK
-        r/8JCa7/CQmt/wkJq/8JCar/CAin/wgIpv8ICKT/CAih/wgInv8HB5z/CQnL/ysrK3oAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCAiy/wYGif8HB4v/BweP/wcH
-        kv8HB5X/BweX/wgImv8ICJv/CAid/wgIn/8ICKD/CAih/wkJov8JCaP/CQmk/wkJpf8JCaX/CQmm/wkJ
-        pv8JCaf/CQmo/wkJqf8JCar/CQmq/wkJq/8JCaz/CQmt/wkJrf8JCa7/Cgqv/woKsP8KCrH/Cgqx/woK
-        s/8MDND/AgI7/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/42Njf/+/v7//f39//b3
-        9v/z9PP/7/Dv/+nq6f/j5OP/3d3d/93d3f/k5OT/5eXl/+Xm5f/e397/3Nzc/+Hi4f/o6Oj/7u7u//Ly
-        8v/29vb//P38//7+/v+8vLz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAG/wwM
-        0v8KCrf/Cgqx/woKsf8KCrD/Cgqv/wkJrv8JCa3/CQmt/wkJrP8JCav/CQmq/wkJqv8JCan/CQmo/wkJ
-        p/8JCab/CQmm/wkJpf8JCaX/CQmk/wkJo/8JCaL/CAig/wgIoP8ICJ7/CAic/wgImv8HB5j/BweV/wcH
-        k/8HB5D/BweN/wYGif8ICLL/KioqewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcICLP/BgaK/wcHjP8HB5D/BweT/wcHlv8HB5j/CAib/wgInP8ICJ7/CAig/wgI
-        of8ICKL/CQmj/wkJpP8JCaT/CQml/wkJpv8JCaf/CQmn/wkJqP8JCan/CQmp/wkJqv8JCav/CQms/wkJ
-        rP8JCa7/CQmu/wkJr/8KCrD/Cgqx/woKsf8KCrL/Cgqz/wwMwv8KCrD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/7S0tP/+/v7//v7+//j4+P/19vX/8fLx/+7v7v/q6+r/5ufm/+Tl
-        5P/j5OP/5OTk/+bm5v/p6un/7u7u//Dx8P/09fT/9/j3//39/f/+/v7/1tbW/w0NDf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBnX/DAzK/woKtP8KCrL/Cgqx/woKsf8KCrD/CQmv/wkJ
-        rv8JCa7/CQms/wkJrP8JCav/CQmq/wkJqf8JCan/CQmo/wkJp/8JCaf/CQmm/wkJpf8JCaT/CQmk/wkJ
-        o/8ICKH/CAih/wgIn/8ICJ3/CAib/wcHmf8HB5b/BweU/wcHkf8HB47/BgaK/wgIs/8qKip7AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwgItv8GBoz/BweO/wcH
-        kf8HB5T/BweX/wcHmf8ICJv/CAid/wgIn/8ICKH/CAii/wgIo/8JCaT/CQmk/wkJpf8JCab/CQmm/wkJ
-        p/8JCaj/CQmp/wkJqf8JCar/CQmr/wkJrP8JCaz/CQmt/wkJrv8JCa//CQmv/woKsP8KCrH/Cgqy/woK
-        s/8KCrP/Cgq3/w4O1P8CAif/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6ur
-        q//+/v7//v7+//r7+v/3+Pf/9vb2//P08//x8fH/7/Dv/+/v7//v8O//8PHw//Lz8v/19vX/9/j3//r6
-        +v/+/v7//v7+/8vLy/8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
-        z/8KCrz/Cgqz/woKs/8KCrL/Cgqx/woKsP8JCa//CQmv/wkJrv8JCa3/CQms/wkJrP8JCav/CQmq/wkJ
-        qf8JCan/CQmo/wkJp/8JCab/CQmm/wkJpf8JCaT/CQmk/wgIov8ICKL/CAig/wgInv8ICJz/BweZ/wcH
-        l/8HB5X/BweS/wcHj/8GBov/CAi2/yoqKnsAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnCQm3/wcHjf8HB4//CAiT/wgIlf8ICJn/CAia/wkJnP8JCZ7/CQmf/wkJ
-        ov8JCaP/CQmk/woKpf8KCqX/Cgqm/woKp/8KCqf/Cgqo/woKqf8KCqn/Cgqq/woKq/8KCqv/Cgqs/woK
-        rf8KCq7/Cgqu/wsLr/8LC7D/Cwux/wsLsf8LC7L/Cwuz/wsLtP8LC7X/DAzE/wsLt/8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Jycv/x8fH//v7+//7+/v/7/Pv/+fr5//j4
-        +P/3+Pf/9/j3//f49//4+Pj/+fr5//r6+v/+/v7//v7+//r6+v+tra3/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBm//DAzN/wsLtv8LC7T/Cwuz/wsLsv8LC7H/Cwux/wsL
-        sP8LC6//Cgqu/woKrv8KCq3/Cgqs/woKq/8KCqv/Cgqq/woKqf8KCqn/Cgqo/woKp/8KCqf/Cgqm/woK
-        pf8KCqX/CQmj/wkJo/8JCaH/CQme/wkJnf8ICJr/CAiZ/wgIlv8ICJP/CAiQ/wcHjP8JCbf/KioqewAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC7j/CAiO/wgI
-        kP8JCZT/CQmW/wkJmf8JCZv/CQmd/woKn/8KCqD/Cgqj/woKo/8LC6X/Cwum/wsLpv8LC6f/Cwun/wsL
-        qP8LC6n/Cwup/wsLqv8LC6v/Cwus/wsLrP8LC63/Cwuu/wsLrv8MDK//DAyw/wwMsf8MDLH/DAyy/wwM
-        s/8MDLP/DAy0/wwMtf8MDLn/ERHU/wQET/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xoaGv+urq7/9vb2///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////39
-        /f/CwsL/OTk5/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIZ/xER
-        1/8MDLz/DAy1/wwMtP8MDLP/DAyz/wwMsv8MDLH/DAyx/wwMsP8MDK//Cwuu/wsLrv8LC63/Cwus/wsL
-        rP8LC6v/Cwuq/wsLqf8LC6n/Cwuo/wsLp/8LC6f/Cwum/wsLpv8LC6T/Cgqj/woKov8KCp//CQme/wkJ
-        m/8JCZr/CQmW/wkJlP8ICJL/CAiN/wsLuP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsLu/8ICJD/CAiS/wkJlv8JCZn/CQmb/wkJnv8JCZ//Cgqh/woK
-        o/8KCqX/Cgql/wsLp/8LC6f/Cwuo/wsLqP8LC6n/Cwuq/wsLqv8LC6v/Cwur/wsLrP8LC63/Cwuu/wsL
-        rv8LC6//Cwuw/wwMsf8MDLH/DAyy/wwMsv8MDLP/DAy0/wwMtf8MDLX/DAy2/wwMt/8MDMD/Dw/T/wAA
-        DP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/dnZ2/7q6
-        uv/h4eH/4uLi///////p6en/4eHh/8nJyf+EhIT/ISEh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MDLn/Dw/G/wwMuP8MDLb/DAy1/wwMtf8MDLT/DAyz/wwM
-        sv8MDLL/DAyx/wwMsf8LC7D/Cwuv/wsLrv8LC67/Cwut/wsLrP8LC6v/Cwur/wsLqv8LC6r/Cwup/wsL
-        qP8LC6j/Cwun/wsLpv8KCqX/Cgqk/woKof8JCaD/CQme/wkJnP8JCZn/CQmW/wgIlP8ICJD/Cwu7/ysr
-        K3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwu+/wkJ
-        kv8JCZP/CQmW/woKmv8KCpz/Cgqe/woKoP8LC6P/Cwuk/wsLpv8LC6b/DAyn/wwMqP8MDKj/DAyp/wwM
-        qv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrf8MDK7/DAyv/w0NsP8NDbD/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0NuP8QEMj/Dg65/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQmC/xIS
-        0v8NDbr/DQ23/w0Ntv8NDbb/DQ21/w0NtP8NDbT/DQ2z/w0Ns/8NDbL/DQ2x/w0NsP8NDbD/DAyv/wwM
-        rv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyp/wwMqP8MDKj/DAym/wsLpv8LC6X/Cwuj/woK
-        of8KCp//Cgqc/woKmv8JCZj/CQmU/wkJkf8LC77/KysrewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC8D/CQmU/wkJlv8JCZj/Cgqc/woKnv8KCqD/Cgqi/wsL
-        pP8LC6b/Cwun/wsLqP8MDKn/DAyq/wwMqv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrv8MDK//DAyv/wwM
-        sP8MDLD/DAyx/w0Nsv8NDbL/DQ2z/w0Ns/8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0Nt/8NDbj/DQ25/w0N
-        u/8QENH/DAyh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcHXP8SEtf/DQ29/w0Nuf8NDbj/DQ23/w0Nt/8NDbb/DQ22/w0N
-        tf8NDbT/DQ2z/w0Ns/8NDbL/DQ2y/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwMrf8MDKz/DAys/wwM
-        q/8MDKv/DAyq/wwMqv8MDKj/Cwuo/wsLpv8LC6X/Cgqi/woKof8KCp7/Cgqc/wkJmv8JCZb/CQmT/wsL
-        wP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsL
-        wP8JCZT/CQmW/wkJmP8KCpz/Cgqe/woKoP8KCqL/Cwuk/wsLpf8LC6f/Cwuo/wsLqf8MDKr/DAyq/wwM
-        q/8MDKv/DAys/wwMrP8MDK3/DAyt/wwMrv8MDK//DAyw/wwMsP8MDLH/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbX/DQ21/w0Ntv8NDbb/DQ23/w0NuP8NDbj/DQ25/w4Ovf8SEtT/DAyT/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HB13/EhLZ/w4O
-        wP8NDbr/DQ24/w0NuP8NDbf/DQ22/w0Ntv8NDbX/DQ21/w0NtP8NDbP/DQ2z/w0Nsv8NDbH/DAyx/wwM
-        sP8MDLD/DAyv/wwMrv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyq/wsLqP8LC6j/Cwum/wsL
-        pP8KCqL/Cgqh/woKnv8KCpz/CQma/wkJlv8JCZP/CwvA/ysrK3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwvE/wkJlv8JCZj/CQmb/woKnf8KCqD/Cgqi/woK
-        o/8LC6b/Cwun/wsLqf8LC6n/Cwur/wwMq/8MDKz/DAys/wwMrf8MDK3/DAyu/wwMr/8MDK//DAyw/wwM
-        sP8MDLH/DAyx/wwMsv8MDLP/DQ2z/w0NtP8NDbX/DQ21/w0Ntv8NDbf/DQ23/w0NuP8NDbj/DQ25/w0N
-        uf8NDbr/DQ26/w4Ov/8REdP/Dg65/wAAB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/CgqN/xQU2f8ODsH/DQ27/w0Nuv8NDbn/DQ25/w0NuP8NDbj/DQ23/w0N
-        t/8NDbb/DQ21/w0Ntf8NDbT/DQ2z/wwMs/8MDLL/DAyx/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwM
-        rf8MDK3/DAys/wwMrP8MDKv/Cwuq/wsLqf8LC6j/Cwum/woKpP8KCqL/Cgqg/woKnv8JCZv/CQmZ/wkJ
-        lv8LC8T/LCwsewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcMDMb/CgqY/woKmf8KCpz/Cwue/wsLof8LC6P/Cwuk/wwMp/8MDKj/DAyq/wwMqv8MDKv/DQ2s/w0N
-        rP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0NsP8NDbD/DQ2x/w0Nsv8NDbL/DQ2z/w4Os/8ODrT/Dg61/w4O
-        tf8ODrb/Dg62/w4Ot/8ODrf/Dg64/w4Ouf8ODrn/Dg66/w8Puv8PD7v/Dw+7/w8Pvv8REc7/ERHR/wIC
-        Kf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8Psf8UFNb/Dw/A/w8P
-        vP8PD7v/Dw+6/w4Ouv8ODrn/Dg65/w4OuP8ODrf/Dg63/w4Otv8ODrb/Dg61/w4Otf8ODrT/Dg6z/w0N
-        s/8NDbL/DQ2y/w0Nsf8NDbD/DQ2w/w0Nr/8NDa7/DQ2u/w0Nrf8NDa3/DQ2s/w0NrP8MDKr/DAyq/wwM
-        qf8MDKf/Cwul/wsLo/8LC6H/Cwuf/woKnP8KCpr/CgqX/wwMxv8sLCx7AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwwMx/8KCpn/Cgqa/woKnf8LC5//Cwui/wsL
-        pP8LC6X/DAyo/wwMqf8MDKr/DAyr/wwMrP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0Nr/8NDbD/DQ2w/w0N
-        sf8NDbH/DQ2y/w0Ns/8NDbP/Dg60/w4OtP8ODrX/Dg61/w4Otv8ODrf/Dg63/w4OuP8ODrn/Dg65/w4O
-        uv8ODrr/Dg67/w8Pu/8PD7z/Dw+8/w8Pvv8REcn/FBTY/wkJcP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wUFSP8REdP/ERHP/w8Pv/8PD7z/Dw+8/w8Pu/8ODrv/Dg66/w4Ouv8ODrn/Dg65/w4O
-        uP8ODrf/Dg63/w4Otv8ODrX/Dg61/w4OtP8ODrT/DQ2z/w0Ns/8NDbL/DQ2x/w0Nsf8NDbD/DQ2w/w0N
-        r/8NDa//DQ2u/w0Nrv8NDa3/DQ2t/wwMq/8MDKv/DAyp/wwMqP8LC6b/Cwuk/wsLov8LC6D/Cgqd/woK
-        m/8KCpj/DAzH/y0tLXwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnDAzL/woKm/8KCp3/Cgqf/wsLof8LC6P/Cwum/wsLp/8MDKn/DAyr/wwMrP8MDK3/DAyu/wwM
-        rv8NDa//DQ2v/w0NsP8NDbD/DQ2x/w0Nsf8NDbL/DQ2y/w0Ns/8NDbT/DQ20/w0Ntf8NDbX/Dg62/w4O
-        tv8ODrf/Dg64/w4OuP8ODrn/Dg65/w4Ouf8ODrr/Dg67/w4Ou/8ODrz/Dg68/w4OvP8PD73/Dw+9/w8P
-        vv8PD8T/FRXY/xERyP8FBVb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICKv8PD7P/FRXc/xERx/8PD7//Dw+9/w8P
-        vf8ODrz/Dg68/w4OvP8ODrv/Dg67/w4Ouv8ODrn/Dg65/w4Ouf8ODrj/Dg64/w4Ot/8ODrb/Dg62/w0N
-        tf8NDbX/DQ20/w0NtP8NDbP/DQ2y/w0Nsv8NDbH/DQ2x/w0NsP8NDbD/DQ2v/w0Nr/8MDK7/DAyt/wwM
-        rf8MDKv/DAyq/wsLp/8LC6b/Cwul/wsLof8KCp//Cgqd/woKm/8MDMv/LS0tfAAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcNDcv/Cgqb/wsLnf8LC5//DAyh/wwM
-        o/8MDKb/DAyn/wwMqf8NDav/DQ2s/w0NrP8NDa7/Dg6u/w4Or/8ODq//Dg6w/w4OsP8ODrH/Dg6x/w4O
-        sv8ODrL/Dg6z/w4Os/8ODrT/Dg60/w8Ptf8PD7b/Dw+2/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+7/w8Pu/8QELv/EBC8/xAQvP8QEL3/EBC9/xAQvv8QEMD/EhLJ/xUV2/8TE8//Cgp9/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUF
-        X/8QELz/FRXd/xISzf8QEML/EBC//xAQvf8QEL3/EBC8/xAQvP8QELv/Dw+7/w8Pu/8PD7r/Dw+6/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptv8PD7b/Dw+1/w4OtP8ODrT/Dg6z/w4Os/8ODrL/Dg6y/w4O
-        sf8ODrH/Dg6w/w4OsP8ODq//Dg6v/w4Orv8NDa3/DQ2s/w0Nq/8MDKr/DAyn/wwMpv8MDKX/DAyh/wsL
-        n/8LC53/Cgqb/w0Ny/8tLS18AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZw0Nzv8KCp7/Cwuf/wsLof8MDKT/DAym/wwMqP8MDKr/DAyr/w0NrP8NDa7/DQ2u/w0N
-        sP8NDbD/Dg6x/w4Osf8ODrH/Dg6y/w4Osv8ODrL/Dg6z/w4OtP8ODrT/Dg61/w4Otf8ODrb/Dg62/w8P
-        t/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8Puv8PD7r/Dw+7/w8Pu/8PD7z/Dw+8/w8Pvf8QEL3/EBC9/xAQ
-        vv8QEL7/EBC//xAQv/8QEL//EBDB/xISyf8SEtX/FRXd/xMTyf8ODpf/BQVh/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8FBVH/CgqC/xAQuP8VFd3/FRXZ/xISy/8QEMP/EBDA/xAQv/8QEL//EBC+/xAQ
-        vv8QEL3/EBC9/w8Pvf8PD7z/Dw+8/w8Pu/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dw+3/w8P
-        t/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4OtP8ODrP/Dg6y/w4Osv8ODrL/Dg6x/w4Osf8ODrH/DQ2w/w0N
-        r/8NDa7/DQ2t/wwMq/8MDKr/DAyo/wwMp/8MDKT/Cwui/wsLn/8KCp3/DQ3O/y0tLXwAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnDQ3P/woKn/8LC6D/Cwuj/wwM
-        pf8MDKf/DAyo/wwMq/8MDKz/DQ2t/w0Nr/8NDa//DQ2w/w0Nsf8ODrH/Dg6x/w4Osv8ODrL/Dg6z/w4O
-        s/8ODrT/Dg60/w4Otf8ODrX/Dg62/w4Otv8ODrf/Dg63/w8PuP8PD7j/Dw+5/w8Puf8PD7r/Dw+6/w8P
-        u/8PD7v/Dw+8/w8PvP8PD73/Dw+9/w8Pvf8PD77/EBC+/xAQv/8QEL//EBC//xAQv/8QEMD/EBDA/xAQ
-        wf8QEMT/EhLL/xIS0v8WFtr/Fhbi/xYW3P8TE9b/ExPX/xMT1/8TE9X/Fhbk/xYW3P8SEtX/EhLN/xAQ
-        xv8QEMH/EBDA/xAQwP8QEL//EBC//xAQv/8QEL//EBC+/w8Pvv8PD73/Dw+9/w8Pvf8PD7z/Dw+8/w8P
-        u/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dg63/w4Ot/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4O
-        tP8ODrP/Dg6z/w4Osv8ODrL/Dg6x/w4Osf8NDbH/DQ2v/w0Nr/8NDa7/DAys/wwMq/8MDKn/DAyn/wwM
-        pf8LC6P/Cwuh/woKnv8NDc//LS0tfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcPD9D/Cwug/wwMov8MDKT/DAym/w0NqP8NDan/DQ2s/w0Nrf8ODq7/Dg6v/w4O
-        sP8ODrH/Dg6y/w4Osv8PD7L/Dw+z/w8Ps/8PD7P/Dw+0/w8PtP8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8P
-        t/8QELj/EBC4/xAQuf8QELn/EBC6/xAQuv8QELv/EBC7/xAQvP8QELz/EBC8/xAQvf8QEL3/ERG9/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHA/xERwf8REcH/ERHB/xERwf8REcL/ERHE/xER
-        x/8REcf/ERHH/xERxv8REcP/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERwP8REb//ERG//xER
-        v/8REb7/ERG+/xERvf8QEL3/EBC9/xAQvP8QELz/EBC8/xAQu/8QELv/EBC6/xAQuv8QELn/EBC5/xAQ
-        uP8QELj/Dw+3/w8Pt/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8PD7P/Dw+z/w8Ps/8PD7L/Dg6y/w4O
-        sv8ODrD/Dg6w/w4Orv8NDa3/DQ2s/w0Nqv8NDaj/DAym/wwMpP8MDKL/Cwuf/w8P0P8uLy58AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZw8P1P8LC6L/DAyk/wwM
-        pv8MDKj/DQ2q/w0Nq/8NDa3/DQ2v/w4OsP8ODrH/Dg6y/w4Os/8ODrP/Dg6z/w8PtP8PD7T/Dw+1/w8P
-        tf8PD7b/Dw+2/w8Pt/8PD7f/Dw+3/w8PuP8PD7j/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        vP8QELz/EBC9/xAQvf8QEL7/EBC+/xAQvv8QEL//ERG//xERv/8REcD/ERHA/xERwP8REcH/ERHB/xER
-        wf8REcH/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xER
-        wv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//EBC//xAQvv8QEL7/EBC+/xAQ
-        vf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQuv8QELr/EBC6/w8Puf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8P
-        t/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8ODrP/Dg6z/w4Osv8ODrL/Dg6w/w0Nr/8NDa7/DQ2r/w0N
-        qv8MDKj/DAym/wwMpP8LC6L/Dw/U/y4vLnwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnDw/X/wsLpf8MDKb/DAyo/wwMqv8NDaz/DQ2u/w0Nr/8NDbH/Dg6y/w4O
-        s/8ODrP/Dg60/w4Otf8ODrX/Dg62/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+6/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xAQv/8QEL//EBDA/xAQ
-        wP8QEMD/EBDA/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERw/8REcP/ERHD/xER
-        w/8REcP/ERHD/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHB/xER
-        wf8REcH/EBDA/xAQwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL3/EBC9/xAQvf8QELz/EBC8/xAQ
-        vP8PD7v/Dw+6/w8Puv8PD7r/Dw+5/w8Puf8PD7j/Dw+4/w8Pt/8PD7f/Dw+3/w8Ptv8PD7b/Dg62/w4O
-        tf8ODrX/Dg6z/w4Os/8ODrL/DQ2x/w0NsP8NDa7/DQ2s/wwMqv8MDKn/DAym/wsLpP8PD9f/Li8ufAAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQENf/DAyl/wwM
-        pv8NDaj/DQ2q/w4OrP8ODq7/Dg6v/w4OsP8PD7L/Dw+z/w8Ps/8PD7T/Dw+1/w8Ptf8PD7X/EBC2/xAQ
-        tv8QELf/EBC3/xAQt/8QELj/EBC4/xAQuf8QELn/EBC5/xAQuv8QELr/EBC6/xERu/8REbz/ERG8/xER
-        vP8REb3/ERG9/xERvf8REb7/ERG+/xERv/8REb//ERG//xERwP8SEsD/EhLA/xISwP8SEsH/EhLB/xIS
-        wf8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xIS
-        wv8SEsL/EhLC/xISwv8SEsL/EhLB/xISwf8SEsH/EhLA/xISwP8SEsD/ERHA/xERv/8REb//ERG//xER
-        vv8REb7/ERG9/xERvf8REb3/ERG8/xERvP8REbz/ERG7/xAQuv8QELr/EBC6/xAQuf8QELn/EBC5/xAQ
-        uP8QELj/EBC3/xAQt/8QELf/EBC2/xAQtv8PD7X/Dw+1/w8Ptf8PD7P/Dw+z/w8Psv8ODrH/Dg6v/w4O
-        rv8ODqz/DQ2q/w0Nqf8NDab/DAyk/xAQ1/8vLy98AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ2/8MDKf/DAyp/w0Nq/8NDa3/Dg6u/w4OsP8ODrH/Dg6y/w8P
-        s/8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/EBC4/xAQuP8QELj/EBC5/xAQuf8QELr/EBC6/xAQ
-        u/8QELv/EBC7/xAQvP8QELz/EBC8/xERvf8REb3/ERG+/xERvv8REb7/ERG//xERv/8REb//ERHA/xER
-        wP8REcH/ERHB/xERwf8SEsH/EhLB/xISwv8SEsL/EhLC/xISwv8SEsP/EhLD/xISw/8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISwv8SEsL/EhLC/xIS
-        wv8SEsH/EhLB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/ERG9/xER
-        vf8QELz/EBC8/xAQvP8QELv/EBC7/xAQu/8QELr/EBC6/xAQuf8QELn/EBC4/xAQuP8QELj/Dw+3/w8P
-        t/8PD7f/Dw+2/w8Ptf8PD7X/Dw+0/w4Osv8ODrH/Dg6w/w4Orv8NDa3/DQ2r/wwMqf8MDKb/EBDb/zAw
-        MHwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDc/wwM
-        qP8MDKr/DQ2s/w0Nrv8ODq//Dg6x/w4Osv8ODrP/Dw+0/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8P
-        uP8QELn/EBC5/xAQuf8QELr/EBC6/xAQuv8QELv/EBC7/xAQu/8QELz/EBC8/xAQvf8QEL3/EBC9/xER
-        vv8REb7/ERG+/xERv/8REb//ERG//xERwP8REcD/ERHB/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xIS
-        wv8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsT/EhLE/xISxP8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xER
-        wP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQ
-        u/8QELr/EBC6/xAQuv8QELn/EBC5/xAQuf8PD7j/Dw+4/w8Pt/8PD7f/Dw+2/w8Ptv8PD7X/Dg6z/w4O
-        sv8ODrH/Dg6v/w0Nrv8NDaz/DAyq/wwMqP8QENz/MDAwfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQEN7/DAyq/wwMq/8NDa3/DQ2v/w4OsP8ODrL/Dg6z/w4O
-        tP8PD7X/Dw+2/w8Pt/8PD7j/Dw+4/w8PuP8PD7n/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        u/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xERv/8REb//ERG//xERv/8REcD/ERHA/xER
-        wf8REcH/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8SEsP/EhLD/xISw/8SEsP/EhLE/xIS
-        xP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsP/EhLD/xISw/8SEsP/ERHD/xER
-        w/8REcL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG//xAQ
-        vv8QEL7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELz/EBC7/xAQu/8QELv/EBC6/xAQuv8QELr/Dw+5/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptf8ODrT/Dg6z/w4Osv8ODrH/DQ2v/w0Nrf8MDKv/DAyp/xAQ
-        3v8wMDB8AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ
-        4v8MDKz/DAyt/w0Nr/8NDbH/Dg6y/w4OtP8ODrX/Dg62/w8Pt/8PD7j/Dw+5/w8Puv8PD7r/Dw+6/w8P
-        uv8PD7v/Dw+7/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL3/EBC+/xAQvv8QEL7/EBC//xAQ
-        v/8QEMD/EBDA/xERwP8REcD/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8REcP/ERHD/xER
-        w/8REcT/ERHE/xERxP8REcT/ERHE/xERxf8REcX/EhLF/xISxf8SEsX/EhLF/xISxf8SEsX/EhLF/xIS
-        xf8SEsX/ERHF/xERxf8REcT/ERHE/xERxP8REcT/ERHE/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xER
-        wv8REcL/ERHC/xERwf8REcH/ERHA/xERwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL7/EBC9/xAQ
-        vf8QEL3/EBC9/xAQvP8QELz/EBC8/w8Pu/8PD7v/Dw+7/w8Puv8PD7r/Dw+6/w8Puf8PD7n/Dw+3/w4O
-        tv8ODrX/Dg60/w4Os/8NDbH/DQ2v/wwMrf8MDKv/EBDi/zExMX0AAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDk/w0Nrv8NDbD/Dg6x/w4Os/8ODrX/Dw+2/w8P
-        t/8PD7j/EBC5/xAQuv8QELr/EBC8/xAQvP8QELz/EBC8/xAQvP8QEL3/EBC9/xERvf8REb7/ERG+/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHB/xERwf8SEsH/EhLC/xISwv8SEsL/EhLC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLE/xISxP8SEsX/EhLF/xISxf8SEsX/EhLF/xISxf8TE8b/ExPG/xMT
-        xv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8SEsX/EhLF/xIS
-        xf8SEsX/EhLF/xISxf8SEsT/EhLE/xISxP8SEsT/EhLD/xISw/8SEsP/EhLC/xISwv8SEsL/EhLC/xIS
-        wf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//ERG//xERvv8REb7/ERG+/xERvv8REb3/EBC9/xAQ
-        vf8QELz/EBC8/xAQvP8QELz/EBC7/xAQuv8QELn/Dw+4/w8Pt/8PD7b/Dg61/w4Os/8ODrH/DQ2w/w0N
-        rf8QEOT/MTExfQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcUFOb/Dw+w/xAQsP8QELP/ERG0/xERtv8SErf/EhK4/xISuf8SErr/ExO7/xMTu/8TE7z/ExO9/xMT
-        vf8TE73/ExO9/xMTvf8TE77/FBS+/xQUvv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXF/xYW
-        xf8WFsX/FhbF/xYWxf8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xUVxf8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVwv8VFcL/FRXC/xUVwv8UFMH/FBTB/xQUwP8UFMD/FBTA/xQU
-        wP8UFL//FBS//xQUv/8UFL//FBS+/xQUvv8TE77/ExO9/xMTvf8TE73/ExO9/xMTvf8TE7v/ExO7/xIS
-        uv8SErn/EhK4/xISt/8REbb/ERG0/xAQs/8QELH/Dw+v/xQU5v8xMTF9AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxQU5v8PD6//EBCw/xAQsv8REbT/ERG2/xIS
-        t/8SErj/EhK5/xISuv8TE7v/ExO7/xMTvP8TE7z/ExO9/xMTvf8TE73/ExO9/xMTvv8TE77/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQUwf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUV
-        w/8VFcP/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxf8VFcX/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUV
-        wv8VFcL/FBTB/xQUwf8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL//FBS//xQUvv8UFL7/ExO+/xMT
-        vv8TE73/ExO9/xMTvf8TE73/ExO8/xMTu/8TE7v/EhK6/xISuf8SErj/EhK3/xERtv8REbT/EBCz/xAQ
-        sP8PD6//FBTm/zIyMn0AAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABlFBTo/xAQsv8QELP/ERG1/xIStv8SErj/ExO5/xMTuv8TE7v/ExO8/xQUvf8UFL3/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBS//xQUwP8VFcD/FRXA/xUVwP8VFcH/FRXB/xUVwf8VFcH/FRXC/xUV
-        wv8VFcL/FRXC/xUVw/8VFcP/FhbD/xYWw/8WFsT/FhbE/xYWxP8WFsT/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsb/FhbG/xYWxv8XF8b/FxfG/xcXxv8XF8b/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXxv8XF8b/FxfG/xcXxv8WFsb/FhbG/xYWxv8WFsX/FhbF/xYW
-        xf8WFsX/FhbF/xYWxP8WFsT/FhbE/xYWxP8WFsP/FhbD/xUVw/8VFcP/FRXC/xUVwv8VFcL/FRXC/xUV
-        wf8VFcH/FRXB/xUVwf8VFcD/FRXA/xUVwP8UFMD/FBS//xQUv/8UFL//FBS//xQUv/8UFL7/FBS9/xQU
-        vf8TE7z/ExO7/xMTuv8TE7n/EhK4/xIStv8REbX/ERGz/xAQsf8UFOr/MjIyewAAADEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAGQUFOr/EBCz/xAQtP8REbX/EhK3/xIS
-        uf8SErr/ExO7/xMTvP8TE73/FBS+/xQUvv8UFL//FBS//xQUv/8UFMD/FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8VFcH/FRXB/xUVwf8VFcL/FRXC/xUVwv8VFcL/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FhbE/xYW
-        xP8WFsX/FhbF/xYWxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xYW
-        x/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxf8WFsX/FhbF/xYWxf8WFsX/FhbE/xYW
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUVwv8VFcL/FRXB/xUVwf8VFcH/FBTB/xQU
-        wP8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL7/FBS+/xMTvf8TE7z/ExO7/xISuv8SErn/EhK3/xER
-        tf8QELT/EBCy/xQU6/8yMjJ7AAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAtAAAAYhUV7v8REbX/EBC2/xERuP8REbn/EhK7/xISvP8TE73/ExO+/xMTv/8UFMD/FBTA/xQU
-        wf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQUwv8UFML/FBTC/xQUwv8VFcP/FRXD/xUVw/8VFcP/FRXE/xUV
-        xP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUVxf8VFcX/FRXG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsn/FhbJ/xYW
-        yf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8VFcb/FRXF/xUVxf8VFcX/FRXF/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQUwv8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wP8UFMD/ExO//xMTvv8TE73/EhK8/xISu/8REbn/ERG4/xAQtv8QELT/Fhbu/zQ0NHkAAAAuAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAABeGBjp/hMTuf8QELb/ERG3/xER
-        uf8SErr/EhK8/xMTvf8TE77/ExO//xQUwP8UFMD/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wv8UFML/FBTC/xQUwv8UFML/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUV
-        xf8VFcX/FRXG/xUVxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbI/xYW
-        yP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8VFcb/FRXG/xUV
-        xf8VFcX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQU
-        wv8UFML/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTA/xQUwP8TE7//ExO+/xMTvf8SErz/EhK6/xER
-        uf8REbj/EBC2/xIStv8YGO7/AAAAXwAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAJgAAAFchIeT+FxfB/xERuP8SErn/EhK7/xMTvP8TE77/FBS//xQUwP8UFMH/FRXC/xUV
-        wv8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FhbF/xYW
-        xf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xcXx/8XF8f/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8j/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8f/FxfH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8WFsX/FhbF/xYWxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUV
-        w/8VFcL/FRXC/xQUwf8UFMD/FBS//xMTvv8TE7z/EhK7/xISuf8REbj/GBi//x0d6P4AAABYAAAAJwAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAATioq2PscHM7/ERG4/xER
-        uv8SErz/ExO9/xMTvv8UFMD/FBTB/xQUwv8UFML/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8VFcX/FRXF/xUVxf8VFcX/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcX
-        yv8XF8r/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FRXF/xUVxf8VFcX/FRXF/xUV
-        xf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8UFML/FBTC/xQUwf8UFMD/ExO//xMT
-        vf8SErz/EhK6/xERuP8bG8v/JibZ+wAAAE8AAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAABoAAABCODjG8SEh4v8REbr/ERG8/xISvv8SEr//ExPA/xMTwv8UFMP/FBTE/xQU
-        xP8VFcX/FRXF/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV
-        x/8VFcf/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbJ/xYWyf8WFsn/FhbJ/xYWyf8WFsr/FhbK/xYW
-        yv8WFsr/FhbK/xcXyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyv8WFsr/FhbK/xYWyv8WFsn/FhbJ/xYWyf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xUVx/8VFcf/FRXH/xUVx/8VFcf/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUV
-        xv8VFcX/FRXF/xQUxP8UFMT/FBTD/xMTwv8TE8D/EhK//xISvv8REbz/ERG6/yEh3f80NMn1AAAAQwAA
-        ABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAADVAQKTVKSn3/xER
-        uv8SErv/ExO9/xMTv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xUVxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8XF8f/FxfH/xcXyP8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8YGMr/GBjK/xgY
-        yv8YGMr/GBjK/xgYyv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgY
-        y/8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMr/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXx/8XF8f/FhbH/xYWx/8WFsf/FhbH/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8VFcX/FRXE/xUVw/8VFcL/FBTB/xQU
-        wP8TE7//ExO9/xISu/8REbr/KCj3/z09ptoAAAA3AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAMAAAAKDg4b5MsLPn/GBi+/xISvf8TE7//FBTA/xQUwv8VFcP/FRXE/xYW
-        xf8WFsb/FhbG/xcXx/8XF8f/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/GBjJ/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMv/GBjL/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZ
-        zP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgY
-        yv8YGMn/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yP8XF8f/FxfH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FBTC/xQUwP8TE7//ExO9/xcXvf8sLPn/Ozt+pQAA
-        ACkAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAcAAAAQzg4
-        6fsoKND/EhK+/xMTv/8TE8H/FBTC/xUVw/8VFcT/FRXF/xYWxv8WFsf/FhbI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8XF8r/GBjK/xgY
-        yv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        zP8YGMz/GBjM/xgYzP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8WFsj/FhbH/xYWxv8VFcX/FRXF/xUV
-        w/8UFML/FBTB/xMTv/8SEr7/JibN/zg46/4LCxJKAAAAHQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABEAAAAvSEi12zY2/v8UFMD/ExPB/xMTwv8UFMT/FBTF/xUV
-        xv8VFcf/FhbI/xYWyf8WFsn/FhbK/xYWyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcXzP8XF8z/FxfM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcX
-        zP8XF8z/FxfM/xcXzP8XF8z/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyf8WFsn/FhbI/xUVx/8VFcb/FBTF/xQUxP8TE8L/ExPB/xMTwP82Nvz/Rka54gAA
-        ADAAAAARAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA
-        AB4rK0pjOzv5/iYmyv8SEsD/ExPC/xMTw/8UFMT/FBTF/xUVxv8VFcf/FhbI/xYWyf8WFsn/FhbJ/xYW
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXzP8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcXzP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcX
-        y/8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FhbK/xYWyf8WFsn/FhbJ/xYWyP8VFcf/FRXG/xQU
-        xf8UFMT/ExPD/xMTwv8SEsD/IyPI/zs7+v8yMlhuAAAAIAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEQAAAC5OTsLiPDz//xYWwv8SEsL/ExPD/xQU
-        xP8UFMX/FBTG/xUVx/8VFcj/FhbJ/xYWyf8WFsr/FhbK/xYWyv8WFsv/FhbL/xYWy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfM/xcXzP8XF8z/FxfM/xcXzP8XF8z/GBjM/xgY
-        zP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xYWy/8WFsv/FhbL/xYW
-        yv8WFsr/FhbK/xYWyf8WFsn/FRXI/xUVx/8UFMb/FBTG/xQUxP8TE8P/EhLC/xYWwv87O///T0/I6QAA
-        AC8AAAARAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAAIAAAAGicnQlJKSvT+MTHq/xMTwv8TE8P/ExPF/xQUxv8UFMf/FBTI/xUVyP8VFcn/FRXK/xYW
-        yv8WFsr/FhbL/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbM/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfN/xcX
-        zf8XF83/FxfN/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbL/xYWyv8WFsr/FRXK/xUVyf8VFcj/FBTI/xQU
-        x/8UFMb/ExPF/xMTw/8SEsL/MDDm/0pK9f4xMVJeAAAAGwAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAOAAAAIlJSmqdPT/7/Kyvc/xMT
-        xf8TE8b/FBTH/xUVyP8VFcn/FRXK/xYWyv8WFsv/FhbL/xYWzP8WFsz/FxfM/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zP8XF8z/FhbM/xYWy/8WFsv/FhbK/xUVyv8VFcn/FRXI/xQUx/8TE8b/ExPF/ygo1/9LS/7/VVWisQAA
-        ACMAAAAOAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAARAAAAKFtbus5LS///IiLJ/xMTxv8TE8f/FBTI/xQUyf8VFcr/FRXK/xUV
-        y/8WFsz/FhbM/xYWzP8WFsz/FhbN/xYWzf8WFs3/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FhbN/xYWzf8WFs3/FhbM/xYWzP8WFsz/FhbM/xUVy/8VFcr/FRXK/xQU
-        yf8UFMj/ExPH/xMTxv8hIcn/Skr//1tbwNcAAAApAAAAEQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAK2Fh
-        1epOTv//JibM/xUVx/8WFsj/FhbJ/xcXyv8XF8v/GBjL/xgYzP8YGMz/GBjM/xgYzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8YGM3/GBjM/xgYzP8YGMz/GBjL/xcXy/8XF8r/FhbJ/xYWyP8VFcf/JCTK/0xM//9hYdvwAAAALAAA
-        ABQAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAUFhYgMGlp1elXV///MDDh/xcXx/8WFsj/FxfJ/xcX
-        yf8YGMr/GBjL/xgYy/8ZGcv/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xoa
-        zv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcv/GBjL/xgYy/8YGMr/FxfJ/xcX
-        yf8XF8j/FhbH/y4u3f9VVf//aWnb7yAgNDgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
-        AAcAAAATAAAAJmhovcldXf7/PDz0/xsbyf8WFsn/FxfJ/xcXyv8XF8r/GBjL/xgYy/8YGMz/GBjM/xgY
-        zP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GBjM/xgY
-        zP8YGMz/GBjM/xgYy/8YGMv/FxfK/xcXyv8XF8n/FhbJ/xsbyf85OfD/Xl7+/2lpxNIAAAAnAAAAFAAA
-        AAgAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAcAAAARAAAAIGRkp5xzc/f8VFT//y0t
-        2v8ZGcr/FhbK/xcXyv8XF8v/FxfL/xcXzP8XF8z/GBjM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfL/xcXy/8XF8r/FhbK/xgY
-        yf8rK9f/U1P//3Bw+P5lZaukAAAAIQAAABEAAAAHAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAAMAAAAFzAwSjxxcc/cc3P7/ltb//83N+f/HR3N/xcXzP8XF8z/FxfN/xcX
-        zf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zf8YGM3/FxfN/xcXzf8XF8z/FxfM/x0dzf80NOT/WVn//3R0/P5zc9XgMzNNPQAAABgAAAAMAAAABQAA
-        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAA
-        ABo9PVxDdHTN0X198/x1df//YmL//1FR//9BQf//ODjo/ygo5v8eHtH/FxfP/xcXz/8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcXz/8XF8//HR3Q/ycn5P83N+j/QED//1FR//9hYf//dHT//3p6
-        9fx1dc/XQUFnSwAAABsAAAAQAAAACAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAACAAAAA8AAAAWAAAAIFxcjml0dMbAenrh7Hl5
-        4O5/f/P8fn70/IKC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//fX31/H9/8/x5eePuenri7XR0x8NeXpJuAAAAIAAAABYAAAAPAAAACQAAAAQAAAABAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAABAAAAAwAAAAYAAAAKAAAADwAAABMAAAAXAAAAGwAAAB4AAAAgAAAAIgAAACMAAAAjAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAjAAAAIwAAACIAAAAgAAAAHgAAABsAAAAYAAAAEwAA
-        AA8AAAAKAAAABwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
-        ///////////////////////////////////////////////////////////////////////////gAAAA
-        AAAAAAAAAAf/////AAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///g
-        AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAA
-        AP//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA
-        AAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAP/wA
-        AAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAA
-        Af//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///wAAAAAAAAAAAAAAAAD///+AAAAAAAAAAA
-        AAAAAB////wAAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAA////////////////////////////////
-        ////////////////////////////////////////////////////////
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs b/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs
deleted file mode 100644
index 161a49b..0000000
--- a/PokemonGo/RocketAPI/Window/PokemonForm.Designer.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-namespace PokemonGo.RocketAPI.Window
-{
-    partial class PokemonForm
-    {
-        /// <summary>
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PokemonForm));
-            this.button1 = new System.Windows.Forms.Button();
-            this.listView1 = new System.Windows.Forms.ListView();
-            this.pokemonId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
-            this.pokemonCp = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
-            this.SuspendLayout();
-            //
-            // button1
-            //
-            this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.button1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-            this.button1.Location = new System.Drawing.Point(12, 373);
-            this.button1.Name = "button1";
-            this.button1.Size = new System.Drawing.Size(289, 33);
-            this.button1.TabIndex = 1;
-            this.button1.Text = "UPDATE LIST";
-            this.button1.UseVisualStyleBackColor = true;
-            this.button1.Click += new System.EventHandler(this.button1_Click);
-            //
-            // listView1
-            //
-            this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.pokemonId,
-            this.pokemonCp});
-            this.listView1.GridLines = true;
-            this.listView1.Location = new System.Drawing.Point(12, 12);
-            this.listView1.Name = "listView1";
-            this.listView1.Size = new System.Drawing.Size(287, 352);
-            this.listView1.TabIndex = 2;
-            this.listView1.UseCompatibleStateImageBehavior = false;
-            this.listView1.View = System.Windows.Forms.View.Details;
-            this.listView1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
-            this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
-            //
-            // pokemonId
-            //
-            this.pokemonId.Text = "Pokemon Id";
-            this.pokemonId.Width = 133;
-            //
-            // pokemonCp
-            //
-            this.pokemonCp.Text = "Combat Power";
-            this.pokemonCp.Width = 133;
-            //
-            // PokemonForm
-            //
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(311, 418);
-            this.Controls.Add(this.button1);
-            this.Controls.Add(this.listView1);
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.Name = "PokemonForm";
-            this.Text = "Pokemon List";
-            this.Load += new System.EventHandler(this.PokemonForm_Load);
-            this.ResumeLayout(false);
-
-        }
-
-        #endregion
-        private System.Windows.Forms.Button button1;
-        private System.Windows.Forms.ListView listView1;
-        private System.Windows.Forms.ColumnHeader pokemonId;
-        private System.Windows.Forms.ColumnHeader pokemonCp;
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/PokemonForm.cs b/PokemonGo/RocketAPI/Window/PokemonForm.cs
deleted file mode 100644
index c558040..0000000
--- a/PokemonGo/RocketAPI/Window/PokemonForm.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using PokemonGo.RocketAPI.Enums;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public partial class PokemonForm : Form
-    {
-        public PokemonForm()
-        {
-            InitializeComponent();
-            ClientSettings = Settings.Instance;
-        }
-
-        private void PokemonForm_Load(object sender, EventArgs e)
-        {
-            Execute();
-        }
-
-        public static ISettings ClientSettings;
-
-        private async void Execute()
-        {
-            var client = new Client(ClientSettings);
-
-            try
-            {
-
-                await client.Login();
-
-                await client.SetServer();
-                var inventory = await client.GetInventory();
-                var pokemons =
-                    inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon)
-                        .Where(p => p != null && p?.PokemonId > 0).OrderByDescending(key => key.Cp);
-
-
-                foreach (var pokemon in pokemons)
-                {
-                    ListViewItem lvi = new ListViewItem(pokemon.PokemonId.ToString());
-                    listView1.Items.Add(lvi);
-                    lvi.SubItems.Add(pokemon.Cp.ToString());
-                }
-            }
-            catch (TaskCanceledException) { ColoredConsoleWrite(Color.Red, "Task Canceled Exception - Restarting"); Execute(); }
-            catch (UriFormatException) { ColoredConsoleWrite(Color.Red, "System URI Format Exception - Restarting"); Execute(); }
-            catch (ArgumentOutOfRangeException) { ColoredConsoleWrite(Color.Red, "ArgumentOutOfRangeException - Restarting"); Execute(); }
-            catch (ArgumentNullException) { ColoredConsoleWrite(Color.Red, "Argument Null Refference - Restarting"); Execute(); }
-            catch (NullReferenceException) { ColoredConsoleWrite(Color.Red, "Null Refference - Restarting"); Execute(); }
-            catch (Exception ex) { ColoredConsoleWrite(Color.Red, ex.ToString()); Execute(); }
-        }
-
-        private void ColoredConsoleWrite(Color red, string taskCanceledExceptionRestarting)
-        {
-            //throw new NotImplementedException();
-        }
-
-        private void button1_Click(object sender, EventArgs e)
-        {
-            listView1.Items.Clear();
-            Execute();
-        }
-
-        private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
-        {
-            //listView1.Sorting = listView1.Sorting == SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending;
-        }
-
-        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
-        {
-
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/PokemonForm.resx b/PokemonGo/RocketAPI/Window/PokemonForm.resx
deleted file mode 100644
index 2bf4da1..0000000
--- a/PokemonGo/RocketAPI/Window/PokemonForm.resx
+++ /dev/null
@@ -1,1545 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
-        IACoJQAA7h4AAICAAAABACAAKAgBAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA
-        AAAAAAAABAQEAAAAAAE8PDwcU1NTM1NTUzRTU1M0U1NTNFNTUzRTU1M0U1NTNFNTUzRTU1M0U1NTMzw8
-        PBwAAAACBAQEAAAAAAGLi4tQurq6yMXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXF
-        xeS6urrIjIyMUQAAAAF+fn4kycnJ0dzd3P/e3t7/3t7e/9/f3//f39//4ODg/+Dg4P/f4N//39/f/97e
-        3v/e3t7/3N3c/8nJydKAgIAlsbGxRtna2fHf4N//4OHg/+Hh4f/i4uL/4+Pj/+Pk4//j5OP/4+Pj/+Li
-        4v/h4uH/4OHg/9/g3//Z2tnysbGxR7a2tknc3dzz4uPi/+Pk4//l5eX/5ubm/+nq6f/n5+f/5ufm/+rq
-        6v/m5+b/5eXl/+Tk5P/i4+L/3N3c87a3tku3uLdJ39/f8+Xm5f/n5+f/6Ono/+jo6P+oqKj/WFhY/1JS
-        Uv+YmJj/5OXk/+np6f/n5+f/5ubm/9/g3/O4uLhLt7e3SeDg4PPn5+f/6Ono/+zt7P+lpaX/JCQk/2Vl
-        Zf9vb2//JSUl/4qKiv/r7Ov/6Ono/+fn5//g4ODzuLi4Sz4+PElNTUvzUFBO/1FRT/9TU1H/IyMi/3Fy
-        cv/q6ur/7e7t/5CQkP8dHRz/UFBO/1FRT/9QUE7/TU1L8z8/PksAABVJAAAa8wAAHf8AAB7/AAAf/wAA
-        DP+Kion/+fn5//r6+v+pqan/BgYP/wAAHv8AAB7/AAAd/wAAGvMCAhdLBgZ0SQgIj/MJCZv/Cgqh/woK
-        qP8FBWj/LS0v/6mppv+0tLL/Pz8+/wQEUv8KCqf/Cgqi/wkJnP8JCZDzDQ14SwgIhEkLC6DzDAys/w0N
-        sf8ODrb/Dg6z/wcHZf8KCir/DAwo/wYGVv8NDa3/Dg63/w0Nsv8MDKz/Cwuh9BAQiEsKCo9JDQ2r8w8P
-        tP8PD7j/EBC7/xERv/8REcH/EBC0/xAQsv8REcD/ERHA/xAQu/8PD7j/Dw+0/w4Oq/QSEpJLDg6bSBER
-        tvISEr3/ExO//xQUwv8UFMT/FRXF/xUVx/8VFcj/FRXG/xQUxP8UFML/ExPA/xISvf8REbbzFBSeSh4e
-        qDMYGMHlFRXF/xYWx/8WFsj/FxfK/xcXy/8YGMv/GBjL/xcXy/8XF8r/FhbJ/xYWx/8VFcX/GBjB5h8f
-        qDQ5OZAGKSnIgh4ezfMaGs7+GhrO/hoazv4bG8/+GxvP/hsbz/4bG8/+GhrO/hoazv4aGs7+Hh7N9Ckp
-        yIM5OZEGSUnJAE9Pvgs+PtFPNTXUdTIy03YyMtN1MjLTdTIy03UyMtN1MjLTdTIy03UyMtN2NTXUdT4+
-        0U9PT74LSEjJAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAIABAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA
-        AAYAAAAGAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAPDw8QWlpaUoCAgImEhISVhISElYSE
-        hJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYGBgYlbW1tTEBAQEC8v
-        LwAAAAAANDQ0ABYWFhGQkJCOx8fH8NXV1f/X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY
-        2P/X19f/19fX/9fX1//X19f/19fX/9bW1v/IyMjwkZGRjxkZGRI2NjYA////AIuLi2HR0dH129vb/9zc
-        3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/97e3v/e3t7/3t7e/97e3v/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc
-        3P/b29v/0dHR9YyMjGP///8AAAAACL+/v6jc3Nz/3d7d/97f3v/f39//3+Df/+Dg4P/g4eD/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4OHg/+Dg4P/f4N//39/f/97f3v/d3t3/3Nzc/8DAwKkAAAAILy8vDc3N
-        zbve3t7/4ODg/+Dh4P/h4eH/4uLi/+Li4v/j4+P/4+Tj/+Tk5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eHh/+Dh4P/g4OD/3t7e/83Nzb03NzcOMDAwDc7Ozrzg4OD/4eLh/+Lj4v/j4+P/5OTk/+Xl
-        5f/l5uX/5ubm/+fn5//p6en/6enp/+fn5//m5ub/5ebl/+Xl5f/k5OT/4+Tj/+Pj4//i4uL/4ODg/87O
-        zr49PT0PMDAwDc/Pz7vi4uL/4+Tj/+Tl5P/l5eX/5ubm/+fn5//o6Oj/6+vr/+Lj4v/MzMz/yMjI/93e
-        3f/r6+v/6Ono/+fn5//m5+b/5ebl/+Xl5f/k5OT/4uLi/8/Pz748PDwPLy8vDdDR0Lvk5OT/5ubm/+fn
-        5//n6Of/6Ono/+nq6f/r6+v/r6+v/0ZGRv8YGBj/FBQU/zU1Nf+UlJT/5ubm/+rq6v/o6ej/6Ojo/+fn
-        5//m5ub/5OTk/9DR0L48PDwPLi4uDdPT07vo6Oj/6urq/+vr6//r7Ov/7O3s//Dw8P+srKz/FxcX/xAQ
-        EP9MTEz/VVVV/x0dHf8ICAj/hoaG/+3u7f/t7e3/7Ozs/+vr6//q6ur/6Ojo/9PT0747OzsPJiYmDbW1
-        tbvIycj/ysvK/8zMzP/Nzc3/zs/O/8fHx/86Ojr/ExMT/6Ghof/f39//4uLi/7y8vP8uLi7/Ghoa/7O0
-        s//Q0ND/zc3N/8zMzP/Ly8v/ycnJ/7W1tb4zMzMPBAQEDRYWFrsZGRn/Ghoa/xoaGv8bGxr/Gxsb/xgY
-        GP8AAAD/XF1c/+fn5//s7Oz/7e3t/+vr6/+MjIz/AgIC/xQUFP8bGxv/Gxsb/xoaGv8aGhr/GRkZ/xYW
-        Fr4KCgoPAAAADQAAALsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/cHBw/+/v7//19fX/9fb1//Ly
-        8v+hoaH/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAb4FBQUPAQEaDQQEXbsFBWj/BgZu/wYG
-        cf8GBnP/BgZ2/wYGcf8AABf/NjY1/9ra2v/3+Pf/+Pj4/+vr6/9eXl3/AAAH/wYGY/8HB3f/BgZ0/wYG
-        cf8GBm7/BQVo/wcHX74QECYPAgInDQgIjrsJCZ7/Cgqn/wsLq/8LC6//Cwuz/wwMuP8HB2T/AgIE/0tL
-        Sv+pqan/srKy/2ZmZv8JCQf/BARC/wsLsv8LC7T/Cwuw/wsLrP8KCqf/CQmf/wsLkL8YGDkPAgIqDQkJ
-        krsLC6L/DAyp/wwMrf8NDbD/DQ2z/w4Ot/8NDbP/Bwdb/wEBC/8FBQP/BwcF/wEBBf8FBUH/DQ2m/w4O
-        uf8NDbT/DQ2x/wwMrv8MDKr/Cgqi/w0NlL8YGDwPAwMsDQoKmrsMDKj/DQ2v/w4Osv8ODrT/Dw+3/w8P
-        uv8PD73/EBC9/w0Nmf8KCm//CQlp/wwMjv8QELj/EBC+/w8Puv8PD7j/Dg61/w4Osv8NDa//DAyo/w4O
-        m78ZGj8PAwMvDQwMorsODq//Dw+1/w8Pt/8QELn/EBC7/xERvv8REcD/ERHB/xISxf8SEsf/EhLH/xIS
-        xf8REcL/ERHA/xERvv8QELz/EBC6/w8PuP8PD7X/DQ2v/xAQo78bG0IPBAQyDQ4OqrsQELf/EhK7/xIS
-        vf8TE7//ExPA/xMTwv8UFMP/FBTE/xQUxf8VFcb/FRXG/xUVxf8UFMX/FBTD/xQUwv8TE8D/ExO//xIS
-        vf8SErv/EBC3/xISrL8cHEYPDAwzCxUVs7cTE73/FBTB/xUVw/8VFcP/FhbF/xYWxv8WFsf/FxfI/xcX
-        yP8XF8n/FxfJ/xcXyf8XF8j/FhbH/xYWxv8WFsX/FRXE/xUVw/8UFMH/ExO9/xYWtLkWFj0MCQkAAiIi
-        uo0WFsT/FRXG/xYWyP8WFsn/FxfK/xcXyv8XF8v/GBjM/xgYzP8YGM3/GBjN/xgYzP8YGMz/GBjL/xcX
-        y/8XF8r/FhbJ/xYWyP8VFcb/FhbE/yIiu48LCwACPDzgADU1tDAmJsvXFxfK/xYWy/8XF8z/FxfM/xcX
-        zf8XF83/FxfO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfN/xcXzf8XF8z/FxfM/xYWy/8XF8r/JSXL2DU1
-        tDE8POIAQUFyAAAA/wBDQ8U7NDTSsioq0+QlJdLpJCTR6SQk0ekkJNHpJCTS6SQk0ukkJNLpJCTS6SQk
-        0ukkJNLpJCTS6SQk0ekkJNHpJSXS6Skp0+Q0NNKzQ0PGPAAA/wA+PnMAAAAAAJSUVQA3N/8AZ2e4DVpa
-        0ytQUNQyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyUFDUMlpa
-        0ytmZrkNMzP/AI+PXQAAAAAA8AAPAMAAAwCAAAEAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAMAAAwDgAAcAKAAAACAA
-        AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
-        AA4JCQksFRUVPxYWFkIWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYW
-        FkEWFhZBFhYWQRYWFkEWFhZBFhYWQhUVFT8JCQksAAAADgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAMhISEzdHR0kqamptC1tbXitbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1
-        teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW14qenp9B1dXWTIiIiNAAAAAMAAAAAAAAAAAAA
-        AAAAAAAAMTExN6Kior/U1NT82tra/9ra2v/a2tr/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9TU1Pyjo6PAMzMzOAAA
-        AAAAAAAAGhoaAAAAABOenp6l2NjY/tra2v/b29v/3Nvc/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zb3P/b29v/2tra/9jY
-        2P+goKCmAAAAFB0dHQDDw8MAY2NjP87Ozujb29v/3Nzc/93e3f/e3t7/3t7e/97f3v/f39//39/f/9/g
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/f39//39/f/9/f3//e3t7/3t7e/93e
-        3f/c3Nz/29vb/8/Pz+lmZmZAysrKAP///wCcnJxg29vb+9zc3P/e3t7/39/f/9/f3//g4OD/4ODg/+Dh
-        4P/h4eH/4eLh/+Li4v/i4uL/4uLi/+Lj4v/i4+L/4uLi/+Li4v/i4uL/4eLh/+Hh4f/h4eH/4ODg/+Dg
-        4P/f39//39/f/97e3v/c3Nz/29vb+52dnWL///8A////AKenp2jc3dz+3t7e/+Dg4P/g4eD/4eHh/+Hi
-        4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OXk/+Tl5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eLh/+Hh4f/g4eD/4ODg/97e3v/c3Nz+p6ena////wD///8Ap6enaN7e3v7f4N//4eHh/+Li
-        4v/i4+L/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5+b/5ufm/+bm5v/m5ub/5ubm/+Xm
-        5f/l5eX/5OXk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/3+Df/93e3f6oqKhs////AP///wCnp6do39/f/uDh
-        4P/i4+L/4+Tj/+Tk5P/k5eT/5eXl/+bm5v/m5+b/5+fn/+fo5//o6ej/6+zr/+3t7f/t7e3/7Ozs/+nq
-        6f/n6Of/5+fn/+bn5v/m5ub/5ebl/+Xl5f/k5OT/5OTk/+Pj4//g4eD/3t/e/qmpqWz///8A////AKeo
-        p2jg4OD+4uLi/+Tl5P/l5eX/5ubm/+bm5v/n5+f/5+jn/+jo6P/p6en/7Ozs/+Dg4P+1tbX/j4+P/4iI
-        iP+np6f/1dXV/+zs7P/p6un/6Ojo/+jo6P/n5+f/5ufm/+bm5v/l5eX/5OXk/+Li4v/g4OD+qampbP//
-        /wD///8AqKioaOHi4f7k5OT/5ubm/+bn5v/n5+f/6Ojo/+jp6P/p6en/6urq/+3t7f+3t7f/Q0ND/wsL
-        C/8AAAD/AAAA/wUFBf8qKir/kpKS/+fo5//r6+v/6erp/+np6f/o6Oj/5+jn/+fn5//m5ub/5OTk/+Hi
-        4f6qqqps////AP///wCoqKho4+Pj/uXl5f/n5+f/6Ojo/+np6f/p6un/6urq/+vr6//u7+7/tLS0/x8f
-        H/8AAAD/CwsL/y8vL/83Nzf/FRUV/wAAAP8JCQn/g4OD/+zs7P/r6+v/6urq/+nq6f/p6en/6Ojo/+fo
-        5//l5uX/4+Pj/qqqqmz///8A////AKqqqmjo6Oj+6+zr/+3t7f/u7u7/7u/u/+/v7//w8PD/8vLy/+Dg
-        4P87Ozv/AAAA/ykpKf+ioqL/09PT/9fX1/+6urr/T09P/wAAAP8UFBT/ubm5//T09P/w8PD/7/Dv/+/v
-        7//u7u7/7e3t/+vs6//o6Oj+rKysbP///wD+/v4AZWVlaIuLi/6Oj47/kZGR/5KSkv+Tk5P/lJSU/5SV
-        lP+YmJj/cHBw/wUFBf8QEBD/q6ur/+Xl5f/l5eX/5ubm/+Pk4//R0tH/NjY2/wAAAP9KSkr/l5eX/5WV
-        lf+UlJT/k5OT/5KSkv+RkZH/j4+P/4uLi/5nZ2dt////AAAAAAAAAABoAAAA/gAAAP8AAAD/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8AAAD/AAAA/0FBQf/g4OD/6urq/+7u7v/u7u7/7O3s/+jo6P+BgYH/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/gICAm0AAAAAAAAAAAAAAGgAAAD+AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/UlJS/+fo5//w8fD/9PX0//T09P/09PT/7O3s/5WV
-        lf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AgICbQAAAAAEBFUAAQEiaAIC
-        LP4CAi7/AgIw/wMDMf8DAzH/AwMy/wMDM/8DAzX/AgIk/wAAAP8uLi7/3Nzc//Dw8P/4+fj/+fr5//Ly
-        8v/u7u7/Z2dn/wAAAP8BARb/AwM0/wMDM/8DAzL/AwMy/wMDMf8CAjD/AgIu/wICLP4GBiVtAwNYAA0N
-        /wAFBXFoBweS/ggImf8ICKD/CQmk/wkJpv8JCan/CQms/woKsf8JCZb/AQET/wMDAv98fHz/7O3s//P0
-        8//09PT/8vPy/6+vr/8WFhb/AAAA/wYGbv8KCrP/CQmt/wkJqv8JCaf/CQmk/wgIof8ICJr/CAiS/g8P
-        dm0KCv8AEBD/AAYGdGgICJb+CQmd/woKpP8LC6f/Cwuq/wsLrf8LC7D/DAyy/wwMtv8GBl3/AAAB/woK
-        Cf9ZWVn/o6Oj/6ysrP93d3f/Ghoa/wAAAP8EBDL/Cwur/wwMtP8MDLD/Cwut/wsLq/8LC6j/Cgqk/wkJ
-        nf8JCZb+EBB5bQ4O/wASEv8ABwd5aAoKm/4LC6L/Cwuo/wwMq/8MDK7/DAyw/w0Ns/8NDbX/DQ24/w0N
-        sv8HB1P/AQEG/wAAAP8DAwL/BAQC/wAAAP8AAAH/BAQw/wwMnv8NDbr/DQ22/w0Ns/8MDLH/DAyu/wwM
-        rP8MDKn/Cgqi/woKnP4REX9tEBD/ABQU/wAICH5oCwuh/gwMpv8MDKz/DQ2v/w4Osf8NDbP/Dg61/w8P
-        uP8ODrr/Dw+9/w8Puv8LC4P/BgZA/wMDHv8CAhr/BAQy/wkJa/8PD6//Dw++/w4Ouv8PD7j/Dg62/w4O
-        tP8NDbH/DQ2v/w0Nrf8MDKf/Cwuh/hIShG0SEv8AFxf/AAkJg2gMDKf+DQ2r/w4Osf8ODrP/Dw+1/w8P
-        tv8PD7j/EBC6/xAQvP8QEL7/ERHA/xERxP8REcD/EBCz/xAQsf8REbz/ERHE/xERwf8QEL7/EBC8/xAQ
-        u/8PD7n/Dw+3/w8Ptf8PD7P/Dg6x/w0Nq/8NDaf+FBSIbRQU/wAZGf8ACgqJaA0Nrf4ODrD/Dw+1/w8P
-        t/8QELn/EBC6/xAQvP8QEL3/ERG//xERwP8REcH/EhLC/xISw/8SEsT/EhLF/xISw/8SEsL/ERHC/xER
-        wf8REb//ERG+/xAQvP8QELv/EBC5/w8PuP8PD7X/Dg6x/w4Orf4VFY5tFhb/ABwc/wALC45oDw+z/hAQ
-        tv8REbr/ERG8/xISvf8SEr7/EhK//xMTwf8TE8L/ExPD/xMTxP8UFMX/FBTF/xQUxv8UFMb/FBTF/xQU
-        xf8TE8T/ExPD/xMTwv8TE8H/EhLA/xISvv8SEr3/ERG8/xERuv8QELb/EBC0/hcXlG0aGv8AIiL/AA4O
-        lWcREbn9ExO7/xQUv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xYWxf8WFsb/FhbG/xYWx/8WFsf/FxfI/xcX
-        yP8XF8f/FhbH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FRXC/xQUwf8UFMD/FBS//xMTu/8SErn+FhaZaiAg
-        /wAzM/8AHR2dWRYWwPoTE7//FRXD/xUVxf8VFcX/FRXG/xYWxv8WFsf/FhbI/xcXyf8XF8n/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcXyf8WFsj/FhbH/xYWx/8VFcb/FRXF/xUVxf8VFcP/ExO//xYW
-        v/ocHJ1aMjL/ADU1wAApKY0sISHG3xQUw/8WFsf/FhbJ/xcXyf8XF8r/FxfK/xcXy/8YGMv/GBjM/xgY
-        zP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGMz/GBjM/xgYy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xYW
-        x/8UFMP/ISHG4Coqjy41NcIAHx9GABkZAAQ0NMSCHh7M/BQUyP8WFsv/FxfM/xcXzP8XF8z/FxfN/xcX
-        zf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfN/xcXzf8XF8z/FxfM/xcX
-        zP8WFsv/FBTI/x4ezPw0NMSEHR0ABSEhSwAAAAAASUm3AENDkRM+Ps6UKCjS9Rsbzv8ZGc3/GRnN/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc3/GRnN/xsbzv8oKNL1PT3OlkJClBNISLkAAAAAAAAAAAAAAAAAWFi1AFVVlwtQUMtSRUXXnjw8
-        2bk2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY2
-        1rs2Nta7NjbWuzY21rs8PNm5RUXXn09PzFNVVZgMV1e2AAAAAAAAAAAAAAAAAAAAAAAAAAAA1NQAAFNT
-        /wCUlIYEgoKoCX19rQp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8
-        rAp8fKwKfHysCnx8rAp8fKwKfX2tCoKCqAmTk4YETU3/AMrKAAAAAAAAAAAAAAAAAAD/////4AAAB8AA
-        AAPAAAADgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
-        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPgAAAH+AAAHygA
-        AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAJAAAAEAAAABRAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFEAAABAAAAAJAAAAAwAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAACMbGxtiXl5eopGRkcqlpaXapqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qWlpdqSkpLLX19fox0d
-        HWMAAAAkAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAMVJSUpCzs7Pg19fX/Nzc
-        3P/b29v/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb
-        2//c3Nz/2NjY/LW1teFUVFSRAAAAMQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAnaWlpl8zM
-        zPHb29v/19fX/9fX1//Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9jY2P/X19f/19fX/9vb2//Ozs7xbW1tmAAAACgAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AA9TU1N0y8vL7dra2v/Y2Nj/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/2tra/9jY2P/a2tr/zMzM7lZWVnYAAAAQAAAAAAAA
-        AAAAAAAAAAAAAA4ODjGwsLDF3d3d/9nZ2f/b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/d3d3/3d3d/97e
-        3v/e3t7/3t7e/97e3v/e3t7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/e
-        3//e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9vb2//Z2dn/3d3d/7Ky
-        sscQEBAyAAAAAAAAAAAAAAAAAAAAA1paWl3V1dXv2tra/9vb2//c3dz/3d7d/97e3v/e3t7/3t7e/97f
-        3v/f39//39/f/9/f3//f4N//4ODg/+Dg4P/g4OD/4ODg/+Dh4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4eD/4OHg/+Dg4P/g4OD/4ODg/9/g3//f39//39/f/9/f3//e397/3t7e/97e3v/e3t7/3d7d/9zd
-        3P/b29v/2tra/9bW1vBeXl5fAAAAAwAAAAAAAAAAAAAABpSUlIHf39/92tra/9zd3P/e3t7/39/f/9/f
-        3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4uH/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Hh4f/g4eD/4ODg/+Dg4P/g4OD/3+Df/9/f
-        3//f39//39/f/97e3v/c3dz/2tra/9/f3/2WlpaCAAAABgAAAAAAAAAAAAAAB6mpqY3g4OD/29zb/93e
-        3f/f39//3+Df/9/g3//g4OD/4OHg/+Dh4P/h4eH/4eHh/+Hi4f/i4uL/4uLi/+Lj4v/i4+L/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pk4//j5OP/4+Tj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uLi/+Li4v/h4uH/4eLh/+Hh
-        4f/g4eD/4OHg/+Dg4P/f4N//3+Df/9/f3//e3t7/29zb/9/f3/+oqaiQAAAABwEBAQAAAAAAAAAAB6io
-        qJDf4N//3d3d/9/f3//g4OD/4OHg/+Dh4P/h4eH/4eLh/+Hi4f/i4uL/4uPi/+Lj4v/j4+P/4+Tj/+Tk
-        5P/k5OT/5OTk/+Tl5P/k5eT/5OXk/+Xl5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tk5P/k5OT/4+Tj/+Pj
-        4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4eH/4OHg/+Dg4P/f39//3d3d/9/f3/+qqqqVAAAACAMD
-        AwAAAAAAAAAAB6ipqJDh4eH/3t7e/+Dg4P/h4eH/4eLh/+Li4v/i4+L/4uPi/+Pj4//j5OP/4+Tj/+Tk
-        5P/k5eT/5eXl/+Xl5f/l5uX/5ebl/+bm5v/m5ub/5ubm/+bm5v/m5+b/5ubm/+bm5v/m5ub/5ebl/+Xm
-        5f/l5uX/5eXl/+Tl5P/k5OT/5OTk/+Pk4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hh4f/g4OD/3t7e/+Dg
-        4P+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDh4eH/39/f/+Dh4P/i4uL/4uPi/+Pj4//j4+P/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/m5+b/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tl5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Li
-        4v/g4eD/39/f/+Hh4f+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDi4uL/3+Df/+Hh4f/i4+L/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/n5+f/5+fn/+fo5//o6Oj/6Ojo/+jo6P/o6ej/6urq/+zs
-        7P/s7Oz/6+vr/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Pj4//h4eH/3+Df/+Li4v+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDj4+P/4eHh/+Lj
-        4v/k5OT/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5+b/5+fn/+fo5//o6Oj/6Ojo/+np6f/p6en/6urq/+7u
-        7v/o6ej/1dXV/8DBwP+6urr/y8vL/+Dg4P/u7u7/7Ozs/+np6f/p6en/6Ono/+jo6P/o6Oj/5+fn/+fn
-        5//m5ub/5ubm/+Xm5f/l5eX/5eXl/+Tk5P/i4+L/4eHh/+Pj4/+rq6uVAAAACAMDAwAAAAAAAAAAB6mp
-        qZDk5OT/4uLi/+Pk4//l5eX/5ubm/+bm5v/m5+b/5+fn/+fn5//o6Oj/6Ojo/+jp6P/p6en/6erp/+nq
-        6f/t7u3/4uPi/52dnf9QUFD/IyMj/xISEv8NDQ3/Ghoa/zY2Nv92dnb/x8fH/+7u7v/q6+r/6erp/+np
-        6f/p6en/6Ojo/+jo6P/n6Of/5+fn/+bn5v/m5ub/5ubm/+Xl5f/k5OT/4uLi/+Tk5P+srKyVAAAACAMD
-        AwAAAAAAAAAAB6qqqpDl5eX/4uPi/+Tl5P/m5ub/5ufm/+fn5//n6Of/6Ojo/+jp6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+/v7//Jycn/S0tL/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Hh4e/5KS
-        kv/q6ur/6+zr/+rr6v/q6ur/6erp/+np6f/o6ej/6Ojo/+fo5//n5+f/5ufm/+bm5v/l5eX/4+Pj/+Tl
-        5P+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDm5ub/4+Tj/+Xm5f/n5+f/5+jn/+jo6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+rr6v/r6+v/7+/v/8bGxv8wMDD/AAAA/wAAAP8AAAD/AQEB/wcHB/8JCQn/AwMD/wAA
-        AP8AAAD/AAAA/wsLC/+CgoL/7Ozs/+zs7P/r6+v/6uvq/+rq6v/p6un/6enp/+jp6P/o6Oj/5+jn/+fn
-        5//m5ub/5OTk/+Xm5f+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDn5+f/5OXk/+bn5v/o6Oj/6Ono/+np
-        6f/p6un/6urq/+rr6v/r6+v/6+vr/+vs6//u7u7/39/f/0NDQ/8AAAD/AAAA/wAAAP8lJSX/c3Nz/6io
-        qP+ysrL/kZGR/0pKSv8JCQn/AAAA/wAAAP8NDQ3/o6Oj//Dx8P/s7Oz/6+zr/+vr6//q6+r/6urq/+nq
-        6f/p6en/6Ono/+jo6P/n5+f/5eXl/+bm5v+srKyVAAAACAMDAwAAAAAAAAAAB6urq5Dq6ur/6Ono/+rr
-        6v/r7Ov/7Ozs/+3t7f/t7e3/7e7t/+7u7v/u7u7/7+/v/+/v7//09PT/jIyM/wMDA/8AAAD/AAAA/0hI
-        SP/IyMj/5ubm/+Dg4P/f39//4+Pj/+Dg4P+NjY3/EhIS/wAAAP8AAAD/NDQ0/97e3v/x8fH/7+/v/+7v
-        7v/u7u7/7u7u/+3t7f/t7e3/7Ozs/+vs6//r6+v/6enp/+rq6v+tra2VAAAACAMDAwAAAAAAAAAAB4yM
-        jJDCw8L/w8PD/8XGxf/Hx8f/yMjI/8nJyf/Jycn/ysrK/8vLy//Ly8v/zMzM/83Nzf/Dw8P/MzMz/wAA
-        AP8AAAD/Ly8v/8/Pz//i4+L/29vb/+Pj4//l5eX/39/f/9vc2//o6Oj/gYGB/wMDA/8AAAD/BQUF/4yM
-        jP/Q0ND/zMzM/8zMzP/Ly8v/ysrK/8nKyf/Jycn/yMjI/8fHx//Gxsb/w8PD/8LCwv+Ojo6WAAAACAMD
-        AwAAAAAAAAAABw8PD5AUFBT/FRUV/xYWFv8XFxf/GBgY/xgYGP8YGBj/GRkZ/xkZGf8ZGRn/Ghoa/xoa
-        Gv8XFxf/AwMD/wAAAP8DAwP/kZGR/+nq6f/e3t7/7Ozs/+zs7P/r6+v/7e3t/+Xm5f/g4OD/2dnZ/y0s
-        Lf8AAAD/AAAA/w4ODv8bGxv/Ghoa/xoaGv8ZGRn/GRkZ/xgYGP8YGBj/GBgY/xcXF/8WFhb/FRUV/xQU
-        FP8RERGWAAAACAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/xcXF/+Tk5P/q6ur/7/Dv/+7u7v/u7+7/7u7u//Dw
-        8P/g4eD/6+vr/2FhYf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8CAgKWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8dHR3/0dHR/+Xl5f/w8PD/8/Tz//Pz
-        8//z8/P/8/Pz//T09P/l5eX/7u7u/3h4eP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/xcXF/+vr
-        6//u7u7/+Pn4//f39//39/f/9/j3//f39//m5ub/8PDw/1tbW/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwIC
-        L5ADAzz/AwM8/wMDP/8DA0H/AwNC/wQEQv8EBEP/BARE/wQERf8EBEX/BARG/wQER/8EBED/AQEL/wAA
-        AP8BAQH/iIiI//X19f/o6Oj/9fX1//v7+//7/Pv/+fr5/+3t7f/t7u3/2NjY/yYmJv8AAAD/AAAA/wIC
-        KP8EBEj/BARG/wQERv8EBEX/BARE/wQEQ/8EBEP/BARC/wMDQf8DAz//AwM9/wMDPP8HBzKWCAgACAIC
-        AgAAAAAAAAAABwUFeJAHB5f/Bwea/wgIoP8ICKT/CQmn/wkJqv8JCav/CQmt/wkJr/8JCbH/Cgqz/woK
-        tv8KCrX/AwM7/wAAAP8AAAD/JiYm/83Nzf/29vb/6urq/+3t7f/u7+7/6uvq/+7v7v/y8vL/cXFx/wEB
-        Af8AAAD/AQEK/wgIjf8KCrn/Cgq0/wkJsv8JCbD/CQmu/wkJrP8JCar/CQmo/wgIpf8ICKH/Bwea/wcH
-        mP8QEH2XEREACAQEBAAAAAAAAAAABwYGdJAHB5P/CAiV/wgInP8JCaD/CQmk/woKpf8KCqf/Cgqp/woK
-        q/8KCq3/Cgqv/wsLsf8LC7j/CAiE/wEBCf8AAAD/AAAA/zk5Of+/v7//9fX1//f39//29/b/9/j3/+Tl
-        5P95eXn/CQkJ/wAAAP8AAAD/BAQ9/wsLs/8LC7L/Cgqw/woKrv8KCqz/Cgqq/woKqP8KCqb/CQmk/wkJ
-        of8ICJz/CAiW/wgIlP8REXqXEhIACAQEBAAAAAAAAAAABwcHeJAJCZf/CQmZ/woKn/8KCqT/Cwun/wsL
-        qP8LC6r/Cwus/wsLrv8MDLD/DAyx/wwMs/8MDLX/DQ24/wYGT/8AAAD/AAAA/wAAAP8XFxf/XFxc/4+P
-        j/+Wlpb/enp6/zQ0NP8FBQX/AAAA/wAAAP8CAhj/CwuY/w0Nuf8MDLT/DAyy/wwMsP8LC67/Cwut/wsL
-        q/8LC6n/Cwun/wsLpf8KCqD/CQma/wkJmP8SEn6XEREACAQEBAAAAAAAAAAABwcHfJAJCZv/Cgqd/woK
-        o/8LC6f/DAyq/wwMq/8MDK3/DAyu/wwMsP8NDbL/DQ2z/w0Ntf8NDbf/DQ26/w0Nsf8FBUX/AAAC/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICGf8LC4b/Dg69/w0Nt/8NDbb/DQ20/w0N
-        sv8MDLH/DAyv/wwMrf8MDKz/DAyq/wsLp/8KCqP/Cgqd/woKnP8TE4GXEREACAQEBAAAAAAAAAAABwgI
-        f5AKCp//Cwug/wsLpf8MDKr/DAys/w0Nrf8NDa//DQ2w/w0Nsv8NDbT/Dg61/w4Ot/8ODrj/Dg66/w8P
-        vf8PD7f/CAhi/wICE/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAT/BAQ0/w0NmP8PD8D/Dg66/w4O
-        uf8ODrf/Dg62/w4OtP8NDbP/DQ2x/w0Nr/8NDa7/DQ2s/wwMqv8LC6b/Cwug/woKoP8TE4WXEREACAQE
-        BAAAAAAAAAAABwgIgpALC6P/DAyj/wwMqP8NDaz/DQ2v/w4OsP8ODrH/Dg6y/w4OtP8ODrX/Dw+3/w8P
-        uP8PD7r/Dw+7/w8PvP8QEL7/EBDB/w4Oov8JCWL/BQU3/wICGv8CAhj/AwMn/wcHTP8LC4T/EBC4/xAQ
-        wf8PD7z/Dw+7/w8Puv8PD7n/Dw+3/w4Otv8ODrX/Dg6z/w4Osv8ODrD/DQ2v/w0Nrf8MDKn/DAyj/wsL
-        o/8UFIiXEREACAQEBAAAAAAAAAAABwkJhpAMDKf/DAyn/w0NrP8NDa//Dg6x/w4Osv8PD7T/Dw+1/w8P
-        tv8PD7f/Dw+5/xAQuv8QELv/EBC8/xAQvf8QEL7/ERG//xERw/8REcb/ERG//xAQtP8QELP/EBC5/xER
-        xP8REcX/ERHB/xERv/8QEL7/EBC9/xAQvP8QELr/EBC5/w8PuP8PD7f/Dw+1/w8PtP8PD7P/Dg6y/w0N
-        sP8NDaz/DAyn/wwMp/8VFYuXEBEACAQEBAAAAAAAAAAABwoKipAMDKz/DQ2r/w4Or/8ODrP/Dw+0/w8P
-        tv8QELf/EBC4/xAQuf8QELr/EBC7/xERvP8REb3/ERG+/xERv/8REcD/EhLB/xISwv8REcL/EhLD/xIS
-        xP8SEsT/EhLD/xISwv8SEsL/EhLB/xERwP8REcD/ERG//xERvv8REb3/EBC7/xAQuv8QELn/EBC4/xAQ
-        t/8PD7b/Dw+1/w4Os/8ODrD/DQ2r/w0NrP8WFo+XEBEACAQEBAAAAAAAAAAABwoKjZANDbD/DQ2u/w4O
-        sv8PD7X/Dw+3/w8PuP8QELn/EBC6/xAQu/8QELz/EBC9/xERvv8REb//ERHA/xERwf8REcH/ERHC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLD/xISw/8SEsP/ERHC/xERwv8REcH/ERHA/xERv/8REb7/EBC9/xAQ
-        vP8QELv/EBC6/xAQuf8PD7j/Dw+3/w8Ptv8ODrL/DQ2u/w0NsP8XF5OXEREACAQEBAAAAAAAAAAABwsL
-        kZAODrX/Dw+z/xAQtv8QELn/EBC7/xAQu/8REbz/ERG9/xERvv8REb//ERG//xISwf8SEsH/EhLC/xIS
-        w/8SEsP/ExPE/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPE/xISxP8SEsP/EhLC/xIS
-        wf8SEsH/ERHA/xERv/8REb7/ERG9/xERvf8QELz/EBC7/xAQuf8QELb/Dw+z/w4Otf8YGJeXEREACAQE
-        BAAAAAAAAAAABw0NlI8QELj/ERG2/xISuf8TE7z/ExO9/xMTvv8UFL//FBS//xQUwP8UFMH/FBTB/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbF/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8VFcX/FRXE/xUVw/8VFcP/FBTC/xQUwf8UFMD/FBTA/xQUv/8TE77/ExO+/xMTvP8SErn/ERG2/xER
-        uP8aGpuXEBAACAUFBQAAAAAAAAAABg8Pmo0SErz/EhK5/xMTvf8UFL//FBTA/xQUwf8UFMH/FBTC/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbG/xYWxv8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbH/xYWx/8WFsb/FhbG/xUVxf8VFcX/FRXE/xUVw/8VFcP/FRXC/xQUwf8UFMH/FBTB/xQU
-        v/8TE73/EhK5/xISvP8XF56SBQUABwMDAwAAAAAAAAAAAxwcn4MXF8L/EhK8/xQUwP8UFML/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbI/xYWyP8XF8n/FxfJ/xcXyf8XF8r/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8n/FxfJ/xcXyf8WFsj/FhbI/xYWx/8WFsf/FhbG/xYWxv8VFcX/FRXF/xUV
-        xP8VFcT/FRXE/xQUwv8UFMD/EhK8/xYWwv8aGp+EAAAABAAAAAAAAAAAAAAAACkpk18eHsn3ExO//xQU
-        wv8VFcX/FhbG/xYWx/8WFsf/FhbH/xYWyP8WFsj/FxfJ/xcXyf8XF8n/FxfK/xcXyv8XF8v/GBjL/xgY
-        y/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYy/8YGMv/GBjL/xcXy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xcX
-        yP8WFsj/FhbH/xYWx/8WFsf/FhbG/xUVxf8UFML/ExO+/x4eyfgpKZViAAAAAAAAAAAAAAAAenr/ACMj
-        XycsLMvSFRXE/xQUxP8VFcf/FhbJ/xcXyf8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8YGMz/GBjM/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
-        zP8YGMz/FxfL/xcXy/8XF8r/FxfK/xcXyv8XF8n/FhbJ/xUVx/8UFMT/FRXE/ywsy9QkJGQpeXn/AAAA
-        AAAAAAAADQ0IAAAAAAU5Obh1JyfT+RMTxf8VFcj/FhbK/xYWy/8WFsv/FxfM/xcXzP8XF8z/FxfM/xcX
-        zP8XF83/FxfN/xcXzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8XF83/FxfN/xcXzf8XF83/FxfM/xcXzP8XF8z/FxfM/xYWy/8WFsv/FhbK/xUVyP8TE8X/JibS+jo6
-        uXkAAAAGERERAAAAAAAAAAAAAAAAAO3t/wAxMV8XQ0PNoicn0/0VFcn/FhbK/xcXzP8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GRnO/xkZz/8ZGc//GRnO/xkZzv8ZGc7/GRnO/xkZ
-        z/8ZGc//GRnO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8XF8z/FhbK/xUV
-        yf8nJ9P+QkLOpDExYxj8/P8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AQkKEHE1N0Zg1Ndr0Hx/P/xgY
-        zP8XF8z/FxfM/xcXzP8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcX
-        zv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfM/xcX
-        zP8YGMz/Hx/P/zU12fRNTdGaQ0OIHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3fSAERE
-        bQ5ZWcRXUVHasURE3uI6Ot7xMjLZ8zAw2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMwMNjzMjLY8zo63/FDQ97jUFDasllZxVlDQ24PdnbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAC0tHAAEBAAAUVFkDGhotylnZ8o4ZGTNOmNjzTtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7ZGTNOmdnyzhoaLgqUFBmDAcHAAAqKh0AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAD///////8AAP8AAAAA/wAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAAAAAD
-        AADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAA
-        AAAABwAA8AAAAAAPAAD4AAAAAB8AAP4AAAAAfwAA////////AAAoAAAAgAAAAAABAAABACAAAAAAAAAA
-        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAAEQAAABYAAAAWAAAAGAAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGAAAABcAAAAWAAAAEQAA
-        AAwAAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJQAA
-        ADAAAAA4AAAAQAAAAEYAAABHAAAASAAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEgAAABHAAAARgAAAEAAAAA4AAAAMAAAACUAAAAZAAAAEQAAAAgAAAADAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAADAAAACQAAABQAAAAjAAAANAAAAEUAAABWAAAAZQAAAHIAAAB6AAAAgAAAAIMAAACEAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhAAAAIMAAACAAAAAegAA
-        AHIAAABlAAAAVwAAAEYAAAA1AAAAJAAAABQAAAAKAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABIAAAAjAAAAOAAAAFEAAABpAAAAfgAA
-        AI8AAACcAAAApQAAAKsAAACwAAAAswAAALMAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAswAAALAAAACsAAAApQAAAJwAAACQAAAAfwAAAGoAAABSAAAAOQAA
-        ACMAAAASAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
-        AAwAAAAaAAAAMgAAAFAAAABtAAAAiAAAAJwMDAyyWFhY0pWVleHY2Njz3Nzc8/7+/v7/////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////////////////////9zc
-        3PPc3Nzzmpqa41paWtIQEBCzAAAAngAAAIgAAABtAAAAUAAAADMAAAAbAAAADAAAAAMAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAIwAAAEAAAABiAAAAgwAAAJ43NzfAqKio5v39
-        /fz//////////+7u7v/s7Oz/1tbW/9XV1f/V1dX/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/V1dX/7Ozs/+zs7P////////////39/fyxsbHoPT09xAAA
-        AJ4AAACEAAAAYwAAAEAAAAAjAAAADwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEAAA
-        ACYAAABJAAAAbwAAAJIqKiq6t7e36v//////////2tra/9PT0//T09P/1NTU/9TU1P/U1NT/1NTU/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1NTU/9TU
-        1P/U1NT/1NTU/9PT0//T09P/2tra////////////vr6+7i4uLrwAAACUAAAAcQAAAEoAAAAnAAAAEQAA
-        AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAA8AAAAnAAAATAAAAHcAAACcdXV11P39/f3/////1NTU/9TU
-        1P/V1dX/1dXV/9bW1v/W1tb/1tbW/9bW1v/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9bW1v/W1tb/1tbW/9XV1f/V1dX/1NTU/9TU
-        1P///////v7+/n19fdcAAACcAAAAdwAAAE0AAAAnAAAAEAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAANAAAAJQAA
-        AEsAAAB4BAQEn6KiouD/////6urq/9TU1P/V1dX/1dXV/9bW1v/W1tb/19fX/9fX1//X19f/19fX/9fX
-        1//Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9fX
-        1//X19f/19fX/9fX1//X19f/1tbW/9bW1v/V1dX/1dXV/9TU1P/l5eX//////66uruUKCgqhAAAAeQAA
-        AEwAAAAmAAAADQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAB4AAABFAAAAcxcXF6TT09Pv/////9fX1//V1dX/1dXV/9bW
-        1v/W1tb/19fX/9fX1//X19f/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9bW
-        1v/W1tb/1dXV/9XV1f/U1NT//////9fX1+4eHh6nAAAAdAAAAEYAAAAfAAAACgAAAAEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAXAAAAOQAA
-        AGkEBASYzMzM7P/////U1NT/1dXV/9XV1f/W1tb/19fX/9fX1//Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2NjY/9jY2P/Y2Nj/19fX/9fX1//W1tb/1dXV/9XV1f/U1NT//////9fX
-        1+4KCgqaAAAAawAAADkAAAAXAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAACAAAADgAAACoAAABZAAAAjKWlpd3/////1dXV/9bW1v/X19f/19fX/9jY
-        2P/Z2dn/2dnZ/9ra2v/a2tr/2tra/9ra2v/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra
-        2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/V1dX//////6+vr+EAAACNAAAAWwAAACsAAAAOAAAAAgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAbAAAARAAA
-        AHl3d3fM/////9jY2P/W1tb/19fX/9jY2P/Y2Nj/2dnZ/9nZ2f/a2tr/2tra/9ra2v/b29v/29vb/9vb
-        2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/29vb/9vb2//b29v/29vb/9vb2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/Y2Nj/19fX/9bW
-        1v/V1dX//////39/f9EAAAB6AAAARgAAABwAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAADgAAAC4AAABfKSkpof39/fzs7Oz/1tbW/9fX1//X19f/2NjY/9nZ
-        2f/Z2dn/2tra/9ra2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9vb
-        2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/o6Oj//f39/TQ0NKkAAABiAAAALwAA
-        AA4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAYAAAAQgAA
-        AHq2trbh/////9bW1v/W1tb/19fX/9jY2P/Z2dn/2dnZ/9ra2v/a2tr/29vb/9vb2//c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/9jY
-        2P/X19f/1tbW/9bW1v//////w8PD5wAAAHsAAABDAAAAGQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAACYAAABWNzc3ov7+/v7Z2dn/19fX/9jY2P/Z2dn/2tra/9ra
-        2v/b29v/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb2//a2tr/2tra/9nZ2f/Y2Nj/19fX/9bW1v//////Pj4+pwAA
-        AFgAAAAnAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAANAAA
-        AGqpqanY/////9fX1//Y2Nj/2dnZ/9nZ2f/a2tr/29vb/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb
-        2//a2tr/2dnZ/9nZ2f/Y2Nj/19fX//////+xsbHcAAAAawAAADUAAAARAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABBBgYGfvv7+/nh4eH/19fX/9jY2P/Z2dn/2tra/9vb
-        2//b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/93d3f/d3d3/3d3d/9zc3P/c3Nz/29vb/9vb2//a2tr/2dnZ/9jY2P/X19f/4ODg//z8
-        /PgSEhKCAAAAQgAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAA
-        AE5XWVep/////9fY1//Y2dj/2drZ/9nb2f/a29r/29zb/9zd3P/c3dz/3d7d/93e3f/d3t3/3t/e/97f
-        3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3+Df/9/g3//f4N//3+Df/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g
-        3//e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/93e3f/d3t3/3d7d/9zd
-        3P/c3dz/29zb/9rb2v/Z29n/2drZ/9jZ2P/X2Nf//////2RkZLEAAABOAAAAHwAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAV5ubm83/////2NjY/9nZ2f/a2tr/29vb/9zc
-        3P/c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//3t7e/97e3v/e3t7/3d3d/93d3f/c3Nz/3Nzc/9vb2//a2tr/2dnZ/9jY
-        2P//////o6Oj0gAAAFcAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ACoAAABezs7O5P/////Y2Nj/2dnZ/9ra2v/b29v/3Nzc/9zc3P/d3d3/3t7e/97e3v/e3t7/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3t7e/97e
-        3v/e3t7/3d3d/93d3f/c3Nz/29vb/9ra2v/Z2dn/2dnZ//39/f/U1NTnAAAAXgAAACoAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAAGL09PTx7e3t/9nZ2f/a2tr/29vb/9vb
-        2//c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/d3d3/3d3d/9zc3P/b29v/29vb/9ra
-        2v/Z2dn/6Ojo//f39/QAAABkAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAuAAAAZPz8/Pji4+L/2drZ/9rb2v/b3Nv/293b/9zd3P/d3t3/3d7d/97f3v/e397/3uDe/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//4ODg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4eHh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uLi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Pj4//j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Pj/+Pj4//i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4eH/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4OD/3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/97g
-        3v/e397/3t/e/93e3f/d3t3/3N3c/9zd3P/b3Nv/2tva/9na2f/f4N///f39/AAAAGUAAAAwAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAABm/v7+/t3d3f/a2tr/29vb/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9/f3//f39//39/f/97e3v/d3d3/3d3d/9zc
-        3P/b29v/2tra/9nZ2f//////BwcHbAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGb/////29vb/9ra2v/b29v/3Nzc/93d3f/e3t7/3t7e/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/39/f/9/f3//f39//3t7e/97e3v/d3d3/3Nzc/9vb2//a2tr/2tra//////8hISF2AAAAMQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////c3dz/29zb/9vd
-        2//c3dz/3d7d/97f3v/e397/3+Df/9/g3//f4N//4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Tk5P/k5OT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OTk/+Tk5P/j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Pj/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/f4N//3+Df/9/g3//e397/3t/e/93e
-        3f/c3dz/3N3c/9vc2//a29r//////yEhIXYAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////93d3f/c3Nz/3d3d/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9vb2///////ISEhdgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3d3d/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/g4OD/39/f/9/f
-        3//e3t7/3d3d/93d3f/c3Nz/29vb//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////d3t3/3N3c/93e3f/d393/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4+Pj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5ub/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm5f/l5uX/5ebl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j4+P/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4OHg/+Dh4P/f4N//3+Df/97f3v/d393/3d7d/9zd3P/b3Nv//////yEh
-        IXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97e
-        3v/d3d3/3t7e/9/f3//f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Dg
-        4P/g4OD/39/f/9/f3//e3t7/3d3d/9zc3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3t7e/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Hh4f/h4eH/4ODg/+Dg4P/f39//39/f/97e3v/d3d3/3Nzc////
-        //8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///e3t7/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Hh
-        4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/c3Nz//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97f3v/d3t3/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Lj4v/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/l5eX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ubm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo
-        5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xl5f/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4uPi/+Lj4v/h4uH/4eLh/+Dh4P/g4eD/3+Df/9/g3//e397/3d7d/9ze
-        3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////39/f/97e3v/f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Li
-        4v/i4uL/4eHh/+Hh4f/g4OD/4ODg/9/f3//e3t7/3t7e//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////f39//3t7e/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/g4OD/39/f/97e
-        3v/e3t7//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////9/h3//e397/3+Df/+Dh4P/g4uD/4eLh/+Hj4f/i4+L/4uPi/+Pk4//k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6Oj/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5eXl/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/i4+L/4uPi/+Hj4f/h4uH/4OLg/+Dh4P/f4N//3uDe/97f3v//////ISEhdgAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4eHh/9/f3//g4OD/4eHh/+Li
-        4v/i4uL/4+Pj/+Pj4//j4+P/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//v7+//+fn5//////////////////////////////////////////////////z8/P/w8PD/6+vr/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg
-        4P/g4OD/39/f//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ//////h4eH/39/f/+Dg4P/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Pj4//l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6+vr//Dw8P/9/f3///////b29v/BwcH/kJCQ/35+fv9OTk7/Pz8//wsL
-        C/87Ozv/Pz8//35+fv9+fn7/uLi4/+3t7f////////////Pz8//r6+v/6urq/+rq6v/q6ur/6urq/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/+Dg4P/f39///////yEhIXYAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Hi4f/f4d//4OHg/+Hi
-        4f/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/n5+f/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6+zr//P08///////7+/v/7Gx
-        sf9dXV3/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZG
-        Rv+goKD/4+Pj///////3+Pf/7e7t/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+np
-        6f/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fn5//m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/k5eT/4+Tj/+Pk4//i4+L/4uPi/+Hi
-        4f/g4eD/4OHg/9/g3///////ISIhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGf/////4uLi/+Hh4f/h4eH/4uLi/+Pj4//j4+P/5OTk/+Tk5P/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
-        6v/r6+v/6+vr//Hx8f//////6urq/4WFhf8LCwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/XV1d/9XV1f//////9PT0/+zs
-        7P/r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+Xl5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4ODg//////8iIiJ2AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////i4uL/4eHh/+Hh
-        4f/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6+vr/+zs7P/4+Pj/+vr6/56env8LCwv/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/29vb//v7+///////+/v7//r6+v/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/k5OT/4+Pj/+Pj
-        4//i4uL/4eHh/+Hh4f/g4OD//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////+Lj4v/h4uH/4eLh/+Lj4v/j5OP/4+Tj/+Tl5P/l5eX/5ebl/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+rr6v/q6+r/6uvq/+rr6v/q6+r/6+vr/+vr
-        6//v7+///////+bm5v8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoa
-        Gv/Kysr///////Dx8P/r6+v/6+vr/+rr6v/q6+r/6uvq/+rr6v/q6+r/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xl5f/j5OP/4+Tj/+Lj4v/h4+H/4eLh/+Dh4P//////IiIidgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4+Pj/+Li
-        4v/i4uL/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/8PDw///////Kysr/Dw8P/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+jo6P///////Pz8//r6+v/6+vr/+vr
-        6//r6+v/6+vr/+vr6//q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5eXl/+Tk
-        5P/k5OT/4+Pj/+Pj4//i4uL/4eHh//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////j4+P/4uLi/+Li4v/j4+P/5OTk/+Tk5P/l5eX/5eXl/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np
-        6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v
-        7///////urq6/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP+BgYH///////Ly8v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/l5eX/5OTk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH//////yIi
-        InYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Pk
-        4//i4+L/4uTi/+Pk4//k5eT/5OXk/+Xm5f/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp
-        6P/o6ej/6Ono/+jp6P/o6ej/6enp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6uvq/+rr
-        6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//v7+///////8PDw/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+MjIz///////Dy
-        8P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6enp/+jp6P/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//m5+b/5ufm/+bn
-        5v/k5eT/5OXk/+Pk4//j5OP/4uPi/+Hi4f//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5OTk/+Pj4//k5OT/5OTk/+Xl5f/l5eX/5ubm/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/7e3t////
-        ///R0dH/CwsL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+np6f//////+/v7//s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/4uLi////
-        //8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///k5OT/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr
-        6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/29vb/8fHx/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/2ZmZv+VlZX/uLi4/7i4uP+4uLj/qKio/3V1
-        df8bGxv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcH
-        B//V1dX//f39/+3t7f/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5eXl/+Xl5f/k5OT/5OTk/+Pj4//i4uL//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Tl5P/j5OP/5OXk/+Tl5P/l5uX/5ebl/+fo
-        5//n6Of/5+jn/+jp6P/o6ej/6Ono/+jp6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6uvq/+rr
-        6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt7P/s7ez/7/Dv////
-        //9vb2//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/RkZG/8fH
-        x//5+fn//////////////////v7+///////////////////////T09P/dXV1/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ywsLP/4+Pj/8/Tz/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+np6f/o6ej/6Ono/+jp6P/n6Of/5+jn/+fo5//m5+b/5ebl/+Tl5P/k5eT/4+Tj/+Lj
-        4v//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////5eXl/+Tk5P/l5eX/5eXl/+bm5v/m5ub/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs
-        7P/s7Oz/7Ozs/+3t7f/t7e3/7e3t/+3t7f/+/v7/zMzM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/Jycn/8PDw//+/v7/+/v7/+np6f/k5OT/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/j4+P/5+fn//b29v/+/v7/3Nzc/0pKSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/5SUlP//////7+/v/+3t7f/t7e3/7e3t/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+fn5//m5ub/5eXl/+Xl5f/k5OT/4+Pj//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////l5eX/5OTk/+Xl5f/l5eX/5ubm/+bm
-        5v/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//r6+v/6+vr/+vr6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7e3t/+3t7f/t7e3/8fHx////
-        //84ODj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZGRv/u7u7//v7+/+jo
-        6P/j4+P/4eHh/+Dg4P/e3t7/3d3d/9zc3P/c3Nz/3d3d/9/f3//g4OD/4uLi/+bm5v/39/f/+vr6/4WF
-        hf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BwcH/+rq6v/29vb/7e3t/+3t
-        7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Tk
-        5P/j4+P//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////+Xn5f/k5eT/5ebl/+Xm5f/m5+b/5ufm/+jp6P/o6ej/6Ono/+nq6f/p6un/6erp/+nq
-        6f/q6ur/6uvq/+rr6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt
-        7P/s7ez/7O3s/+3t7f/t7e3/7e7t/+3u7f/+//7/xMTE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP9jY2P/+vr6//X19f/m5ub/4uLi/9/f3//c3Nz/2dnZ/9XV1f/T09P/09PT/9PT
-        0//V1dX/2NjY/9vb2//f39//4eHh/+Tk5P/v7+///v7+/6qqqv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/jo6O///////u7+7/7e7t/+3t7f/t7e3/7O3s/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+rq6v/p6un/6erp/+nq
-        6f/o6uj/6Ono/+jp6P/n6ef/5ufm/+Xm5f/l5uX/5OXk/+Pl4///////JSUleQAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5+fn/+Xl5f/m5ub/5ubm/+fn
-        5//p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+zs
-        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/u7u7/7+/v////
-        //9UVFT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/OTk5//T09P/z8/P/5OTk/+Hh
-        4f/e3t7/2dnZ/9TU1P/Pz8//y8vL/8jIyP/R0dH/y8vL/8rKyv/Nzc3/0tLS/9jY2P/d3d3/4ODg/+Tk
-        5P/s7Oz//v7+/3x8fP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/+Pj4//Pz
-        8//u7u7/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/o6Oj/5ubm/+bm
-        5v/l5eX/5eXl//////8lJSV5AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ///////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////6Ojo/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wgICP/k5OT/+vz6/+bm5v/i4+L/3t7e/9fX1//Q0dD/zM3M/+Lj4v/29vb///////v7
-        +//+/v7/+vr6/+fn5//P0M//zc7N/9XV1f/c3dz/4uPi/+Tl5P/x8fH/+vr6/z09Pf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+4uLj/////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////ygoKHkAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnbGxs/1VVVf9YWFj/W1tb/15e
-        Xv9hYWH/Y2Nj/2ZmZv9paWn/ampq/2xsbP9tbW3/b29v/3BwcP9wcHD/cXFx/3Jycv9zc3P/c3Nz/3R0
-        dP91dXX/dnZ2/3d3d/93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/35+fv9/f3//gICA/4GB
-        gf9SUlL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5eX//7+/v/p6en/5eXl/9/f
-        3//Y2Nj/zs7O/9nZ2f/8/Pz/8/Pz/+vr6//o6Oj/6Ojo/+jo6P/q6ur/8fHx///////k5OT/zc3N/9bW
-        1v/d3d3/4+Pj/+fn5//+/v7/1tbW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zQ0
-        NP+BgYH/gICA/39/f/9+fn7/fn5+/319ff98fHz/e3t7/3p6ev95eXn/eHh4/3d3d/93d3f/dnZ2/3V1
-        df90dHT/c3Nz/3Nzc/9ycnL/cXFx/3BwcP9wcHD/bm5u/2xsbP9ra2v/aWlp/2dnZ/9kZGT/YWFh/19f
-        X/9bW1v/WVlZ/1VVVf9sbGz/FRUVeQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xYWFv/z8/P/8/Pz/+fn5//h4uH/2tra/9HR0f/e397//v7+/+3t7f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6+vr//f39//s7Oz/zc7N/9fY1//g4eD/5ufm/+vs6//+/v7/VlZW/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAh5AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ioqK//7+/v/q6ur/5eXl/9/f
-        3//V1dX/1dXV//7+/v/t7e3/6urq/+rq6v/q6ur/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/7Ozs//r6
-        +v/h4eH/0tLS/9zc3P/k5OT/6enp//7+/v/ExMT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgICHkAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP/MzMz//v7+/+rq6v/l5eX/3Nzc/9DQ0P/z8/P/8fLx/+zs7P/s7Oz/7Ozs/+zs
-        7P/s7ez/7O3s/+zt7P/s7Oz/7Ozs/+zs7P/s7Oz/7+/v//z8/P/R0dH/2tra/+Li4v/p6en/8fHx//f3
-        9/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJeQAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//f39//y8vL/6erp/+Lj
-        4v/Y2dj/19fX///////v7+//7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
-        7v/t7e3/+vr6/+Hi4f/V1tX/4OHg/+jp6P/t7e3//////01NTf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCQl6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8oKCj//////+/v7//p6en/4eHh/9fX1//k5OT//Pz8/+/v7//v8O//7/Dv/+/w
-        7//v8O//7/Dv/+/w7//v8O//7/Dv/+/w7//v8O//7/Dv/+/v7//19fX/8PDw/9TU1P/f39//5+fn/+3t
-        7f//////gICA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJ
-        CXoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0dHR///////7+/v/+rq
-        6v/h4eH/1tbW/+np6f/6+vr/8fHx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy
-        8f/x8vH/8fHx//X19f/39/f/09PT/9/f3//o6Oj/7u7u//////+Xl5f/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/TExM///////w8PD/6+zr/+Pk4//X19f/7Ozs//z8/P/z8/P/8/Pz//Pz
-        8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9vb2//r6+v/T1NP/4OHg/+nq
-        6f/v8O///////52dnf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP88PDz///////Hy
-        8f/t7u3/5ubm/9na2f/n5+f///////X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1
-        9f/19fX/9fX1//X19f/6+vr/9PT0/9fX1//i4+L/6+zr//Hx8f//////ioqK/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv/9/f3/9vb2/+/v7//o6Oj/3d3d/+Dg4P//////9/f3//b3
-        9v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2///////p6en/29vb/+bm
-        5v/u7u7/8/Pz//////9dXV3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/CgoKegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9zc
-        3P/+/v7/8fHx/+vs6//i4uL/1tfW//v7+//8/Pz/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4
-        +P/4+Pj/+Pj4//j4+P/6+vr//////9vb2//f39//6urq//Hx8f/4+fj//f39/xoaGv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ra2t//7+/v/09PT/7/Dv/+jo6P/d3d3/4+Pj////
-        ///7/Pv/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+vr6///////w8PD/2tra/+bm
-        5v/t7u3/8/Pz//7+/v/W1tb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP87Ozv//f39//39/f/z8/P/7e3t/+Xl5f/Z2dn/7+/v///////9/v3/+vv6//r7+v/7+/v/+/v7//v7
-        +//6+/r/+vv6//z9/P//////+Pj4/9ra2v/j4+P/6+vr//Ly8v/4+Pj//v7+/4qKiv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CgoKegAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcICLr/BgaP/wcHkv8HB5X/BweX/wcH
-        m/8HB53/CAif/wgIoP8ICKP/CAik/wgIpf8ICKf/CQmn/wkJqP8JCaj/CQmp/wkJqv8JCav/CQmr/wkJ
-        rP8JCa3/CQmu/wkJrv8JCa//CQmw/wkJsP8JCbH/CQmy/woKs/8KCrP/Cgq0/woKtf8KCrb/Cwu3/wYG
-        cv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP++vr7//v7+//b29v/y8vL/7O3s/+Tk
-        5P/a29r/6Ojo//7+/v///////f39//z8/P/8/Pz//Pz8//z9/P///////////+/v7//a29r/4eLh/+rr
-        6v/x8vH/9fb1//7+/v/m5ub/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BARB/wsL
-        t/8KCrb/Cgq1/woKtP8KCrP/Cgqz/wkJsv8JCbH/CQmw/wkJsP8JCa//CQmu/wkJrv8JCa3/CQms/wkJ
-        q/8JCav/CQmq/wkJqf8JCaj/CQmo/wkJp/8ICKb/CAil/wgIo/8ICKH/CAif/wcHnv8HB5v/BweZ/wcH
-        lf8HB5P/BgaQ/wgIuv8dHR16AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZwkJy/8HB5v/Bwee/wgIoP8ICKP/CAim/wgIp/8JCaj/CQmr/wkJrP8JCa7/CQmu/woK
-        sP8KCrD/Cgqx/woKsv8KCrL/Cgqz/woKs/8KCrT/Cgq1/woKtv8KCrb/Cgq3/woKt/8KCrj/Cgq5/wsL
-        uf8LC7r/Cwu7/wsLu/8LC7z/Cwu9/wsLvf8LC8T/CwvU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/zAwMP/39/f//v7+//b29v/y8vL/7e3t/+Xl5f/d3d3/3t7e//X19f//////////////
-        //////////////r6+v/j4+P/29vb/+Pj4//r6+v/8fHx//b29v/9/f3//v7+/3Jycv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCqn/CwvL/wsLvf8LC73/Cwu8/wsLu/8LC7v/Cwu6/wsL
-        uf8KCrn/Cgq4/woKt/8KCrf/Cgq2/woKtv8KCrX/Cgq0/woKs/8KCrP/Cgqy/woKsv8KCrH/Cgqw/woK
-        r/8JCa7/CQmt/wkJq/8JCar/CAin/wgIpv8ICKT/CAih/wgInv8HB5z/CQnL/ysrK3oAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCAiy/wYGif8HB4v/BweP/wcH
-        kv8HB5X/BweX/wgImv8ICJv/CAid/wgIn/8ICKD/CAih/wkJov8JCaP/CQmk/wkJpf8JCaX/CQmm/wkJ
-        pv8JCaf/CQmo/wkJqf8JCar/CQmq/wkJq/8JCaz/CQmt/wkJrf8JCa7/Cgqv/woKsP8KCrH/Cgqx/woK
-        s/8MDND/AgI7/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/42Njf/+/v7//f39//b3
-        9v/z9PP/7/Dv/+nq6f/j5OP/3d3d/93d3f/k5OT/5eXl/+Xm5f/e397/3Nzc/+Hi4f/o6Oj/7u7u//Ly
-        8v/29vb//P38//7+/v+8vLz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAG/wwM
-        0v8KCrf/Cgqx/woKsf8KCrD/Cgqv/wkJrv8JCa3/CQmt/wkJrP8JCav/CQmq/wkJqv8JCan/CQmo/wkJ
-        p/8JCab/CQmm/wkJpf8JCaX/CQmk/wkJo/8JCaL/CAig/wgIoP8ICJ7/CAic/wgImv8HB5j/BweV/wcH
-        k/8HB5D/BweN/wYGif8ICLL/KioqewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcICLP/BgaK/wcHjP8HB5D/BweT/wcHlv8HB5j/CAib/wgInP8ICJ7/CAig/wgI
-        of8ICKL/CQmj/wkJpP8JCaT/CQml/wkJpv8JCaf/CQmn/wkJqP8JCan/CQmp/wkJqv8JCav/CQms/wkJ
-        rP8JCa7/CQmu/wkJr/8KCrD/Cgqx/woKsf8KCrL/Cgqz/wwMwv8KCrD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/7S0tP/+/v7//v7+//j4+P/19vX/8fLx/+7v7v/q6+r/5ufm/+Tl
-        5P/j5OP/5OTk/+bm5v/p6un/7u7u//Dx8P/09fT/9/j3//39/f/+/v7/1tbW/w0NDf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBnX/DAzK/woKtP8KCrL/Cgqx/woKsf8KCrD/CQmv/wkJ
-        rv8JCa7/CQms/wkJrP8JCav/CQmq/wkJqf8JCan/CQmo/wkJp/8JCaf/CQmm/wkJpf8JCaT/CQmk/wkJ
-        o/8ICKH/CAih/wgIn/8ICJ3/CAib/wcHmf8HB5b/BweU/wcHkf8HB47/BgaK/wgIs/8qKip7AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwgItv8GBoz/BweO/wcH
-        kf8HB5T/BweX/wcHmf8ICJv/CAid/wgIn/8ICKH/CAii/wgIo/8JCaT/CQmk/wkJpf8JCab/CQmm/wkJ
-        p/8JCaj/CQmp/wkJqf8JCar/CQmr/wkJrP8JCaz/CQmt/wkJrv8JCa//CQmv/woKsP8KCrH/Cgqy/woK
-        s/8KCrP/Cgq3/w4O1P8CAif/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6ur
-        q//+/v7//v7+//r7+v/3+Pf/9vb2//P08//x8fH/7/Dv/+/v7//v8O//8PHw//Lz8v/19vX/9/j3//r6
-        +v/+/v7//v7+/8vLy/8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
-        z/8KCrz/Cgqz/woKs/8KCrL/Cgqx/woKsP8JCa//CQmv/wkJrv8JCa3/CQms/wkJrP8JCav/CQmq/wkJ
-        qf8JCan/CQmo/wkJp/8JCab/CQmm/wkJpf8JCaT/CQmk/wgIov8ICKL/CAig/wgInv8ICJz/BweZ/wcH
-        l/8HB5X/BweS/wcHj/8GBov/CAi2/yoqKnsAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnCQm3/wcHjf8HB4//CAiT/wgIlf8ICJn/CAia/wkJnP8JCZ7/CQmf/wkJ
-        ov8JCaP/CQmk/woKpf8KCqX/Cgqm/woKp/8KCqf/Cgqo/woKqf8KCqn/Cgqq/woKq/8KCqv/Cgqs/woK
-        rf8KCq7/Cgqu/wsLr/8LC7D/Cwux/wsLsf8LC7L/Cwuz/wsLtP8LC7X/DAzE/wsLt/8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Jycv/x8fH//v7+//7+/v/7/Pv/+fr5//j4
-        +P/3+Pf/9/j3//f49//4+Pj/+fr5//r6+v/+/v7//v7+//r6+v+tra3/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBm//DAzN/wsLtv8LC7T/Cwuz/wsLsv8LC7H/Cwux/wsL
-        sP8LC6//Cgqu/woKrv8KCq3/Cgqs/woKq/8KCqv/Cgqq/woKqf8KCqn/Cgqo/woKp/8KCqf/Cgqm/woK
-        pf8KCqX/CQmj/wkJo/8JCaH/CQme/wkJnf8ICJr/CAiZ/wgIlv8ICJP/CAiQ/wcHjP8JCbf/KioqewAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC7j/CAiO/wgI
-        kP8JCZT/CQmW/wkJmf8JCZv/CQmd/woKn/8KCqD/Cgqj/woKo/8LC6X/Cwum/wsLpv8LC6f/Cwun/wsL
-        qP8LC6n/Cwup/wsLqv8LC6v/Cwus/wsLrP8LC63/Cwuu/wsLrv8MDK//DAyw/wwMsf8MDLH/DAyy/wwM
-        s/8MDLP/DAy0/wwMtf8MDLn/ERHU/wQET/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xoaGv+urq7/9vb2///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////39
-        /f/CwsL/OTk5/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIZ/xER
-        1/8MDLz/DAy1/wwMtP8MDLP/DAyz/wwMsv8MDLH/DAyx/wwMsP8MDK//Cwuu/wsLrv8LC63/Cwus/wsL
-        rP8LC6v/Cwuq/wsLqf8LC6n/Cwuo/wsLp/8LC6f/Cwum/wsLpv8LC6T/Cgqj/woKov8KCp//CQme/wkJ
-        m/8JCZr/CQmW/wkJlP8ICJL/CAiN/wsLuP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsLu/8ICJD/CAiS/wkJlv8JCZn/CQmb/wkJnv8JCZ//Cgqh/woK
-        o/8KCqX/Cgql/wsLp/8LC6f/Cwuo/wsLqP8LC6n/Cwuq/wsLqv8LC6v/Cwur/wsLrP8LC63/Cwuu/wsL
-        rv8LC6//Cwuw/wwMsf8MDLH/DAyy/wwMsv8MDLP/DAy0/wwMtf8MDLX/DAy2/wwMt/8MDMD/Dw/T/wAA
-        DP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/dnZ2/7q6
-        uv/h4eH/4uLi///////p6en/4eHh/8nJyf+EhIT/ISEh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MDLn/Dw/G/wwMuP8MDLb/DAy1/wwMtf8MDLT/DAyz/wwM
-        sv8MDLL/DAyx/wwMsf8LC7D/Cwuv/wsLrv8LC67/Cwut/wsLrP8LC6v/Cwur/wsLqv8LC6r/Cwup/wsL
-        qP8LC6j/Cwun/wsLpv8KCqX/Cgqk/woKof8JCaD/CQme/wkJnP8JCZn/CQmW/wgIlP8ICJD/Cwu7/ysr
-        K3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwu+/wkJ
-        kv8JCZP/CQmW/woKmv8KCpz/Cgqe/woKoP8LC6P/Cwuk/wsLpv8LC6b/DAyn/wwMqP8MDKj/DAyp/wwM
-        qv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrf8MDK7/DAyv/w0NsP8NDbD/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0NuP8QEMj/Dg65/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQmC/xIS
-        0v8NDbr/DQ23/w0Ntv8NDbb/DQ21/w0NtP8NDbT/DQ2z/w0Ns/8NDbL/DQ2x/w0NsP8NDbD/DAyv/wwM
-        rv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyp/wwMqP8MDKj/DAym/wsLpv8LC6X/Cwuj/woK
-        of8KCp//Cgqc/woKmv8JCZj/CQmU/wkJkf8LC77/KysrewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC8D/CQmU/wkJlv8JCZj/Cgqc/woKnv8KCqD/Cgqi/wsL
-        pP8LC6b/Cwun/wsLqP8MDKn/DAyq/wwMqv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrv8MDK//DAyv/wwM
-        sP8MDLD/DAyx/w0Nsv8NDbL/DQ2z/w0Ns/8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0Nt/8NDbj/DQ25/w0N
-        u/8QENH/DAyh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcHXP8SEtf/DQ29/w0Nuf8NDbj/DQ23/w0Nt/8NDbb/DQ22/w0N
-        tf8NDbT/DQ2z/w0Ns/8NDbL/DQ2y/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwMrf8MDKz/DAys/wwM
-        q/8MDKv/DAyq/wwMqv8MDKj/Cwuo/wsLpv8LC6X/Cgqi/woKof8KCp7/Cgqc/wkJmv8JCZb/CQmT/wsL
-        wP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsL
-        wP8JCZT/CQmW/wkJmP8KCpz/Cgqe/woKoP8KCqL/Cwuk/wsLpf8LC6f/Cwuo/wsLqf8MDKr/DAyq/wwM
-        q/8MDKv/DAys/wwMrP8MDK3/DAyt/wwMrv8MDK//DAyw/wwMsP8MDLH/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbX/DQ21/w0Ntv8NDbb/DQ23/w0NuP8NDbj/DQ25/w4Ovf8SEtT/DAyT/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HB13/EhLZ/w4O
-        wP8NDbr/DQ24/w0NuP8NDbf/DQ22/w0Ntv8NDbX/DQ21/w0NtP8NDbP/DQ2z/w0Nsv8NDbH/DAyx/wwM
-        sP8MDLD/DAyv/wwMrv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyq/wsLqP8LC6j/Cwum/wsL
-        pP8KCqL/Cgqh/woKnv8KCpz/CQma/wkJlv8JCZP/CwvA/ysrK3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwvE/wkJlv8JCZj/CQmb/woKnf8KCqD/Cgqi/woK
-        o/8LC6b/Cwun/wsLqf8LC6n/Cwur/wwMq/8MDKz/DAys/wwMrf8MDK3/DAyu/wwMr/8MDK//DAyw/wwM
-        sP8MDLH/DAyx/wwMsv8MDLP/DQ2z/w0NtP8NDbX/DQ21/w0Ntv8NDbf/DQ23/w0NuP8NDbj/DQ25/w0N
-        uf8NDbr/DQ26/w4Ov/8REdP/Dg65/wAAB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/CgqN/xQU2f8ODsH/DQ27/w0Nuv8NDbn/DQ25/w0NuP8NDbj/DQ23/w0N
-        t/8NDbb/DQ21/w0Ntf8NDbT/DQ2z/wwMs/8MDLL/DAyx/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwM
-        rf8MDK3/DAys/wwMrP8MDKv/Cwuq/wsLqf8LC6j/Cwum/woKpP8KCqL/Cgqg/woKnv8JCZv/CQmZ/wkJ
-        lv8LC8T/LCwsewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcMDMb/CgqY/woKmf8KCpz/Cwue/wsLof8LC6P/Cwuk/wwMp/8MDKj/DAyq/wwMqv8MDKv/DQ2s/w0N
-        rP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0NsP8NDbD/DQ2x/w0Nsv8NDbL/DQ2z/w4Os/8ODrT/Dg61/w4O
-        tf8ODrb/Dg62/w4Ot/8ODrf/Dg64/w4Ouf8ODrn/Dg66/w8Puv8PD7v/Dw+7/w8Pvv8REc7/ERHR/wIC
-        Kf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8Psf8UFNb/Dw/A/w8P
-        vP8PD7v/Dw+6/w4Ouv8ODrn/Dg65/w4OuP8ODrf/Dg63/w4Otv8ODrb/Dg61/w4Otf8ODrT/Dg6z/w0N
-        s/8NDbL/DQ2y/w0Nsf8NDbD/DQ2w/w0Nr/8NDa7/DQ2u/w0Nrf8NDa3/DQ2s/w0NrP8MDKr/DAyq/wwM
-        qf8MDKf/Cwul/wsLo/8LC6H/Cwuf/woKnP8KCpr/CgqX/wwMxv8sLCx7AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwwMx/8KCpn/Cgqa/woKnf8LC5//Cwui/wsL
-        pP8LC6X/DAyo/wwMqf8MDKr/DAyr/wwMrP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0Nr/8NDbD/DQ2w/w0N
-        sf8NDbH/DQ2y/w0Ns/8NDbP/Dg60/w4OtP8ODrX/Dg61/w4Otv8ODrf/Dg63/w4OuP8ODrn/Dg65/w4O
-        uv8ODrr/Dg67/w8Pu/8PD7z/Dw+8/w8Pvv8REcn/FBTY/wkJcP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wUFSP8REdP/ERHP/w8Pv/8PD7z/Dw+8/w8Pu/8ODrv/Dg66/w4Ouv8ODrn/Dg65/w4O
-        uP8ODrf/Dg63/w4Otv8ODrX/Dg61/w4OtP8ODrT/DQ2z/w0Ns/8NDbL/DQ2x/w0Nsf8NDbD/DQ2w/w0N
-        r/8NDa//DQ2u/w0Nrv8NDa3/DQ2t/wwMq/8MDKv/DAyp/wwMqP8LC6b/Cwuk/wsLov8LC6D/Cgqd/woK
-        m/8KCpj/DAzH/y0tLXwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnDAzL/woKm/8KCp3/Cgqf/wsLof8LC6P/Cwum/wsLp/8MDKn/DAyr/wwMrP8MDK3/DAyu/wwM
-        rv8NDa//DQ2v/w0NsP8NDbD/DQ2x/w0Nsf8NDbL/DQ2y/w0Ns/8NDbT/DQ20/w0Ntf8NDbX/Dg62/w4O
-        tv8ODrf/Dg64/w4OuP8ODrn/Dg65/w4Ouf8ODrr/Dg67/w4Ou/8ODrz/Dg68/w4OvP8PD73/Dw+9/w8P
-        vv8PD8T/FRXY/xERyP8FBVb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICKv8PD7P/FRXc/xERx/8PD7//Dw+9/w8P
-        vf8ODrz/Dg68/w4OvP8ODrv/Dg67/w4Ouv8ODrn/Dg65/w4Ouf8ODrj/Dg64/w4Ot/8ODrb/Dg62/w0N
-        tf8NDbX/DQ20/w0NtP8NDbP/DQ2y/w0Nsv8NDbH/DQ2x/w0NsP8NDbD/DQ2v/w0Nr/8MDK7/DAyt/wwM
-        rf8MDKv/DAyq/wsLp/8LC6b/Cwul/wsLof8KCp//Cgqd/woKm/8MDMv/LS0tfAAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcNDcv/Cgqb/wsLnf8LC5//DAyh/wwM
-        o/8MDKb/DAyn/wwMqf8NDav/DQ2s/w0NrP8NDa7/Dg6u/w4Or/8ODq//Dg6w/w4OsP8ODrH/Dg6x/w4O
-        sv8ODrL/Dg6z/w4Os/8ODrT/Dg60/w8Ptf8PD7b/Dw+2/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+7/w8Pu/8QELv/EBC8/xAQvP8QEL3/EBC9/xAQvv8QEMD/EhLJ/xUV2/8TE8//Cgp9/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUF
-        X/8QELz/FRXd/xISzf8QEML/EBC//xAQvf8QEL3/EBC8/xAQvP8QELv/Dw+7/w8Pu/8PD7r/Dw+6/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptv8PD7b/Dw+1/w4OtP8ODrT/Dg6z/w4Os/8ODrL/Dg6y/w4O
-        sf8ODrH/Dg6w/w4OsP8ODq//Dg6v/w4Orv8NDa3/DQ2s/w0Nq/8MDKr/DAyn/wwMpv8MDKX/DAyh/wsL
-        n/8LC53/Cgqb/w0Ny/8tLS18AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZw0Nzv8KCp7/Cwuf/wsLof8MDKT/DAym/wwMqP8MDKr/DAyr/w0NrP8NDa7/DQ2u/w0N
-        sP8NDbD/Dg6x/w4Osf8ODrH/Dg6y/w4Osv8ODrL/Dg6z/w4OtP8ODrT/Dg61/w4Otf8ODrb/Dg62/w8P
-        t/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8Puv8PD7r/Dw+7/w8Pu/8PD7z/Dw+8/w8Pvf8QEL3/EBC9/xAQ
-        vv8QEL7/EBC//xAQv/8QEL//EBDB/xISyf8SEtX/FRXd/xMTyf8ODpf/BQVh/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8FBVH/CgqC/xAQuP8VFd3/FRXZ/xISy/8QEMP/EBDA/xAQv/8QEL//EBC+/xAQ
-        vv8QEL3/EBC9/w8Pvf8PD7z/Dw+8/w8Pu/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dw+3/w8P
-        t/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4OtP8ODrP/Dg6y/w4Osv8ODrL/Dg6x/w4Osf8ODrH/DQ2w/w0N
-        r/8NDa7/DQ2t/wwMq/8MDKr/DAyo/wwMp/8MDKT/Cwui/wsLn/8KCp3/DQ3O/y0tLXwAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnDQ3P/woKn/8LC6D/Cwuj/wwM
-        pf8MDKf/DAyo/wwMq/8MDKz/DQ2t/w0Nr/8NDa//DQ2w/w0Nsf8ODrH/Dg6x/w4Osv8ODrL/Dg6z/w4O
-        s/8ODrT/Dg60/w4Otf8ODrX/Dg62/w4Otv8ODrf/Dg63/w8PuP8PD7j/Dw+5/w8Puf8PD7r/Dw+6/w8P
-        u/8PD7v/Dw+8/w8PvP8PD73/Dw+9/w8Pvf8PD77/EBC+/xAQv/8QEL//EBC//xAQv/8QEMD/EBDA/xAQ
-        wf8QEMT/EhLL/xIS0v8WFtr/Fhbi/xYW3P8TE9b/ExPX/xMT1/8TE9X/Fhbk/xYW3P8SEtX/EhLN/xAQ
-        xv8QEMH/EBDA/xAQwP8QEL//EBC//xAQv/8QEL//EBC+/w8Pvv8PD73/Dw+9/w8Pvf8PD7z/Dw+8/w8P
-        u/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dg63/w4Ot/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4O
-        tP8ODrP/Dg6z/w4Osv8ODrL/Dg6x/w4Osf8NDbH/DQ2v/w0Nr/8NDa7/DAys/wwMq/8MDKn/DAyn/wwM
-        pf8LC6P/Cwuh/woKnv8NDc//LS0tfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcPD9D/Cwug/wwMov8MDKT/DAym/w0NqP8NDan/DQ2s/w0Nrf8ODq7/Dg6v/w4O
-        sP8ODrH/Dg6y/w4Osv8PD7L/Dw+z/w8Ps/8PD7P/Dw+0/w8PtP8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8P
-        t/8QELj/EBC4/xAQuf8QELn/EBC6/xAQuv8QELv/EBC7/xAQvP8QELz/EBC8/xAQvf8QEL3/ERG9/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHA/xERwf8REcH/ERHB/xERwf8REcL/ERHE/xER
-        x/8REcf/ERHH/xERxv8REcP/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERwP8REb//ERG//xER
-        v/8REb7/ERG+/xERvf8QEL3/EBC9/xAQvP8QELz/EBC8/xAQu/8QELv/EBC6/xAQuv8QELn/EBC5/xAQ
-        uP8QELj/Dw+3/w8Pt/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8PD7P/Dw+z/w8Ps/8PD7L/Dg6y/w4O
-        sv8ODrD/Dg6w/w4Orv8NDa3/DQ2s/w0Nqv8NDaj/DAym/wwMpP8MDKL/Cwuf/w8P0P8uLy58AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZw8P1P8LC6L/DAyk/wwM
-        pv8MDKj/DQ2q/w0Nq/8NDa3/DQ2v/w4OsP8ODrH/Dg6y/w4Os/8ODrP/Dg6z/w8PtP8PD7T/Dw+1/w8P
-        tf8PD7b/Dw+2/w8Pt/8PD7f/Dw+3/w8PuP8PD7j/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        vP8QELz/EBC9/xAQvf8QEL7/EBC+/xAQvv8QEL//ERG//xERv/8REcD/ERHA/xERwP8REcH/ERHB/xER
-        wf8REcH/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xER
-        wv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//EBC//xAQvv8QEL7/EBC+/xAQ
-        vf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQuv8QELr/EBC6/w8Puf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8P
-        t/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8ODrP/Dg6z/w4Osv8ODrL/Dg6w/w0Nr/8NDa7/DQ2r/w0N
-        qv8MDKj/DAym/wwMpP8LC6L/Dw/U/y4vLnwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnDw/X/wsLpf8MDKb/DAyo/wwMqv8NDaz/DQ2u/w0Nr/8NDbH/Dg6y/w4O
-        s/8ODrP/Dg60/w4Otf8ODrX/Dg62/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+6/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xAQv/8QEL//EBDA/xAQ
-        wP8QEMD/EBDA/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERw/8REcP/ERHD/xER
-        w/8REcP/ERHD/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHB/xER
-        wf8REcH/EBDA/xAQwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL3/EBC9/xAQvf8QELz/EBC8/xAQ
-        vP8PD7v/Dw+6/w8Puv8PD7r/Dw+5/w8Puf8PD7j/Dw+4/w8Pt/8PD7f/Dw+3/w8Ptv8PD7b/Dg62/w4O
-        tf8ODrX/Dg6z/w4Os/8ODrL/DQ2x/w0NsP8NDa7/DQ2s/wwMqv8MDKn/DAym/wsLpP8PD9f/Li8ufAAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQENf/DAyl/wwM
-        pv8NDaj/DQ2q/w4OrP8ODq7/Dg6v/w4OsP8PD7L/Dw+z/w8Ps/8PD7T/Dw+1/w8Ptf8PD7X/EBC2/xAQ
-        tv8QELf/EBC3/xAQt/8QELj/EBC4/xAQuf8QELn/EBC5/xAQuv8QELr/EBC6/xERu/8REbz/ERG8/xER
-        vP8REb3/ERG9/xERvf8REb7/ERG+/xERv/8REb//ERG//xERwP8SEsD/EhLA/xISwP8SEsH/EhLB/xIS
-        wf8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xIS
-        wv8SEsL/EhLC/xISwv8SEsL/EhLB/xISwf8SEsH/EhLA/xISwP8SEsD/ERHA/xERv/8REb//ERG//xER
-        vv8REb7/ERG9/xERvf8REb3/ERG8/xERvP8REbz/ERG7/xAQuv8QELr/EBC6/xAQuf8QELn/EBC5/xAQ
-        uP8QELj/EBC3/xAQt/8QELf/EBC2/xAQtv8PD7X/Dw+1/w8Ptf8PD7P/Dw+z/w8Psv8ODrH/Dg6v/w4O
-        rv8ODqz/DQ2q/w0Nqf8NDab/DAyk/xAQ1/8vLy98AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ2/8MDKf/DAyp/w0Nq/8NDa3/Dg6u/w4OsP8ODrH/Dg6y/w8P
-        s/8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/EBC4/xAQuP8QELj/EBC5/xAQuf8QELr/EBC6/xAQ
-        u/8QELv/EBC7/xAQvP8QELz/EBC8/xERvf8REb3/ERG+/xERvv8REb7/ERG//xERv/8REb//ERHA/xER
-        wP8REcH/ERHB/xERwf8SEsH/EhLB/xISwv8SEsL/EhLC/xISwv8SEsP/EhLD/xISw/8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISwv8SEsL/EhLC/xIS
-        wv8SEsH/EhLB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/ERG9/xER
-        vf8QELz/EBC8/xAQvP8QELv/EBC7/xAQu/8QELr/EBC6/xAQuf8QELn/EBC4/xAQuP8QELj/Dw+3/w8P
-        t/8PD7f/Dw+2/w8Ptf8PD7X/Dw+0/w4Osv8ODrH/Dg6w/w4Orv8NDa3/DQ2r/wwMqf8MDKb/EBDb/zAw
-        MHwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDc/wwM
-        qP8MDKr/DQ2s/w0Nrv8ODq//Dg6x/w4Osv8ODrP/Dw+0/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8P
-        uP8QELn/EBC5/xAQuf8QELr/EBC6/xAQuv8QELv/EBC7/xAQu/8QELz/EBC8/xAQvf8QEL3/EBC9/xER
-        vv8REb7/ERG+/xERv/8REb//ERG//xERwP8REcD/ERHB/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xIS
-        wv8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsT/EhLE/xISxP8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xER
-        wP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQ
-        u/8QELr/EBC6/xAQuv8QELn/EBC5/xAQuf8PD7j/Dw+4/w8Pt/8PD7f/Dw+2/w8Ptv8PD7X/Dg6z/w4O
-        sv8ODrH/Dg6v/w0Nrv8NDaz/DAyq/wwMqP8QENz/MDAwfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQEN7/DAyq/wwMq/8NDa3/DQ2v/w4OsP8ODrL/Dg6z/w4O
-        tP8PD7X/Dw+2/w8Pt/8PD7j/Dw+4/w8PuP8PD7n/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        u/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xERv/8REb//ERG//xERv/8REcD/ERHA/xER
-        wf8REcH/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8SEsP/EhLD/xISw/8SEsP/EhLE/xIS
-        xP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsP/EhLD/xISw/8SEsP/ERHD/xER
-        w/8REcL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG//xAQ
-        vv8QEL7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELz/EBC7/xAQu/8QELv/EBC6/xAQuv8QELr/Dw+5/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptf8ODrT/Dg6z/w4Osv8ODrH/DQ2v/w0Nrf8MDKv/DAyp/xAQ
-        3v8wMDB8AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ
-        4v8MDKz/DAyt/w0Nr/8NDbH/Dg6y/w4OtP8ODrX/Dg62/w8Pt/8PD7j/Dw+5/w8Puv8PD7r/Dw+6/w8P
-        uv8PD7v/Dw+7/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL3/EBC+/xAQvv8QEL7/EBC//xAQ
-        v/8QEMD/EBDA/xERwP8REcD/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8REcP/ERHD/xER
-        w/8REcT/ERHE/xERxP8REcT/ERHE/xERxf8REcX/EhLF/xISxf8SEsX/EhLF/xISxf8SEsX/EhLF/xIS
-        xf8SEsX/ERHF/xERxf8REcT/ERHE/xERxP8REcT/ERHE/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xER
-        wv8REcL/ERHC/xERwf8REcH/ERHA/xERwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL7/EBC9/xAQ
-        vf8QEL3/EBC9/xAQvP8QELz/EBC8/w8Pu/8PD7v/Dw+7/w8Puv8PD7r/Dw+6/w8Puf8PD7n/Dw+3/w4O
-        tv8ODrX/Dg60/w4Os/8NDbH/DQ2v/wwMrf8MDKv/EBDi/zExMX0AAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDk/w0Nrv8NDbD/Dg6x/w4Os/8ODrX/Dw+2/w8P
-        t/8PD7j/EBC5/xAQuv8QELr/EBC8/xAQvP8QELz/EBC8/xAQvP8QEL3/EBC9/xERvf8REb7/ERG+/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHB/xERwf8SEsH/EhLC/xISwv8SEsL/EhLC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLE/xISxP8SEsX/EhLF/xISxf8SEsX/EhLF/xISxf8TE8b/ExPG/xMT
-        xv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8SEsX/EhLF/xIS
-        xf8SEsX/EhLF/xISxf8SEsT/EhLE/xISxP8SEsT/EhLD/xISw/8SEsP/EhLC/xISwv8SEsL/EhLC/xIS
-        wf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//ERG//xERvv8REb7/ERG+/xERvv8REb3/EBC9/xAQ
-        vf8QELz/EBC8/xAQvP8QELz/EBC7/xAQuv8QELn/Dw+4/w8Pt/8PD7b/Dg61/w4Os/8ODrH/DQ2w/w0N
-        rf8QEOT/MTExfQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcUFOb/Dw+w/xAQsP8QELP/ERG0/xERtv8SErf/EhK4/xISuf8SErr/ExO7/xMTu/8TE7z/ExO9/xMT
-        vf8TE73/ExO9/xMTvf8TE77/FBS+/xQUvv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXF/xYW
-        xf8WFsX/FhbF/xYWxf8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xUVxf8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVwv8VFcL/FRXC/xUVwv8UFMH/FBTB/xQUwP8UFMD/FBTA/xQU
-        wP8UFL//FBS//xQUv/8UFL//FBS+/xQUvv8TE77/ExO9/xMTvf8TE73/ExO9/xMTvf8TE7v/ExO7/xIS
-        uv8SErn/EhK4/xISt/8REbb/ERG0/xAQs/8QELH/Dw+v/xQU5v8xMTF9AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxQU5v8PD6//EBCw/xAQsv8REbT/ERG2/xIS
-        t/8SErj/EhK5/xISuv8TE7v/ExO7/xMTvP8TE7z/ExO9/xMTvf8TE73/ExO9/xMTvv8TE77/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQUwf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUV
-        w/8VFcP/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxf8VFcX/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUV
-        wv8VFcL/FBTB/xQUwf8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL//FBS//xQUvv8UFL7/ExO+/xMT
-        vv8TE73/ExO9/xMTvf8TE73/ExO8/xMTu/8TE7v/EhK6/xISuf8SErj/EhK3/xERtv8REbT/EBCz/xAQ
-        sP8PD6//FBTm/zIyMn0AAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABlFBTo/xAQsv8QELP/ERG1/xIStv8SErj/ExO5/xMTuv8TE7v/ExO8/xQUvf8UFL3/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBS//xQUwP8VFcD/FRXA/xUVwP8VFcH/FRXB/xUVwf8VFcH/FRXC/xUV
-        wv8VFcL/FRXC/xUVw/8VFcP/FhbD/xYWw/8WFsT/FhbE/xYWxP8WFsT/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsb/FhbG/xYWxv8XF8b/FxfG/xcXxv8XF8b/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXxv8XF8b/FxfG/xcXxv8WFsb/FhbG/xYWxv8WFsX/FhbF/xYW
-        xf8WFsX/FhbF/xYWxP8WFsT/FhbE/xYWxP8WFsP/FhbD/xUVw/8VFcP/FRXC/xUVwv8VFcL/FRXC/xUV
-        wf8VFcH/FRXB/xUVwf8VFcD/FRXA/xUVwP8UFMD/FBS//xQUv/8UFL//FBS//xQUv/8UFL7/FBS9/xQU
-        vf8TE7z/ExO7/xMTuv8TE7n/EhK4/xIStv8REbX/ERGz/xAQsf8UFOr/MjIyewAAADEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAGQUFOr/EBCz/xAQtP8REbX/EhK3/xIS
-        uf8SErr/ExO7/xMTvP8TE73/FBS+/xQUvv8UFL//FBS//xQUv/8UFMD/FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8VFcH/FRXB/xUVwf8VFcL/FRXC/xUVwv8VFcL/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FhbE/xYW
-        xP8WFsX/FhbF/xYWxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xYW
-        x/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxf8WFsX/FhbF/xYWxf8WFsX/FhbE/xYW
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUVwv8VFcL/FRXB/xUVwf8VFcH/FBTB/xQU
-        wP8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL7/FBS+/xMTvf8TE7z/ExO7/xISuv8SErn/EhK3/xER
-        tf8QELT/EBCy/xQU6/8yMjJ7AAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAtAAAAYhUV7v8REbX/EBC2/xERuP8REbn/EhK7/xISvP8TE73/ExO+/xMTv/8UFMD/FBTA/xQU
-        wf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQUwv8UFML/FBTC/xQUwv8VFcP/FRXD/xUVw/8VFcP/FRXE/xUV
-        xP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUVxf8VFcX/FRXG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsn/FhbJ/xYW
-        yf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8VFcb/FRXF/xUVxf8VFcX/FRXF/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQUwv8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wP8UFMD/ExO//xMTvv8TE73/EhK8/xISu/8REbn/ERG4/xAQtv8QELT/Fhbu/zQ0NHkAAAAuAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAABeGBjp/hMTuf8QELb/ERG3/xER
-        uf8SErr/EhK8/xMTvf8TE77/ExO//xQUwP8UFMD/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wv8UFML/FBTC/xQUwv8UFML/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUV
-        xf8VFcX/FRXG/xUVxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbI/xYW
-        yP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8VFcb/FRXG/xUV
-        xf8VFcX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQU
-        wv8UFML/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTA/xQUwP8TE7//ExO+/xMTvf8SErz/EhK6/xER
-        uf8REbj/EBC2/xIStv8YGO7/AAAAXwAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAJgAAAFchIeT+FxfB/xERuP8SErn/EhK7/xMTvP8TE77/FBS//xQUwP8UFMH/FRXC/xUV
-        wv8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FhbF/xYW
-        xf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xcXx/8XF8f/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8j/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8f/FxfH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8WFsX/FhbF/xYWxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUV
-        w/8VFcL/FRXC/xQUwf8UFMD/FBS//xMTvv8TE7z/EhK7/xISuf8REbj/GBi//x0d6P4AAABYAAAAJwAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAATioq2PscHM7/ERG4/xER
-        uv8SErz/ExO9/xMTvv8UFMD/FBTB/xQUwv8UFML/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8VFcX/FRXF/xUVxf8VFcX/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcX
-        yv8XF8r/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FRXF/xUVxf8VFcX/FRXF/xUV
-        xf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8UFML/FBTC/xQUwf8UFMD/ExO//xMT
-        vf8SErz/EhK6/xERuP8bG8v/JibZ+wAAAE8AAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAABoAAABCODjG8SEh4v8REbr/ERG8/xISvv8SEr//ExPA/xMTwv8UFMP/FBTE/xQU
-        xP8VFcX/FRXF/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV
-        x/8VFcf/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbJ/xYWyf8WFsn/FhbJ/xYWyf8WFsr/FhbK/xYW
-        yv8WFsr/FhbK/xcXyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyv8WFsr/FhbK/xYWyv8WFsn/FhbJ/xYWyf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xUVx/8VFcf/FRXH/xUVx/8VFcf/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUV
-        xv8VFcX/FRXF/xQUxP8UFMT/FBTD/xMTwv8TE8D/EhK//xISvv8REbz/ERG6/yEh3f80NMn1AAAAQwAA
-        ABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAADVAQKTVKSn3/xER
-        uv8SErv/ExO9/xMTv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xUVxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8XF8f/FxfH/xcXyP8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8YGMr/GBjK/xgY
-        yv8YGMr/GBjK/xgYyv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgY
-        y/8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMr/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXx/8XF8f/FhbH/xYWx/8WFsf/FhbH/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8VFcX/FRXE/xUVw/8VFcL/FBTB/xQU
-        wP8TE7//ExO9/xISu/8REbr/KCj3/z09ptoAAAA3AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAMAAAAKDg4b5MsLPn/GBi+/xISvf8TE7//FBTA/xQUwv8VFcP/FRXE/xYW
-        xf8WFsb/FhbG/xcXx/8XF8f/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/GBjJ/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMv/GBjL/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZ
-        zP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgY
-        yv8YGMn/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yP8XF8f/FxfH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FBTC/xQUwP8TE7//ExO9/xcXvf8sLPn/Ozt+pQAA
-        ACkAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAcAAAAQzg4
-        6fsoKND/EhK+/xMTv/8TE8H/FBTC/xUVw/8VFcT/FRXF/xYWxv8WFsf/FhbI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8XF8r/GBjK/xgY
-        yv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        zP8YGMz/GBjM/xgYzP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8WFsj/FhbH/xYWxv8VFcX/FRXF/xUV
-        w/8UFML/FBTB/xMTv/8SEr7/JibN/zg46/4LCxJKAAAAHQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABEAAAAvSEi12zY2/v8UFMD/ExPB/xMTwv8UFMT/FBTF/xUV
-        xv8VFcf/FhbI/xYWyf8WFsn/FhbK/xYWyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcXzP8XF8z/FxfM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcX
-        zP8XF8z/FxfM/xcXzP8XF8z/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyf8WFsn/FhbI/xUVx/8VFcb/FBTF/xQUxP8TE8L/ExPB/xMTwP82Nvz/Rka54gAA
-        ADAAAAARAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA
-        AB4rK0pjOzv5/iYmyv8SEsD/ExPC/xMTw/8UFMT/FBTF/xUVxv8VFcf/FhbI/xYWyf8WFsn/FhbJ/xYW
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXzP8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcXzP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcX
-        y/8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FhbK/xYWyf8WFsn/FhbJ/xYWyP8VFcf/FRXG/xQU
-        xf8UFMT/ExPD/xMTwv8SEsD/IyPI/zs7+v8yMlhuAAAAIAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEQAAAC5OTsLiPDz//xYWwv8SEsL/ExPD/xQU
-        xP8UFMX/FBTG/xUVx/8VFcj/FhbJ/xYWyf8WFsr/FhbK/xYWyv8WFsv/FhbL/xYWy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfM/xcXzP8XF8z/FxfM/xcXzP8XF8z/GBjM/xgY
-        zP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xYWy/8WFsv/FhbL/xYW
-        yv8WFsr/FhbK/xYWyf8WFsn/FRXI/xUVx/8UFMb/FBTG/xQUxP8TE8P/EhLC/xYWwv87O///T0/I6QAA
-        AC8AAAARAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAAIAAAAGicnQlJKSvT+MTHq/xMTwv8TE8P/ExPF/xQUxv8UFMf/FBTI/xUVyP8VFcn/FRXK/xYW
-        yv8WFsr/FhbL/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbM/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfN/xcX
-        zf8XF83/FxfN/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbL/xYWyv8WFsr/FRXK/xUVyf8VFcj/FBTI/xQU
-        x/8UFMb/ExPF/xMTw/8SEsL/MDDm/0pK9f4xMVJeAAAAGwAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAOAAAAIlJSmqdPT/7/Kyvc/xMT
-        xf8TE8b/FBTH/xUVyP8VFcn/FRXK/xYWyv8WFsv/FhbL/xYWzP8WFsz/FxfM/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zP8XF8z/FhbM/xYWy/8WFsv/FhbK/xUVyv8VFcn/FRXI/xQUx/8TE8b/ExPF/ygo1/9LS/7/VVWisQAA
-        ACMAAAAOAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAARAAAAKFtbus5LS///IiLJ/xMTxv8TE8f/FBTI/xQUyf8VFcr/FRXK/xUV
-        y/8WFsz/FhbM/xYWzP8WFsz/FhbN/xYWzf8WFs3/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FhbN/xYWzf8WFs3/FhbM/xYWzP8WFsz/FhbM/xUVy/8VFcr/FRXK/xQU
-        yf8UFMj/ExPH/xMTxv8hIcn/Skr//1tbwNcAAAApAAAAEQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAK2Fh
-        1epOTv//JibM/xUVx/8WFsj/FhbJ/xcXyv8XF8v/GBjL/xgYzP8YGMz/GBjM/xgYzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8YGM3/GBjM/xgYzP8YGMz/GBjL/xcXy/8XF8r/FhbJ/xYWyP8VFcf/JCTK/0xM//9hYdvwAAAALAAA
-        ABQAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAUFhYgMGlp1elXV///MDDh/xcXx/8WFsj/FxfJ/xcX
-        yf8YGMr/GBjL/xgYy/8ZGcv/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xoa
-        zv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcv/GBjL/xgYy/8YGMr/FxfJ/xcX
-        yf8XF8j/FhbH/y4u3f9VVf//aWnb7yAgNDgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
-        AAcAAAATAAAAJmhovcldXf7/PDz0/xsbyf8WFsn/FxfJ/xcXyv8XF8r/GBjL/xgYy/8YGMz/GBjM/xgY
-        zP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GBjM/xgY
-        zP8YGMz/GBjM/xgYy/8YGMv/FxfK/xcXyv8XF8n/FhbJ/xsbyf85OfD/Xl7+/2lpxNIAAAAnAAAAFAAA
-        AAgAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAcAAAARAAAAIGRkp5xzc/f8VFT//y0t
-        2v8ZGcr/FhbK/xcXyv8XF8v/FxfL/xcXzP8XF8z/GBjM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfL/xcXy/8XF8r/FhbK/xgY
-        yf8rK9f/U1P//3Bw+P5lZaukAAAAIQAAABEAAAAHAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAAMAAAAFzAwSjxxcc/cc3P7/ltb//83N+f/HR3N/xcXzP8XF8z/FxfN/xcX
-        zf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zf8YGM3/FxfN/xcXzf8XF8z/FxfM/x0dzf80NOT/WVn//3R0/P5zc9XgMzNNPQAAABgAAAAMAAAABQAA
-        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAA
-        ABo9PVxDdHTN0X198/x1df//YmL//1FR//9BQf//ODjo/ygo5v8eHtH/FxfP/xcXz/8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcXz/8XF8//HR3Q/ycn5P83N+j/QED//1FR//9hYf//dHT//3p6
-        9fx1dc/XQUFnSwAAABsAAAAQAAAACAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAACAAAAA8AAAAWAAAAIFxcjml0dMbAenrh7Hl5
-        4O5/f/P8fn70/IKC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//fX31/H9/8/x5eePuenri7XR0x8NeXpJuAAAAIAAAABYAAAAPAAAACQAAAAQAAAABAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAABAAAAAwAAAAYAAAAKAAAADwAAABMAAAAXAAAAGwAAAB4AAAAgAAAAIgAAACMAAAAjAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAjAAAAIwAAACIAAAAgAAAAHgAAABsAAAAYAAAAEwAA
-        AA8AAAAKAAAABwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
-        ///////////////////////////////////////////////////////////////////////////gAAAA
-        AAAAAAAAAAf/////AAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///g
-        AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAA
-        AP//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA
-        AAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAP/wA
-        AAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAA
-        Af//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///wAAAAAAAAAAAAAAAAD///+AAAAAAAAAAA
-        AAAAAB////wAAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAA////////////////////////////////
-        ////////////////////////////////////////////////////////
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/PokemonGo.RocketAPI.Window.csproj b/PokemonGo/RocketAPI/Window/PokemonGo.RocketAPI.Window.csproj
deleted file mode 100644
index 9de227c..0000000
--- a/PokemonGo/RocketAPI/Window/PokemonGo.RocketAPI.Window.csproj
+++ /dev/null
@@ -1,623 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{C85B9D78-9CA3-4830-84CD-6B69090B987F}</ProjectGuid>
-    <OutputType>WinExe</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>PokemonGo.RocketAPI.Window</RootNamespace>
-    <AssemblyName>PokemonGo.RocketAPI.Window</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ApplicationIcon>pokemonGo.ico</ApplicationIcon>
-  </PropertyGroup>
-  <PropertyGroup>
-    <NoWin32Manifest>true</NoWin32Manifest>
-  </PropertyGroup>
-  <PropertyGroup>
-    <StartupObject>
-    </StartupObject>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="GMap.NET.Core">
-      <HintPath>lib\GMap.NET.Core.dll</HintPath>
-    </Reference>
-    <Reference Include="GMap.NET.WindowsForms">
-      <HintPath>lib\GMap.NET.WindowsForms.dll</HintPath>
-    </Reference>
-    <Reference Include="Google.Protobuf">
-      <HintPath>..\..\..\packages\Google.Protobuf.3.0.0-beta3\lib\dotnet\Google.Protobuf.dll</HintPath>
-    </Reference>
-    <Reference Include="ObjectListView, Version=2.9.1.1072, Culture=neutral, PublicKeyToken=b1c5bf581481bcd4, processorArchitecture=MSIL">
-      <HintPath>..\..\..\packages\ObjectListView.Official.2.9.1\lib\net20\ObjectListView.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\..\..\packages\S2Geometry.1.0.3\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Configuration" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Deployment" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="LocationManager.cs" />
-    <Compile Include="MainForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MainForm.Designer.cs">
-      <DependentUpon>MainForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MapForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MapForm.Designer.cs">
-      <DependentUpon>MapForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="PokemonForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="PokemonForm.Designer.cs">
-      <DependentUpon>PokemonForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="RouteOptimizer.cs" />
-    <Compile Include="PokeUi.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="PokeUi.Designer.cs">
-      <DependentUpon>PokeUi.cs</DependentUpon>
-    </Compile>
-    <Compile Include="Program.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="S2GMapDrawer.cs" />
-    <Compile Include="Settings.cs" />
-    <Compile Include="SettingsForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SettingsForm.Designer.cs">
-      <DependentUpon>SettingsForm.cs</DependentUpon>
-    </Compile>
-    <EmbeddedResource Include="MainForm.resx">
-      <DependentUpon>MainForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MapForm.resx">
-      <DependentUpon>MapForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="PokemonForm.resx">
-      <DependentUpon>PokemonForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="PokeUi.resx">
-      <DependentUpon>PokeUi.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Properties\Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Resources.resx</DependentUpon>
-      <DesignTime>True</DesignTime>
-    </Compile>
-    <EmbeddedResource Include="SettingsForm.resx">
-      <DependentUpon>SettingsForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <None Include="Properties\Settings.settings">
-      <Generator>SettingsSingleFileGenerator</Generator>
-      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
-    </None>
-    <Compile Include="Properties\Settings.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DependentUpon>Settings.settings</DependentUpon>
-      <DesignTimeSharedInput>True</DesignTimeSharedInput>
-    </Compile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\PokemonGo.RocketAPI.csproj">
-      <Project>{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}</Project>
-      <Name>PokemonGo.RocketAPI</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="pokemonGo.ico">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_1.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_2.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_3.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_4.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_5.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_6.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_7.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_8.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_9.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_10.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_11.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_12.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_13.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_14.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_15.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_16.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_17.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_18.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_19.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_20.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_21.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_22.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_23.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_24.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_25.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_26.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_27.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_28.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_29.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_30.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_31.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_32.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_33.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_34.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_35.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_36.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_37.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_38.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_39.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_40.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_41.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_42.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_43.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_44.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_45.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_46.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_47.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_48.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_49.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_50.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_51.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_52.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_53.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_54.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_55.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_56.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_57.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_58.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_59.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_60.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_61.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_62.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_63.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_64.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_65.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_66.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_67.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_68.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_69.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_70.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_71.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_72.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_73.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_74.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_75.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_76.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_77.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_78.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_79.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_80.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_81.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_82.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_83.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_84.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_85.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_86.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_87.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_88.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_89.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_90.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_91.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_92.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_93.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_94.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_95.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_96.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_97.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_98.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_99.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_100.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_101.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_102.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_103.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_104.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_105.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_106.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_107.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_108.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_109.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_110.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_111.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_112.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_113.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_114.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_115.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_116.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_117.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_118.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_119.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_120.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_121.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_122.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_123.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_124.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_125.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_126.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_127.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_128.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_129.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_130.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_131.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_132.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_133.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_134.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_135.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_136.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_137.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_138.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_139.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_140.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_141.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_142.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_143.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_144.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_145.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_146.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_147.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_148.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_149.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_150.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="img\Pokemon_151.png" />
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/Program.cs b/PokemonGo/RocketAPI/Window/Program.cs
deleted file mode 100644
index 31d2a64..0000000
--- a/PokemonGo/RocketAPI/Window/Program.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    static class Program
-    {
-        /// <summary>
-        /// The main entry point for the application.
-        /// </summary>
-        [STAThread]
-        static void Main()
-        {
-            Application.EnableVisualStyles();
-            Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new MainForm());
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/Properties/Resources.resx b/PokemonGo/RocketAPI/Window/Properties/Resources.resx
deleted file mode 100644
index 1232c22..0000000
--- a/PokemonGo/RocketAPI/Window/Properties/Resources.resx
+++ /dev/null
@@ -1,574 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
-  <data name="Pokemon_1" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_10" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_10.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_100" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_100.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_101" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_101.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_102" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_102.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_103" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_103.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_104" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_104.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_105" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_105.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_106" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_106.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_107" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_107.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_108" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_108.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_109" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_109.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_11" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_110" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_110.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_111" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_111.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_112" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_112.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_113" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_113.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_114" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_114.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_115" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_115.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_116" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_116.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_117" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_117.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_118" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_118.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_119" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_119.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_12" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_120" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_120.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_121" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_121.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_122" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_122.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_123" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_123.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_124" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_124.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_125" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_125.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_126" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_126.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_127" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_127.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_128" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_128.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_129" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_129.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_13" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_13.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_130" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_130.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_131" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_131.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_132" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_132.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_133" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_133.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_134" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_134.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_135" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_135.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_136" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_136.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_137" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_137.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_138" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_138.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_139" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_139.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_14" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_14.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_140" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_140.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_141" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_141.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_142" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_142.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_143" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_143.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_144" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_144.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_145" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_145.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_146" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_146.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_147" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_147.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_148" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_148.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_149" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_149.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_15" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_15.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_150" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_150.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_151" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_151.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_17" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_17.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_18" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_18.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_19" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_19.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_2" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_20" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_21" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_21.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_22" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_22.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_23" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_23.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_24" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_25" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_25.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_26" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_26.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_27" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_27.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_28" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_28.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_29" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_29.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_3" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_30" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_31" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_31.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_33" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_33.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_34" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_34.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_35" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_35.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_36" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_36.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_37" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_37.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_38" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_38.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_39" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_39.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_4" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_40" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_41" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_41.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_42" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_42.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_43" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_43.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_44" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_44.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_45" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_45.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_46" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_46.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_47" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_47.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_49" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_49.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_5" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_50" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_50.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_51" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_51.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_52" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_52.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_53" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_53.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_54" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_54.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_55" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_55.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_56" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_56.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_57" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_57.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_58" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_58.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_59" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_59.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_6" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_6.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_60" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_61" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_61.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_62" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_62.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_63" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_63.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_65" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_65.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_66" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_66.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_67" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_67.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_68" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_68.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_69" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_69.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_7" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_7.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_70" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_70.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_71" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_71.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_72" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_72.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_73" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_73.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_74" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_74.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_75" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_75.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_76" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_76.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_77" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_77.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_78" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_78.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_79" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_79.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_8" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_80" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_81" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_81.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_82" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_82.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_83" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_83.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_84" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_84.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_85" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_85.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_86" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_86.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_87" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_87.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_88" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_88.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_89" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_89.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_9" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_9.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_90" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_90.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_91" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_91.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_92" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_92.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_93" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_93.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_94" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_94.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_95" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_95.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_97" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_97.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_98" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_98.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-  <data name="Pokemon_99" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>..\img\Pokemon_99.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/Properties/Settings.Designer.cs b/PokemonGo/RocketAPI/Window/Properties/Settings.Designer.cs
deleted file mode 100644
index cd1bc5c..0000000
--- a/PokemonGo/RocketAPI/Window/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace PokemonGo.RocketAPI.Window.Properties
-{
-
-
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
-    {
-
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-        public static Settings Default
-        {
-            get
-            {
-                return defaultInstance;
-            }
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/Properties/Settings.settings b/PokemonGo/RocketAPI/Window/Properties/Settings.settings
deleted file mode 100644
index 3964565..0000000
--- a/PokemonGo/RocketAPI/Window/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
-  <Profiles>
-    <Profile Name="(Default)" />
-  </Profiles>
-  <Settings />
-</SettingsFile>
diff --git a/PokemonGo/RocketAPI/Window/RouteOptimizer.cs b/PokemonGo/RocketAPI/Window/RouteOptimizer.cs
deleted file mode 100644
index 8b4f343..0000000
--- a/PokemonGo/RocketAPI/Window/RouteOptimizer.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-using GMap.NET;
-using GMap.NET.WindowsForms;
-using PokemonGo.RocketAPI.GeneratedCode;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public static class RouteOptimizer
-    {
-        public static List<FortData> Optimize(FortData[] pokeStops, LatLong latlng, GMapOverlay routeOverlay)
-        {
-            List<FortData> optimizedRoute = new List<FortData>(pokeStops);
-
-            // NN
-            FortData NN = FindNN(optimizedRoute, latlng.Latitude, latlng.Longitude);
-            optimizedRoute.Remove(NN);
-            optimizedRoute.Insert(0, NN);
-            for (int i = 1; i < pokeStops.Length; i++)
-            {
-                NN = FindNN(optimizedRoute.Skip(i), NN.Latitude, NN.Longitude);
-                optimizedRoute.Remove(NN);
-                optimizedRoute.Insert(i, NN);
-                Visualize(optimizedRoute, routeOverlay);
-            }
-
-            // 2-Opt
-            bool isOptimized;
-            do
-            {
-                optimizedRoute = Optimize2Opt(optimizedRoute, out isOptimized);
-                Visualize(optimizedRoute, routeOverlay);
-            }
-            while (isOptimized);
-
-            return optimizedRoute;
-        }
-
-        private static void Visualize(List<FortData> pokeStops, GMapOverlay routeOverlay)
-        {
-            MainForm.synchronizationContext.Post(new SendOrPostCallback(o =>
-            {
-                List<FortData> p = new List<FortData>((List<FortData>)o);
-                routeOverlay.Markers.Clear();
-                List<PointLatLng> routePoint = (from pokeStop in p where pokeStop != null select new PointLatLng(pokeStop.Latitude, pokeStop.Longitude)).ToList();
-                routeOverlay.Routes.Clear();
-                routeOverlay.Routes.Add(new GMapRoute(routePoint, "Walking Path"));
-            }), pokeStops);
-        }
-
-        private static List<FortData> Optimize2Opt(List<FortData> pokeStops, out bool isOptimized)
-        {
-            int n = pokeStops.Count;
-            float bestGain = 0;
-            int bestI = -1;
-            int bestJ = -1;
-
-            for (int ai = 0; ai < n; ai++)
-            {
-                for (int ci = 0; ci < n; ci++)
-                {
-                    int bi = (ai + 1) % n;
-                    int di = (ci + 1) % n;
-
-                    FortData a = pokeStops[ai];
-                    FortData b = pokeStops[bi];
-                    FortData c = pokeStops[ci];
-                    FortData d = pokeStops[di];
-
-                    float ab = GetDistance(a, b);
-                    float cd = GetDistance(c, d);
-                    float ac = GetDistance(a, c);
-                    float bd = GetDistance(b, d);
-
-                    if (ci != ai && ci != bi)
-                    {
-                        float gain = (ab + cd) - (ac + bd);
-                        if (gain > bestGain)
-                        {
-                            bestGain = gain;
-                            bestI = bi;
-                            bestJ = ci;
-                        }
-                    }
-                }
-            }
-
-            if (bestI != -1)
-            {
-                List<FortData> optimizedRoute;
-                if (bestI > bestJ)
-                {
-                    optimizedRoute = new List<FortData>();
-                    optimizedRoute.Add(pokeStops[0]);
-                    optimizedRoute.AddRange(pokeStops.Skip(bestI));
-                    optimizedRoute.Reverse(1, n - bestI);
-                    optimizedRoute.AddRange(pokeStops.GetRange(bestJ + 1, bestI - bestJ - 1));
-                    optimizedRoute.AddRange(pokeStops.GetRange(1, bestJ));
-                    optimizedRoute.Reverse(n - bestJ, bestJ);
-                }
-                else if (bestI == 0)
-                {
-                    optimizedRoute = new List<FortData>(pokeStops);
-                    optimizedRoute.Reverse(bestJ + 1, n - bestJ - 1);
-                }
-                else
-                {
-                    optimizedRoute = new List<FortData>(pokeStops);
-                    optimizedRoute.Reverse(bestI, bestJ - bestI + 1);
-                }
-
-                isOptimized = true;
-                return optimizedRoute;
-            }
-            isOptimized = false;
-            return pokeStops;
-        }
-
-        private static FortData FindNN(IEnumerable<FortData> pokeStops, double cLatitude, double cLongitude)
-        {
-            return pokeStops.OrderBy(p => GetDistance(cLatitude, cLongitude, p.Latitude, p.Longitude)).First();
-        }
-
-        private static float GetDistance(FortData a, FortData b)
-        {
-            return GetDistance(a.Latitude, a.Longitude, b.Latitude, b.Longitude);
-        }
-
-        private static float GetDistance(double lat1, double lng1, double lat2, double lng2)
-        {
-            double R = 6371e3;
-            Func<double, float> toRad = x => (float)(x * (Math.PI / 180));
-            lat1 = toRad(lat1);
-            lat2 = toRad(lat2);
-            float dLng = toRad(lng2 - lng1);
-
-            return (float)(Math.Acos(Math.Sin(lat1) * Math.Sin(lat2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Cos(dLng)) * R);
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/S2GMapDrawer.cs b/PokemonGo/RocketAPI/Window/S2GMapDrawer.cs
deleted file mode 100644
index 7fc3371..0000000
--- a/PokemonGo/RocketAPI/Window/S2GMapDrawer.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using Google.Common.Geometry;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using GMap.NET.WindowsForms;
-using GMap.NET.WindowsForms.Markers;
-using GMap.NET;
-using System.Drawing;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    class S2GMapDrawer
-    {
-        public static void DrawS2Cells(List<ulong> cellsIds, GMapOverlay mapLayer)
-        {
-            for (int i=0; i<cellsIds.Count; i++)
-            {
-                S2CellId cellId = new S2CellId(cellsIds[i]);
-                S2Cell cell = new S2Cell(cellId);
-
-                List<PointLatLng> points = new List<PointLatLng>();
-                for (int j=0; j<4; j++)
-                {
-                    S2LatLng point = new S2LatLng(cell.GetVertex(j));
-                    points.Add(new PointLatLng(point.LatDegrees, point.LngDegrees));
-                }
-                GMapPolygon polygon = new GMapPolygon(points, "mypolygon");
-                polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
-                polygon.Stroke = new Pen(Color.Red, 1);
-                mapLayer.Polygons.Add(polygon);
-            }
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/Settings.cs b/PokemonGo/RocketAPI/Window/Settings.cs
deleted file mode 100644
index 5bbbf9f..0000000
--- a/PokemonGo/RocketAPI/Window/Settings.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-#region
-
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Globalization;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using AllEnum;
-using PokemonGo.RocketAPI.Enums;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Window
-{
-    public class Settings : ISettings
-    {
-        private static volatile Settings _instance;
-        private static readonly object SyncRoot = new object();
-
-        public static Settings Instance
-        {
-            get
-            {
-                if (_instance != null)
-                    return _instance;
-
-                lock (SyncRoot)
-                {
-                    if (_instance == null)
-                        _instance = new Settings();
-                }
-
-                return _instance;
-            }
-        }
-
-        public void Reload()
-        {
-            ConfigurationManager.RefreshSection("appSettings");
-        }
-
-        /// <summary>
-        ///     Don't touch. User settings are in Console/App.config
-        /// </summary>
-        public string TransferType => GetSetting() != string.Empty ? GetSetting() : "none";
-        public int TransferCPThreshold => GetSetting() != string.Empty ? int.Parse(GetSetting(), CultureInfo.InvariantCulture) : 0;
-        public int TransferIVThreshold => GetSetting() != string.Empty ? int.Parse(GetSetting(), CultureInfo.InvariantCulture) : 0;
-        public int TravelSpeed => GetSetting() != string.Empty ? int.Parse(GetSetting(), CultureInfo.InvariantCulture) : 60;
-        public int ImageSize => GetSetting() != string.Empty ? int.Parse(GetSetting(), CultureInfo.InvariantCulture) : 50;
-        public bool EvolveAllGivenPokemons => GetSetting() != string.Empty && Convert.ToBoolean(GetSetting(), CultureInfo.InvariantCulture);
-        public bool CatchPokemon => GetSetting() != string.Empty && Convert.ToBoolean(GetSetting(), CultureInfo.InvariantCulture);
-
-
-        public AuthType AuthType
-        {
-            get
-            {
-                return (GetSetting() != string.Empty ? GetSetting() : "Ptc") == "Ptc" ? AuthType.Ptc : AuthType.Google;
-            }
-            set { SetSetting(value.ToString()); }
-        }
-
-        public string PtcUsername => GetSetting() != string.Empty ? GetSetting() : "username";
-        public string PtcPassword => GetSetting() != string.Empty ? GetSetting() : "password";
-        public string Email => GetSetting() != string.Empty ? GetSetting() : "Email";
-        public string Password => GetSetting() != string.Empty ? GetSetting() : "Password";
-
-        public double DefaultLatitude
-        {
-            get { return GetSetting() != string.Empty ? double.Parse(GetSetting(), CultureInfo.InvariantCulture) : 51.22640; }
-            set { SetSetting(value); }
-        }
-
-
-        public double DefaultLongitude
-        {
-            get { return GetSetting() != string.Empty ? double.Parse(GetSetting(), CultureInfo.InvariantCulture) : 6.77874; }
-            set { SetSetting(value); }
-        }
-
-
-        public string LevelOutput => GetSetting() != string.Empty ? GetSetting() : "time";
-
-        public int LevelTimeInterval => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 600;
-
-        public bool Recycler => GetSetting() != string.Empty && Convert.ToBoolean(GetSetting(), CultureInfo.InvariantCulture);
-
-        private int MaxItemPokeBall => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemGreatBall => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemUltraBall => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemMasterBall => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemRazzBerry => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemRevive => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemPotion => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemSuperPotion => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemHyperPotion => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-        private int MaxItemMaxPotion => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 500;
-
-        ICollection<KeyValuePair<ItemId, int>> ISettings.ItemRecycleFilter => new[]
-        {
-            new KeyValuePair<ItemId, int>(ItemId.ItemPokeBall, MaxItemPokeBall),
-            new KeyValuePair<ItemId, int>(ItemId.ItemGreatBall, MaxItemGreatBall),
-            new KeyValuePair<ItemId, int>(ItemId.ItemUltraBall, MaxItemUltraBall),
-            new KeyValuePair<ItemId, int>(ItemId.ItemMasterBall, MaxItemMasterBall),
-            new KeyValuePair<ItemId, int>(ItemId.ItemRazzBerry, MaxItemRazzBerry),
-            new KeyValuePair<ItemId, int>(ItemId.ItemRevive, MaxItemRevive),
-            new KeyValuePair<ItemId, int>(ItemId.ItemPotion, MaxItemPotion),
-            new KeyValuePair<ItemId, int>(ItemId.ItemSuperPotion, MaxItemSuperPotion),
-            new KeyValuePair<ItemId, int>(ItemId.ItemHyperPotion, MaxItemHyperPotion),
-            new KeyValuePair<ItemId, int>(ItemId.ItemMaxPotion, MaxItemMaxPotion)
-        };
-
-        public int RecycleItemsInterval => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 60;
-
-        public string Language => GetSetting() != string.Empty ? GetSetting() : "english";
-
-        public string RazzBerryMode => GetSetting() != string.Empty ? GetSetting() : "cp";
-
-        public double RazzBerrySetting => GetSetting() != string.Empty ? double.Parse(GetSetting(), CultureInfo.InvariantCulture) : 500;
-
-        public string GoogleRefreshToken
-        {
-            get { return GetSetting() != string.Empty ? GetSetting() : string.Empty; }
-            set { SetSetting(value); }
-        }
-
-        private string GetSetting([CallerMemberName] string key = null)
-        {
-            return ConfigurationManager.AppSettings[key];
-        }
-
-        public void SetSetting(string value, [CallerMemberName] string key = null)
-        {
-            var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
-            if (key != null)
-            {
-                configFile.AppSettings.Settings[key].Value = value;
-            }
-            configFile.Save(ConfigurationSaveMode.Full);
-        }
-
-        public void SetSetting(double value, [CallerMemberName] string key = null)
-        {
-            CultureInfo customCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
-            customCulture.NumberFormat.NumberDecimalSeparator = ".";
-            System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
-            var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
-            if (key != null) configFile.AppSettings.Settings[key].Value = value.ToString();
-            configFile.Save(ConfigurationSaveMode.Full);
-        }
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs b/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
deleted file mode 100644
index 8976aa9..0000000
--- a/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
+++ /dev/null
@@ -1,500 +0,0 @@
-namespace PokemonGo.RocketAPI.Window
-{
-    partial class SettingsForm
-    {
-        /// <summary>
-        /// Required designer variable.
-        /// </summary>
-        private System.ComponentModel.IContainer components = null;
-
-        /// <summary>
-        /// Clean up any resources being used.
-        /// </summary>
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// <summary>
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// </summary>
-        private void InitializeComponent()
-        {
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
-            this.authTypeLabel = new System.Windows.Forms.Label();
-            this.authTypeCb = new System.Windows.Forms.ComboBox();
-            this.UserLabel = new System.Windows.Forms.Label();
-            this.PasswordLabel = new System.Windows.Forms.Label();
-            this.latLabel = new System.Windows.Forms.Label();
-            this.longiLabel = new System.Windows.Forms.Label();
-            this.label1 = new System.Windows.Forms.Label();
-            this.label2 = new System.Windows.Forms.Label();
-            this.label3 = new System.Windows.Forms.Label();
-            this.label4 = new System.Windows.Forms.Label();
-            this.label5 = new System.Windows.Forms.Label();
-            this.UserLoginBox = new System.Windows.Forms.TextBox();
-            this.UserPasswordBox = new System.Windows.Forms.TextBox();
-            this.latitudeText = new System.Windows.Forms.TextBox();
-            this.longitudeText = new System.Windows.Forms.TextBox();
-            this.razzmodeCb = new System.Windows.Forms.ComboBox();
-            this.razzSettingText = new System.Windows.Forms.TextBox();
-            this.transferTypeCb = new System.Windows.Forms.ComboBox();
-            this.transferCpThresText = new System.Windows.Forms.TextBox();
-            this.evolveAllChk = new System.Windows.Forms.CheckBox();
-            this.saveBtn = new System.Windows.Forms.Button();
-            this.gMapControl1 = new GMap.NET.WindowsForms.GMapControl();
-            this.groupBox1 = new System.Windows.Forms.GroupBox();
-            this.FindAdressButton = new System.Windows.Forms.Button();
-            this.AdressBox = new System.Windows.Forms.TextBox();
-            this.trackBar = new System.Windows.Forms.TrackBar();
-            this.panel1 = new System.Windows.Forms.Panel();
-            this.TravelSpeedBox = new System.Windows.Forms.TextBox();
-            this.CatchPokemonBox = new System.Windows.Forms.CheckBox();
-            this.CatchPokemonText = new System.Windows.Forms.Label();
-            this.transferIVThresText = new System.Windows.Forms.TextBox();
-            this.TravelSpeedText = new System.Windows.Forms.Label();
-            this.label6 = new System.Windows.Forms.Label();
-            this.groupBox1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.trackBar)).BeginInit();
-            this.panel1.SuspendLayout();
-            this.SuspendLayout();
-            //
-            // authTypeLabel
-            //
-            this.authTypeLabel.AutoSize = true;
-            this.authTypeLabel.Location = new System.Drawing.Point(3, 7);
-            this.authTypeLabel.Name = "authTypeLabel";
-            this.authTypeLabel.Size = new System.Drawing.Size(71, 12);
-            this.authTypeLabel.TabIndex = 0;
-            this.authTypeLabel.Text = "Login Type:";
-            this.authTypeLabel.Click += new System.EventHandler(this.authTypeLabel_Click);
-            //
-            // authTypeCb
-            //
-            this.authTypeCb.FormattingEnabled = true;
-            this.authTypeCb.Items.AddRange(new object[] {
-            "google",
-            "Ptc"});
-            this.authTypeCb.Location = new System.Drawing.Point(82, 4);
-            this.authTypeCb.Name = "authTypeCb";
-            this.authTypeCb.Size = new System.Drawing.Size(136, 20);
-            this.authTypeCb.TabIndex = 1;
-            this.authTypeCb.SelectedIndexChanged += new System.EventHandler(this.authTypeCb_SelectedIndexChanged);
-            //
-            // UserLabel
-            //
-            this.UserLabel.AutoSize = true;
-            this.UserLabel.Location = new System.Drawing.Point(3, 33);
-            this.UserLabel.Name = "UserLabel";
-            this.UserLabel.Size = new System.Drawing.Size(59, 12);
-            this.UserLabel.TabIndex = 2;
-            this.UserLabel.Text = "Username:";
-            //
-            // PasswordLabel
-            //
-            this.PasswordLabel.AutoSize = true;
-            this.PasswordLabel.Location = new System.Drawing.Point(3, 57);
-            this.PasswordLabel.Name = "PasswordLabel";
-            this.PasswordLabel.Size = new System.Drawing.Size(59, 12);
-            this.PasswordLabel.TabIndex = 3;
-            this.PasswordLabel.Text = "Password:";
-            //
-            // latLabel
-            //
-            this.latLabel.AutoSize = true;
-            this.latLabel.Location = new System.Drawing.Point(3, 81);
-            this.latLabel.Name = "latLabel";
-            this.latLabel.Size = new System.Drawing.Size(59, 12);
-            this.latLabel.TabIndex = 4;
-            this.latLabel.Text = "Latitude:";
-            //
-            // longiLabel
-            //
-            this.longiLabel.AutoSize = true;
-            this.longiLabel.Location = new System.Drawing.Point(3, 105);
-            this.longiLabel.Name = "longiLabel";
-            this.longiLabel.Size = new System.Drawing.Size(65, 12);
-            this.longiLabel.TabIndex = 5;
-            this.longiLabel.Text = "Longitude:";
-            //
-            // label1
-            //
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(3, 129);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(95, 12);
-            this.label1.TabIndex = 6;
-            this.label1.Text = "Razzberry Mode:";
-            //
-            // label2
-            //
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(3, 178);
-            this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(89, 12);
-            this.label2.TabIndex = 7;
-            this.label2.Text = "Transfer Type:";
-            //
-            // label3
-            //
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(3, 296);
-            this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(95, 12);
-            this.label3.TabIndex = 8;
-            this.label3.Text = "Evolve Pokemon:";
-            this.label3.Click += new System.EventHandler(this.label3_Click);
-            //
-            // label4
-            //
-            this.label4.AutoSize = true;
-            this.label4.Location = new System.Drawing.Point(3, 203);
-            this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(83, 12);
-            this.label4.TabIndex = 9;
-            this.label4.Text = "CP Threshold:";
-            //
-            // label5
-            //
-            this.label5.AutoSize = true;
-            this.label5.Location = new System.Drawing.Point(3, 154);
-            this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(113, 12);
-            this.label5.TabIndex = 10;
-            this.label5.Text = "Razzberry Setting:";
-            //
-            // UserLoginBox
-            //
-            this.UserLoginBox.Location = new System.Drawing.Point(82, 31);
-            this.UserLoginBox.Name = "UserLoginBox";
-            this.UserLoginBox.Size = new System.Drawing.Size(136, 21);
-            this.UserLoginBox.TabIndex = 11;
-            //
-            // UserPasswordBox
-            //
-            this.UserPasswordBox.Location = new System.Drawing.Point(82, 57);
-            this.UserPasswordBox.Name = "UserPasswordBox";
-            this.UserPasswordBox.PasswordChar = '*';
-            this.UserPasswordBox.Size = new System.Drawing.Size(136, 21);
-            this.UserPasswordBox.TabIndex = 12;
-            //
-            // latitudeText
-            //
-            this.latitudeText.Location = new System.Drawing.Point(118, 79);
-            this.latitudeText.Name = "latitudeText";
-            this.latitudeText.ReadOnly = true;
-            this.latitudeText.Size = new System.Drawing.Size(100, 21);
-            this.latitudeText.TabIndex = 13;
-            //
-            // longitudeText
-            //
-            this.longitudeText.Location = new System.Drawing.Point(118, 103);
-            this.longitudeText.Name = "longitudeText";
-            this.longitudeText.ReadOnly = true;
-            this.longitudeText.Size = new System.Drawing.Size(100, 21);
-            this.longitudeText.TabIndex = 14;
-            //
-            // razzmodeCb
-            //
-            this.razzmodeCb.FormattingEnabled = true;
-            this.razzmodeCb.Items.AddRange(new object[] {
-            "probability",
-            "cp"});
-            this.razzmodeCb.Location = new System.Drawing.Point(118, 127);
-            this.razzmodeCb.Name = "razzmodeCb";
-            this.razzmodeCb.Size = new System.Drawing.Size(100, 20);
-            this.razzmodeCb.TabIndex = 15;
-            //
-            // razzSettingText
-            //
-            this.razzSettingText.Location = new System.Drawing.Point(118, 152);
-            this.razzSettingText.Name = "razzSettingText";
-            this.razzSettingText.Size = new System.Drawing.Size(100, 21);
-            this.razzSettingText.TabIndex = 16;
-            this.razzSettingText.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.razzSettingText_KeyPress);
-            //
-            // transferTypeCb
-            //
-            this.transferTypeCb.FormattingEnabled = true;
-            this.transferTypeCb.Items.AddRange(new object[] {
-            "None",
-            "CP",
-            "IV",
-            "Leave Strongest",
-            "Duplicate",
-            "IV Duplicate",
-            "All"});
-            this.transferTypeCb.Location = new System.Drawing.Point(118, 176);
-            this.transferTypeCb.Name = "transferTypeCb";
-            this.transferTypeCb.Size = new System.Drawing.Size(100, 20);
-            this.transferTypeCb.TabIndex = 17;
-            this.transferTypeCb.SelectedIndexChanged += new System.EventHandler(this.transferTypeCb_SelectedIndexChanged);
-            //
-            // transferCpThresText
-            //
-            this.transferCpThresText.Location = new System.Drawing.Point(118, 202);
-            this.transferCpThresText.Name = "transferCpThresText";
-            this.transferCpThresText.Size = new System.Drawing.Size(100, 21);
-            this.transferCpThresText.TabIndex = 18;
-            this.transferCpThresText.TextChanged += new System.EventHandler(this.transferCpThresText_TextChanged);
-            //
-            // evolveAllChk
-            //
-            this.evolveAllChk.AutoSize = true;
-            this.evolveAllChk.Location = new System.Drawing.Point(118, 296);
-            this.evolveAllChk.Name = "evolveAllChk";
-            this.evolveAllChk.Size = new System.Drawing.Size(15, 14);
-            this.evolveAllChk.TabIndex = 19;
-            this.evolveAllChk.UseVisualStyleBackColor = true;
-            this.evolveAllChk.CheckedChanged += new System.EventHandler(this.evolveAllChk_CheckedChanged);
-            //
-            // saveBtn
-            //
-            this.saveBtn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.saveBtn.Location = new System.Drawing.Point(0, 315);
-            this.saveBtn.Name = "saveBtn";
-            this.saveBtn.Size = new System.Drawing.Size(218, 88);
-            this.saveBtn.TabIndex = 20;
-            this.saveBtn.Text = "Save";
-            this.saveBtn.UseVisualStyleBackColor = true;
-            this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click);
-            //
-            // gMapControl1
-            //
-            this.gMapControl1.BackColor = System.Drawing.SystemColors.Info;
-            this.gMapControl1.Bearing = 0F;
-            this.gMapControl1.CanDragMap = true;
-            this.gMapControl1.EmptyTileColor = System.Drawing.Color.Navy;
-            this.gMapControl1.GrayScaleMode = false;
-            this.gMapControl1.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow;
-            this.gMapControl1.LevelsKeepInMemmory = 5;
-            this.gMapControl1.Location = new System.Drawing.Point(18, 15);
-            this.gMapControl1.MarkersEnabled = true;
-            this.gMapControl1.MaxZoom = 2;
-            this.gMapControl1.MinZoom = 2;
-            this.gMapControl1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
-            this.gMapControl1.Name = "gMapControl1";
-            this.gMapControl1.NegativeMode = false;
-            this.gMapControl1.PolygonsEnabled = true;
-            this.gMapControl1.RetryLoadTile = 0;
-            this.gMapControl1.RoutesEnabled = true;
-            this.gMapControl1.ScaleMode = GMap.NET.WindowsForms.ScaleModes.Integer;
-            this.gMapControl1.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225)))));
-            this.gMapControl1.ShowTileGridLines = false;
-            this.gMapControl1.Size = new System.Drawing.Size(468, 358);
-            this.gMapControl1.TabIndex = 22;
-            this.gMapControl1.Zoom = 0D;
-            this.gMapControl1.Load += new System.EventHandler(this.gMapControl1_Load);
-            this.gMapControl1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gMapControl1_MouseClick);
-            //
-            // groupBox1
-            //
-            this.groupBox1.Controls.Add(this.FindAdressButton);
-            this.groupBox1.Controls.Add(this.AdressBox);
-            this.groupBox1.Controls.Add(this.trackBar);
-            this.groupBox1.Controls.Add(this.gMapControl1);
-            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.groupBox1.Location = new System.Drawing.Point(233, 8);
-            this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(480, 408);
-            this.groupBox1.TabIndex = 25;
-            this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Location";
-            //
-            // FindAdressButton
-            //
-            this.FindAdressButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-            this.FindAdressButton.Location = new System.Drawing.Point(355, 379);
-            this.FindAdressButton.Name = "FindAdressButton";
-            this.FindAdressButton.Size = new System.Drawing.Size(119, 24);
-            this.FindAdressButton.TabIndex = 25;
-            this.FindAdressButton.Text = "Find Location";
-            this.FindAdressButton.UseVisualStyleBackColor = true;
-            this.FindAdressButton.Click += new System.EventHandler(this.FindAdressButton_Click_1);
-            //
-            // AdressBox
-            //
-            this.AdressBox.ForeColor = System.Drawing.Color.Gray;
-            this.AdressBox.Location = new System.Drawing.Point(18, 379);
-            this.AdressBox.Name = "AdressBox";
-            this.AdressBox.Size = new System.Drawing.Size(331, 21);
-            this.AdressBox.TabIndex = 25;
-            this.AdressBox.Text = "Enter an address or a coordinate";
-            this.AdressBox.TextChanged += new System.EventHandler(this.AdressBox_TextChanged);
-            this.AdressBox.Enter += new System.EventHandler(this.AdressBox_Enter);
-            this.AdressBox.Leave += new System.EventHandler(this.AdressBox_Leave);
-            //
-            // trackBar
-            //
-            this.trackBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.trackBar.BackColor = System.Drawing.SystemColors.Info;
-            this.trackBar.Location = new System.Drawing.Point(432, 15);
-            this.trackBar.Name = "trackBar";
-            this.trackBar.Orientation = System.Windows.Forms.Orientation.Vertical;
-            this.trackBar.Size = new System.Drawing.Size(45, 96);
-            this.trackBar.TabIndex = 25;
-            this.trackBar.TickStyle = System.Windows.Forms.TickStyle.TopLeft;
-            this.trackBar.Scroll += new System.EventHandler(this.trackBar_Scroll);
-            //
-            // panel1
-            //
-            this.panel1.Controls.Add(this.TravelSpeedBox);
-            this.panel1.Controls.Add(this.CatchPokemonBox);
-            this.panel1.Controls.Add(this.CatchPokemonText);
-            this.panel1.Controls.Add(this.transferIVThresText);
-            this.panel1.Controls.Add(this.TravelSpeedText);
-            this.panel1.Controls.Add(this.label6);
-            this.panel1.Controls.Add(this.authTypeLabel);
-            this.panel1.Controls.Add(this.authTypeCb);
-            this.panel1.Controls.Add(this.UserLabel);
-            this.panel1.Controls.Add(this.PasswordLabel);
-            this.panel1.Controls.Add(this.saveBtn);
-            this.panel1.Controls.Add(this.latLabel);
-            this.panel1.Controls.Add(this.evolveAllChk);
-            this.panel1.Controls.Add(this.longiLabel);
-            this.panel1.Controls.Add(this.transferCpThresText);
-            this.panel1.Controls.Add(this.label1);
-            this.panel1.Controls.Add(this.transferTypeCb);
-            this.panel1.Controls.Add(this.label2);
-            this.panel1.Controls.Add(this.razzSettingText);
-            this.panel1.Controls.Add(this.label3);
-            this.panel1.Controls.Add(this.razzmodeCb);
-            this.panel1.Controls.Add(this.label4);
-            this.panel1.Controls.Add(this.longitudeText);
-            this.panel1.Controls.Add(this.label5);
-            this.panel1.Controls.Add(this.latitudeText);
-            this.panel1.Controls.Add(this.UserLoginBox);
-            this.panel1.Controls.Add(this.UserPasswordBox);
-            this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
-            this.panel1.Location = new System.Drawing.Point(9, 8);
-            this.panel1.Name = "panel1";
-            this.panel1.Size = new System.Drawing.Size(224, 408);
-            this.panel1.TabIndex = 26;
-            this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
-            //
-            // TravelSpeedBox
-            //
-            this.TravelSpeedBox.Location = new System.Drawing.Point(118, 251);
-            this.TravelSpeedBox.Name = "TravelSpeedBox";
-            this.TravelSpeedBox.Size = new System.Drawing.Size(100, 21);
-            this.TravelSpeedBox.TabIndex = 22;
-            this.TravelSpeedBox.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
-            this.TravelSpeedBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TravelSpeedBox_KeyPress);
-            //
-            // CatchPokemonBox
-            //
-            this.CatchPokemonBox.AutoSize = true;
-            this.CatchPokemonBox.Location = new System.Drawing.Point(118, 275);
-            this.CatchPokemonBox.Name = "CatchPokemonBox";
-            this.CatchPokemonBox.Size = new System.Drawing.Size(15, 14);
-            this.CatchPokemonBox.TabIndex = 26;
-            this.CatchPokemonBox.UseVisualStyleBackColor = true;
-            this.CatchPokemonBox.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
-            //
-            // CatchPokemonText
-            //
-            this.CatchPokemonText.AutoSize = true;
-            this.CatchPokemonText.Location = new System.Drawing.Point(3, 275);
-            this.CatchPokemonText.Name = "CatchPokemonText";
-            this.CatchPokemonText.Size = new System.Drawing.Size(89, 12);
-            this.CatchPokemonText.TabIndex = 25;
-            this.CatchPokemonText.Text = "Catch Pokemon:";
-            this.CatchPokemonText.Click += new System.EventHandler(this.label7_Click);
-            //
-            // transferIVThresText
-            //
-            this.transferIVThresText.Location = new System.Drawing.Point(118, 203);
-            this.transferIVThresText.Name = "transferIVThresText";
-            this.transferIVThresText.Size = new System.Drawing.Size(100, 21);
-            this.transferIVThresText.TabIndex = 24;
-            this.transferIVThresText.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
-            //
-            // TravelSpeedText
-            //
-            this.TravelSpeedText.AutoSize = true;
-            this.TravelSpeedText.Location = new System.Drawing.Point(3, 254);
-            this.TravelSpeedText.Name = "TravelSpeedText";
-            this.TravelSpeedText.Size = new System.Drawing.Size(113, 12);
-            this.TravelSpeedText.TabIndex = 23;
-            this.TravelSpeedText.Text = "Travel Speed km/h:";
-            //
-            // label6
-            //
-            this.label6.AutoSize = true;
-            this.label6.Location = new System.Drawing.Point(3, 203);
-            this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(83, 12);
-            this.label6.TabIndex = 21;
-            this.label6.Text = "IV Threshold:";
-            this.label6.Click += new System.EventHandler(this.label6_Click);
-            //
-            // SettingsForm
-            //
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(722, 424);
-            this.Controls.Add(this.groupBox1);
-            this.Controls.Add(this.panel1);
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.MinimumSize = new System.Drawing.Size(630, 334);
-            this.Name = "SettingsForm";
-            this.Padding = new System.Windows.Forms.Padding(9, 8, 9, 8);
-            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
-            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-            this.Text = "Settings";
-            this.Load += new System.EventHandler(this.SettingsForm_Load);
-            this.groupBox1.ResumeLayout(false);
-            this.groupBox1.PerformLayout();
-            ((System.ComponentModel.ISupportInitialize)(this.trackBar)).EndInit();
-            this.panel1.ResumeLayout(false);
-            this.panel1.PerformLayout();
-            this.ResumeLayout(false);
-
-        }
-
-        #endregion
-
-        private System.Windows.Forms.Label authTypeLabel;
-        private System.Windows.Forms.ComboBox authTypeCb;
-        private System.Windows.Forms.Label UserLabel;
-        private System.Windows.Forms.Label PasswordLabel;
-        private System.Windows.Forms.Label latLabel;
-        private System.Windows.Forms.Label longiLabel;
-        private System.Windows.Forms.Label label1;
-        private System.Windows.Forms.Label label2;
-        private System.Windows.Forms.Label label3;
-        private System.Windows.Forms.Label label4;
-        private System.Windows.Forms.Label label5;
-        private System.Windows.Forms.TextBox UserLoginBox;
-        private System.Windows.Forms.TextBox UserPasswordBox;
-        private System.Windows.Forms.TextBox latitudeText;
-        private System.Windows.Forms.TextBox longitudeText;
-        private System.Windows.Forms.ComboBox razzmodeCb;
-        private System.Windows.Forms.TextBox razzSettingText;
-        private System.Windows.Forms.ComboBox transferTypeCb;
-        private System.Windows.Forms.TextBox transferCpThresText;
-        private System.Windows.Forms.CheckBox evolveAllChk;
-        private System.Windows.Forms.Button saveBtn;
-        private GMap.NET.WindowsForms.GMapControl gMapControl1;
-        private System.Windows.Forms.GroupBox groupBox1;
-        private System.Windows.Forms.Panel panel1;
-        private System.Windows.Forms.TrackBar trackBar;
-        private System.Windows.Forms.TextBox TravelSpeedBox;
-        private System.Windows.Forms.Label label6;
-        private System.Windows.Forms.Label TravelSpeedText;
-        private System.Windows.Forms.TextBox transferIVThresText;
-        private System.Windows.Forms.TextBox AdressBox;
-        private System.Windows.Forms.Button FindAdressButton;
-        private System.Windows.Forms.CheckBox CatchPokemonBox;
-        private System.Windows.Forms.Label CatchPokemonText;
-    }
-}
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.cs b/PokemonGo/RocketAPI/Window/SettingsForm.cs
deleted file mode 100644
index 8e5f588..0000000
--- a/PokemonGo/RocketAPI/Window/SettingsForm.cs
+++ /dev/null
@@ -1,290 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Linq;
-using System.Reflection;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using GMap.NET.MapProviders;
-using GMap.NET;
-using System.Configuration;
-using System.Globalization;
-
-namespace PokemonGo.RocketAPI.Window
-{
-    partial class SettingsForm : Form
-    {
-        public SettingsForm()
-        {
-            InitializeComponent();
-        }
-
-        private void SettingsForm_Load(object sender, EventArgs e)
-        {
-
-            authTypeCb.Text = Settings.Instance.AuthType.ToString();
-            if (authTypeCb.Text == "google")
-            {
-                UserLoginBox.Text = Settings.Instance.Email.ToString();
-                UserPasswordBox.Text = Settings.Instance.Password.ToString();
-            } else
-            {
-                UserLoginBox.Text = Settings.Instance.PtcUsername.ToString();
-                UserPasswordBox.Text = Settings.Instance.PtcPassword.ToString();
-            }
-            latitudeText.Text = Settings.Instance.DefaultLatitude.ToString();
-            longitudeText.Text = Settings.Instance.DefaultLongitude.ToString();
-            razzmodeCb.Text = Settings.Instance.RazzBerryMode;
-            razzSettingText.Text = Settings.Instance.RazzBerrySetting.ToString();
-            transferTypeCb.Text = Settings.Instance.TransferType;
-            transferCpThresText.Text = Settings.Instance.TransferCPThreshold.ToString();
-            transferIVThresText.Text = Settings.Instance.TransferIVThreshold.ToString();
-            evolveAllChk.Checked = Settings.Instance.EvolveAllGivenPokemons;
-            CatchPokemonBox.Checked = Settings.Instance.CatchPokemon;
-            TravelSpeedBox.Text = Settings.Instance.TravelSpeed.ToString();
-           // ImageSizeBox.Text = Settings.Instance.ImageSize.ToString();
-            // Initialize map:
-            //use google provider
-            gMapControl1.MapProvider = GoogleMapProvider.Instance;
-            //get tiles from server only
-            gMapControl1.Manager.Mode = AccessMode.ServerOnly;
-            //not use proxy
-            GMapProvider.WebProxy = null;
-            //center map on moscow
-            string lat = ConfigurationManager.AppSettings["DefaultLatitude"];
-            string longit = ConfigurationManager.AppSettings["DefaultLongitude"];
-            lat.Replace(',', '.');
-            longit.Replace(',', '.');
-            gMapControl1.Position = new PointLatLng(double.Parse(lat.Replace(",", "."), CultureInfo.InvariantCulture), double.Parse(longit.Replace(",", "."), CultureInfo.InvariantCulture));
-
-
-
-            //zoom min/max; default both = 2
-            gMapControl1.DragButton = MouseButtons.Left;
-
-            gMapControl1.CenterPen = new Pen(Color.Red, 2);
-            gMapControl1.MinZoom = trackBar.Maximum = 1;
-            gMapControl1.MaxZoom = trackBar.Maximum = 20;
-            trackBar.Value = 10;
-
-            //set zoom
-            gMapControl1.Zoom = trackBar.Value;
-
-            //disable map focus
-            gMapControl1.DisableFocusOnMouseEnter = true;
-        }
-
-        private void saveBtn_Click(object sender, EventArgs e)
-        {
-            Settings.Instance.SetSetting(authTypeCb.Text, "AuthType");
-            if (authTypeCb.Text == "google")
-            {
-                Settings.Instance.SetSetting(UserLoginBox.Text, "Email");
-                Settings.Instance.SetSetting(UserPasswordBox.Text, "Password");
-            } else
-            {
-                Settings.Instance.SetSetting(UserLoginBox.Text, "PtcUsername");
-                Settings.Instance.SetSetting(UserPasswordBox.Text, "PtcPassword");
-            }
-            Settings.Instance.SetSetting(latitudeText.Text.Replace(',', '.'), "DefaultLatitude");
-            Settings.Instance.SetSetting(longitudeText.Text.Replace(',', '.'), "DefaultLongitude");
-
-            string lat = ConfigurationManager.AppSettings["DefaultLatitude"];
-            string longit = ConfigurationManager.AppSettings["DefaultLongitude"];
-            lat.Replace(',', '.');
-            longit.Replace(',', '.');
-
-
-            Settings.Instance.SetSetting(razzmodeCb.Text, "RazzBerryMode");
-            Settings.Instance.SetSetting(razzSettingText.Text, "RazzBerrySetting");
-            Settings.Instance.SetSetting(transferTypeCb.Text, "TransferType");
-            Settings.Instance.SetSetting(transferCpThresText.Text, "TransferCPThreshold");
-            Settings.Instance.SetSetting(transferIVThresText.Text, "TransferIVThreshold");
-            Settings.Instance.SetSetting(TravelSpeedBox.Text, "TravelSpeed");
-            //Settings.Instance.SetSetting(ImageSizeBox.Text, "ImageSize");
-            Settings.Instance.SetSetting(evolveAllChk.Checked ? "true" : "false", "EvolveAllGivenPokemons");
-            Settings.Instance.SetSetting(CatchPokemonBox.Checked ? "true" : "false", "CatchPokemon");
-            Settings.Instance.Reload();
-
-            MainForm.ResetMap();
-            Close();
-        }
-
-        private void authTypeCb_SelectedIndexChanged(object sender, EventArgs e)
-        {
-            if (authTypeCb.Text == "google")
-            {
-                UserLabel.Text = "Email:";
-            }
-            else
-            {
-                UserLabel.Text = "Username:";
-            }
-        }
-
-        private void gMapControl1_MouseClick(object sender, MouseEventArgs e)
-        {
-            Point localCoordinates = e.Location;
-            gMapControl1.Position = gMapControl1.FromLocalToLatLng(localCoordinates.X, localCoordinates.Y);
-
-            if (e.Clicks >= 2)
-            {
-                gMapControl1.Zoom += 5;
-            }
-
-            double X = Math.Round(gMapControl1.Position.Lng, 6);
-            double Y = Math.Round(gMapControl1.Position.Lat, 6);
-            string longitude = X.ToString();
-            string latitude = Y.ToString();
-            latitudeText.Text = latitude;
-            longitudeText.Text = longitude;
-        }
-
-        private void trackBar_Scroll(object sender, EventArgs e)
-        {
-            gMapControl1.Zoom = trackBar.Value;
-        }
-
-        private void FindAdressButton_Click(object sender, EventArgs e)
-        {
-            gMapControl1.SetPositionByKeywords(AdressBox.Text);
-            gMapControl1.Zoom = 15;
-        }
-
-        private void authTypeLabel_Click(object sender, EventArgs e)
-        {
-
-        }
-
-        private void textBox1_TextChanged(object sender, EventArgs e)
-        {
-
-        }
-
-        private void label6_Click(object sender, EventArgs e)
-        {
-
-        }
-
-        private void transferCpThresText_TextChanged(object sender, EventArgs e)
-        {
-        }
-
-        private void transferTypeCb_SelectedIndexChanged(object sender, EventArgs e)
-        {
-            if (transferTypeCb.Text == "CP")
-            {
-                label4.Visible = true;
-                transferCpThresText.Visible = true;
-            }
-            else
-            {
-                label4.Visible = false;
-                transferCpThresText.Visible = false;
-
-            }
-
-            if (transferTypeCb.Text == "IV")
-            {
-                label6.Visible = true;
-                transferIVThresText.Visible = true;
-            }
-            else
-            {
-                label6.Visible = false;
-                transferIVThresText.Visible = false;
-
-            }
-
-        }
-
-        private void textBox2_TextChanged(object sender, EventArgs e)
-        {
-
-        }
-
-        private void gMapControl1_Load(object sender, EventArgs e)
-        {
-
-        }
-
-        private void FindAdressButton_Click_1(object sender, EventArgs e)
-        {
-            gMapControl1.SetPositionByKeywords(AdressBox.Text);
-            gMapControl1.Zoom = 15;
-            double X = Math.Round(gMapControl1.Position.Lng, 6);
-            double Y = Math.Round(gMapControl1.Position.Lat, 6);
-            string longitude = X.ToString();
-            string latitude = Y.ToString();
-            latitudeText.Text = latitude;
-            longitudeText.Text = longitude;
-        }
-
-        private void panel1_Paint(object sender, PaintEventArgs e)
-        {
-
-        }
-
-        private void label3_Click(object sender, EventArgs e)
-        {
-
-        }
-
-        private void evolveAllChk_CheckedChanged(object sender, EventArgs e)
-        {
-
-        }
-
-        private void label7_Click(object sender, EventArgs e)
-        {
-
-        }
-
-        private void checkBox1_CheckedChanged(object sender, EventArgs e)
-        {
-
-        }
-
-        private void TravelSpeedBox_KeyPress(object sender, KeyPressEventArgs e)
-        {
-            char ch = e.KeyChar;
-            if (!Char.IsDigit(ch) && ch != 8)
-            {
-                e.Handled = true;
-            }
-        }
-
-        private void razzSettingText_KeyPress(object sender, KeyPressEventArgs e)
-        {
-            char ch = e.KeyChar;
-            if (!Char.IsDigit(ch) && ch != 8)
-            {
-                e.Handled = true;
-            }
-        }
-
-        private void AdressBox_Leave(object sender, EventArgs e)
-        {
-            if (AdressBox.Text.Length == 0)
-            {
-                AdressBox.Text = "Enter an address or a coordinate";
-                AdressBox.ForeColor = SystemColors.GrayText;
-            }
-        }
-
-        private void AdressBox_Enter(object sender, EventArgs e)
-        {
-            if (AdressBox.Text == "Enter an address or a coordinate")
-            {
-                AdressBox.Text = "";
-                AdressBox.ForeColor = SystemColors.WindowText;
-            }
-        }
-
-        private void AdressBox_TextChanged(object sender, EventArgs e)
-        {
-
-        }
-    }
-}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.resx b/PokemonGo/RocketAPI/Window/SettingsForm.resx
deleted file mode 100644
index 2bf4da1..0000000
--- a/PokemonGo/RocketAPI/Window/SettingsForm.resx
+++ /dev/null
@@ -1,1545 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!--
-    Microsoft ResX Schema
-
-    Version 2.0
-
-    The primary goals of this format is to allow a simple XML format
-    that is mostly human readable. The generation and parsing of the
-    various data types are done through the TypeConverter classes
-    associated with the data types.
-
-    Example:
-
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-
-    There are any number of "resheader" rows that contain simple
-    name/value pairs.
-
-    Each data row contains a name, and value. The row also contains a
-    type or mimetype. Type corresponds to a .NET class that support
-    text/value conversion through the TypeConverter architecture.
-    Classes that don't support this are serialized and stored with the
-    mimetype set.
-
-    The mimetype is used for serialized objects, and tells the
-    ResXResourceReader how to depersist the object. This is currently not
-    extensible. For a given mimetype the value must be set accordingly:
-
-    Note - application/x-microsoft.net.object.binary.base64 is the format
-    that the ResXResourceWriter will generate, however the reader can
-    read any of the formats listed below.
-
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
-        IACoJQAA7h4AAICAAAABACAAKAgBAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA
-        AAAAAAAABAQEAAAAAAE8PDwcU1NTM1NTUzRTU1M0U1NTNFNTUzRTU1M0U1NTNFNTUzRTU1M0U1NTMzw8
-        PBwAAAACBAQEAAAAAAGLi4tQurq6yMXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXFxeTFxcXkxcXF5MXF
-        xeS6urrIjIyMUQAAAAF+fn4kycnJ0dzd3P/e3t7/3t7e/9/f3//f39//4ODg/+Dg4P/f4N//39/f/97e
-        3v/e3t7/3N3c/8nJydKAgIAlsbGxRtna2fHf4N//4OHg/+Hh4f/i4uL/4+Pj/+Pk4//j5OP/4+Pj/+Li
-        4v/h4uH/4OHg/9/g3//Z2tnysbGxR7a2tknc3dzz4uPi/+Pk4//l5eX/5ubm/+nq6f/n5+f/5ufm/+rq
-        6v/m5+b/5eXl/+Tk5P/i4+L/3N3c87a3tku3uLdJ39/f8+Xm5f/n5+f/6Ono/+jo6P+oqKj/WFhY/1JS
-        Uv+YmJj/5OXk/+np6f/n5+f/5ubm/9/g3/O4uLhLt7e3SeDg4PPn5+f/6Ono/+zt7P+lpaX/JCQk/2Vl
-        Zf9vb2//JSUl/4qKiv/r7Ov/6Ono/+fn5//g4ODzuLi4Sz4+PElNTUvzUFBO/1FRT/9TU1H/IyMi/3Fy
-        cv/q6ur/7e7t/5CQkP8dHRz/UFBO/1FRT/9QUE7/TU1L8z8/PksAABVJAAAa8wAAHf8AAB7/AAAf/wAA
-        DP+Kion/+fn5//r6+v+pqan/BgYP/wAAHv8AAB7/AAAd/wAAGvMCAhdLBgZ0SQgIj/MJCZv/Cgqh/woK
-        qP8FBWj/LS0v/6mppv+0tLL/Pz8+/wQEUv8KCqf/Cgqi/wkJnP8JCZDzDQ14SwgIhEkLC6DzDAys/w0N
-        sf8ODrb/Dg6z/wcHZf8KCir/DAwo/wYGVv8NDa3/Dg63/w0Nsv8MDKz/Cwuh9BAQiEsKCo9JDQ2r8w8P
-        tP8PD7j/EBC7/xERv/8REcH/EBC0/xAQsv8REcD/ERHA/xAQu/8PD7j/Dw+0/w4Oq/QSEpJLDg6bSBER
-        tvISEr3/ExO//xQUwv8UFMT/FRXF/xUVx/8VFcj/FRXG/xQUxP8UFML/ExPA/xISvf8REbbzFBSeSh4e
-        qDMYGMHlFRXF/xYWx/8WFsj/FxfK/xcXy/8YGMv/GBjL/xcXy/8XF8r/FhbJ/xYWx/8VFcX/GBjB5h8f
-        qDQ5OZAGKSnIgh4ezfMaGs7+GhrO/hoazv4bG8/+GxvP/hsbz/4bG8/+GhrO/hoazv4aGs7+Hh7N9Ckp
-        yIM5OZEGSUnJAE9Pvgs+PtFPNTXUdTIy03YyMtN1MjLTdTIy03UyMtN1MjLTdTIy03UyMtN2NTXUdT4+
-        0U9PT74LSEjJAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAIABAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAA
-        AAYAAAAGAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACwsLAAPDw8QWlpaUoCAgImEhISVhISElYSE
-        hJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYSEhJWEhISVhISElYGBgYlbW1tTEBAQEC8v
-        LwAAAAAANDQ0ABYWFhGQkJCOx8fH8NXV1f/X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY
-        2P/X19f/19fX/9fX1//X19f/19fX/9bW1v/IyMjwkZGRjxkZGRI2NjYA////AIuLi2HR0dH129vb/9zc
-        3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/97e3v/e3t7/3t7e/97e3v/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc
-        3P/b29v/0dHR9YyMjGP///8AAAAACL+/v6jc3Nz/3d7d/97f3v/f39//3+Df/+Dg4P/g4eD/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4OHg/+Dg4P/f4N//39/f/97f3v/d3t3/3Nzc/8DAwKkAAAAILy8vDc3N
-        zbve3t7/4ODg/+Dh4P/h4eH/4uLi/+Li4v/j4+P/4+Tj/+Tk5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eHh/+Dh4P/g4OD/3t7e/83Nzb03NzcOMDAwDc7Ozrzg4OD/4eLh/+Lj4v/j4+P/5OTk/+Xl
-        5f/l5uX/5ubm/+fn5//p6en/6enp/+fn5//m5ub/5ebl/+Xl5f/k5OT/4+Tj/+Pj4//i4uL/4ODg/87O
-        zr49PT0PMDAwDc/Pz7vi4uL/4+Tj/+Tl5P/l5eX/5ubm/+fn5//o6Oj/6+vr/+Lj4v/MzMz/yMjI/93e
-        3f/r6+v/6Ono/+fn5//m5+b/5ebl/+Xl5f/k5OT/4uLi/8/Pz748PDwPLy8vDdDR0Lvk5OT/5ubm/+fn
-        5//n6Of/6Ono/+nq6f/r6+v/r6+v/0ZGRv8YGBj/FBQU/zU1Nf+UlJT/5ubm/+rq6v/o6ej/6Ojo/+fn
-        5//m5ub/5OTk/9DR0L48PDwPLi4uDdPT07vo6Oj/6urq/+vr6//r7Ov/7O3s//Dw8P+srKz/FxcX/xAQ
-        EP9MTEz/VVVV/x0dHf8ICAj/hoaG/+3u7f/t7e3/7Ozs/+vr6//q6ur/6Ojo/9PT0747OzsPJiYmDbW1
-        tbvIycj/ysvK/8zMzP/Nzc3/zs/O/8fHx/86Ojr/ExMT/6Ghof/f39//4uLi/7y8vP8uLi7/Ghoa/7O0
-        s//Q0ND/zc3N/8zMzP/Ly8v/ycnJ/7W1tb4zMzMPBAQEDRYWFrsZGRn/Ghoa/xoaGv8bGxr/Gxsb/xgY
-        GP8AAAD/XF1c/+fn5//s7Oz/7e3t/+vr6/+MjIz/AgIC/xQUFP8bGxv/Gxsb/xoaGv8aGhr/GRkZ/xYW
-        Fr4KCgoPAAAADQAAALsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/cHBw/+/v7//19fX/9fb1//Ly
-        8v+hoaH/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAb4FBQUPAQEaDQQEXbsFBWj/BgZu/wYG
-        cf8GBnP/BgZ2/wYGcf8AABf/NjY1/9ra2v/3+Pf/+Pj4/+vr6/9eXl3/AAAH/wYGY/8HB3f/BgZ0/wYG
-        cf8GBm7/BQVo/wcHX74QECYPAgInDQgIjrsJCZ7/Cgqn/wsLq/8LC6//Cwuz/wwMuP8HB2T/AgIE/0tL
-        Sv+pqan/srKy/2ZmZv8JCQf/BARC/wsLsv8LC7T/Cwuw/wsLrP8KCqf/CQmf/wsLkL8YGDkPAgIqDQkJ
-        krsLC6L/DAyp/wwMrf8NDbD/DQ2z/w4Ot/8NDbP/Bwdb/wEBC/8FBQP/BwcF/wEBBf8FBUH/DQ2m/w4O
-        uf8NDbT/DQ2x/wwMrv8MDKr/Cgqi/w0NlL8YGDwPAwMsDQoKmrsMDKj/DQ2v/w4Osv8ODrT/Dw+3/w8P
-        uv8PD73/EBC9/w0Nmf8KCm//CQlp/wwMjv8QELj/EBC+/w8Puv8PD7j/Dg61/w4Osv8NDa//DAyo/w4O
-        m78ZGj8PAwMvDQwMorsODq//Dw+1/w8Pt/8QELn/EBC7/xERvv8REcD/ERHB/xISxf8SEsf/EhLH/xIS
-        xf8REcL/ERHA/xERvv8QELz/EBC6/w8PuP8PD7X/DQ2v/xAQo78bG0IPBAQyDQ4OqrsQELf/EhK7/xIS
-        vf8TE7//ExPA/xMTwv8UFMP/FBTE/xQUxf8VFcb/FRXG/xUVxf8UFMX/FBTD/xQUwv8TE8D/ExO//xIS
-        vf8SErv/EBC3/xISrL8cHEYPDAwzCxUVs7cTE73/FBTB/xUVw/8VFcP/FhbF/xYWxv8WFsf/FxfI/xcX
-        yP8XF8n/FxfJ/xcXyf8XF8j/FhbH/xYWxv8WFsX/FRXE/xUVw/8UFMH/ExO9/xYWtLkWFj0MCQkAAiIi
-        uo0WFsT/FRXG/xYWyP8WFsn/FxfK/xcXyv8XF8v/GBjM/xgYzP8YGM3/GBjN/xgYzP8YGMz/GBjL/xcX
-        y/8XF8r/FhbJ/xYWyP8VFcb/FhbE/yIiu48LCwACPDzgADU1tDAmJsvXFxfK/xYWy/8XF8z/FxfM/xcX
-        zf8XF83/FxfO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfN/xcXzf8XF8z/FxfM/xYWy/8XF8r/JSXL2DU1
-        tDE8POIAQUFyAAAA/wBDQ8U7NDTSsioq0+QlJdLpJCTR6SQk0ekkJNHpJCTS6SQk0ukkJNLpJCTS6SQk
-        0ukkJNLpJCTS6SQk0ekkJNHpJSXS6Skp0+Q0NNKzQ0PGPAAA/wA+PnMAAAAAAJSUVQA3N/8AZ2e4DVpa
-        0ytQUNQyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyTk7TMk5O0zJOTtMyUFDUMlpa
-        0ytmZrkNMzP/AI+PXQAAAAAA8AAPAMAAAwCAAAEAgAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAMAAAwDgAAcAKAAAACAA
-        AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
-        AA4JCQksFRUVPxYWFkIWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYWFkEWFhZBFhYWQRYW
-        FkEWFhZBFhYWQRYWFkEWFhZBFhYWQhUVFT8JCQksAAAADgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAMhISEzdHR0kqamptC1tbXitbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW15LW1
-        teS1tbXktbW15LW1teS1tbXktbW15LW1teS1tbXktbW14qenp9B1dXWTIiIiNAAAAAMAAAAAAAAAAAAA
-        AAAAAAAAMTExN6Kior/U1NT82tra/9ra2v/a2tr/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9TU1Pyjo6PAMzMzOAAA
-        AAAAAAAAGhoaAAAAABOenp6l2NjY/tra2v/b29v/3Nvc/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zb3P/b29v/2tra/9jY
-        2P+goKCmAAAAFB0dHQDDw8MAY2NjP87Ozujb29v/3Nzc/93e3f/e3t7/3t7e/97f3v/f39//39/f/9/g
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/f39//39/f/9/f3//e3t7/3t7e/93e
-        3f/c3Nz/29vb/8/Pz+lmZmZAysrKAP///wCcnJxg29vb+9zc3P/e3t7/39/f/9/f3//g4OD/4ODg/+Dh
-        4P/h4eH/4eLh/+Li4v/i4uL/4uLi/+Lj4v/i4+L/4uLi/+Li4v/i4uL/4eLh/+Hh4f/h4eH/4ODg/+Dg
-        4P/f39//39/f/97e3v/c3Nz/29vb+52dnWL///8A////AKenp2jc3dz+3t7e/+Dg4P/g4eD/4eHh/+Hi
-        4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OXk/+Tl5P/k5OT/5OTk/+Tk5P/j5OP/4+Pj/+Lj
-        4v/i4uL/4eLh/+Hh4f/g4eD/4ODg/97e3v/c3Nz+p6ena////wD///8Ap6enaN7e3v7f4N//4eHh/+Li
-        4v/i4+L/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5+b/5ufm/+bm5v/m5ub/5ubm/+Xm
-        5f/l5eX/5OXk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/3+Df/93e3f6oqKhs////AP///wCnp6do39/f/uDh
-        4P/i4+L/4+Tj/+Tk5P/k5eT/5eXl/+bm5v/m5+b/5+fn/+fo5//o6ej/6+zr/+3t7f/t7e3/7Ozs/+nq
-        6f/n6Of/5+fn/+bn5v/m5ub/5ebl/+Xl5f/k5OT/5OTk/+Pj4//g4eD/3t/e/qmpqWz///8A////AKeo
-        p2jg4OD+4uLi/+Tl5P/l5eX/5ubm/+bm5v/n5+f/5+jn/+jo6P/p6en/7Ozs/+Dg4P+1tbX/j4+P/4iI
-        iP+np6f/1dXV/+zs7P/p6un/6Ojo/+jo6P/n5+f/5ufm/+bm5v/l5eX/5OXk/+Li4v/g4OD+qampbP//
-        /wD///8AqKioaOHi4f7k5OT/5ubm/+bn5v/n5+f/6Ojo/+jp6P/p6en/6urq/+3t7f+3t7f/Q0ND/wsL
-        C/8AAAD/AAAA/wUFBf8qKir/kpKS/+fo5//r6+v/6erp/+np6f/o6Oj/5+jn/+fn5//m5ub/5OTk/+Hi
-        4f6qqqps////AP///wCoqKho4+Pj/uXl5f/n5+f/6Ojo/+np6f/p6un/6urq/+vr6//u7+7/tLS0/x8f
-        H/8AAAD/CwsL/y8vL/83Nzf/FRUV/wAAAP8JCQn/g4OD/+zs7P/r6+v/6urq/+nq6f/p6en/6Ojo/+fo
-        5//l5uX/4+Pj/qqqqmz///8A////AKqqqmjo6Oj+6+zr/+3t7f/u7u7/7u/u/+/v7//w8PD/8vLy/+Dg
-        4P87Ozv/AAAA/ykpKf+ioqL/09PT/9fX1/+6urr/T09P/wAAAP8UFBT/ubm5//T09P/w8PD/7/Dv/+/v
-        7//u7u7/7e3t/+vs6//o6Oj+rKysbP///wD+/v4AZWVlaIuLi/6Oj47/kZGR/5KSkv+Tk5P/lJSU/5SV
-        lP+YmJj/cHBw/wUFBf8QEBD/q6ur/+Xl5f/l5eX/5ubm/+Pk4//R0tH/NjY2/wAAAP9KSkr/l5eX/5WV
-        lf+UlJT/k5OT/5KSkv+RkZH/j4+P/4uLi/5nZ2dt////AAAAAAAAAABoAAAA/gAAAP8AAAD/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8AAAD/AAAA/0FBQf/g4OD/6urq/+7u7v/u7u7/7O3s/+jo6P+BgYH/AAAA/wAA
-        AP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/gICAm0AAAAAAAAAAAAAAGgAAAD+AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/UlJS/+fo5//w8fD/9PX0//T09P/09PT/7O3s/5WV
-        lf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AgICbQAAAAAEBFUAAQEiaAIC
-        LP4CAi7/AgIw/wMDMf8DAzH/AwMy/wMDM/8DAzX/AgIk/wAAAP8uLi7/3Nzc//Dw8P/4+fj/+fr5//Ly
-        8v/u7u7/Z2dn/wAAAP8BARb/AwM0/wMDM/8DAzL/AwMy/wMDMf8CAjD/AgIu/wICLP4GBiVtAwNYAA0N
-        /wAFBXFoBweS/ggImf8ICKD/CQmk/wkJpv8JCan/CQms/woKsf8JCZb/AQET/wMDAv98fHz/7O3s//P0
-        8//09PT/8vPy/6+vr/8WFhb/AAAA/wYGbv8KCrP/CQmt/wkJqv8JCaf/CQmk/wgIof8ICJr/CAiS/g8P
-        dm0KCv8AEBD/AAYGdGgICJb+CQmd/woKpP8LC6f/Cwuq/wsLrf8LC7D/DAyy/wwMtv8GBl3/AAAB/woK
-        Cf9ZWVn/o6Oj/6ysrP93d3f/Ghoa/wAAAP8EBDL/Cwur/wwMtP8MDLD/Cwut/wsLq/8LC6j/Cgqk/wkJ
-        nf8JCZb+EBB5bQ4O/wASEv8ABwd5aAoKm/4LC6L/Cwuo/wwMq/8MDK7/DAyw/w0Ns/8NDbX/DQ24/w0N
-        sv8HB1P/AQEG/wAAAP8DAwL/BAQC/wAAAP8AAAH/BAQw/wwMnv8NDbr/DQ22/w0Ns/8MDLH/DAyu/wwM
-        rP8MDKn/Cgqi/woKnP4REX9tEBD/ABQU/wAICH5oCwuh/gwMpv8MDKz/DQ2v/w4Osf8NDbP/Dg61/w8P
-        uP8ODrr/Dw+9/w8Puv8LC4P/BgZA/wMDHv8CAhr/BAQy/wkJa/8PD6//Dw++/w4Ouv8PD7j/Dg62/w4O
-        tP8NDbH/DQ2v/w0Nrf8MDKf/Cwuh/hIShG0SEv8AFxf/AAkJg2gMDKf+DQ2r/w4Osf8ODrP/Dw+1/w8P
-        tv8PD7j/EBC6/xAQvP8QEL7/ERHA/xERxP8REcD/EBCz/xAQsf8REbz/ERHE/xERwf8QEL7/EBC8/xAQ
-        u/8PD7n/Dw+3/w8Ptf8PD7P/Dg6x/w0Nq/8NDaf+FBSIbRQU/wAZGf8ACgqJaA0Nrf4ODrD/Dw+1/w8P
-        t/8QELn/EBC6/xAQvP8QEL3/ERG//xERwP8REcH/EhLC/xISw/8SEsT/EhLF/xISw/8SEsL/ERHC/xER
-        wf8REb//ERG+/xAQvP8QELv/EBC5/w8PuP8PD7X/Dg6x/w4Orf4VFY5tFhb/ABwc/wALC45oDw+z/hAQ
-        tv8REbr/ERG8/xISvf8SEr7/EhK//xMTwf8TE8L/ExPD/xMTxP8UFMX/FBTF/xQUxv8UFMb/FBTF/xQU
-        xf8TE8T/ExPD/xMTwv8TE8H/EhLA/xISvv8SEr3/ERG8/xERuv8QELb/EBC0/hcXlG0aGv8AIiL/AA4O
-        lWcREbn9ExO7/xQUv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xYWxf8WFsb/FhbG/xYWx/8WFsf/FxfI/xcX
-        yP8XF8f/FhbH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FRXC/xQUwf8UFMD/FBS//xMTu/8SErn+FhaZaiAg
-        /wAzM/8AHR2dWRYWwPoTE7//FRXD/xUVxf8VFcX/FRXG/xYWxv8WFsf/FhbI/xcXyf8XF8n/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcXyf8WFsj/FhbH/xYWx/8VFcb/FRXF/xUVxf8VFcP/ExO//xYW
-        v/ocHJ1aMjL/ADU1wAApKY0sISHG3xQUw/8WFsf/FhbJ/xcXyf8XF8r/FxfK/xcXy/8YGMv/GBjM/xgY
-        zP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGMz/GBjM/xgYy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xYW
-        x/8UFMP/ISHG4Coqjy41NcIAHx9GABkZAAQ0NMSCHh7M/BQUyP8WFsv/FxfM/xcXzP8XF8z/FxfN/xcX
-        zf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfN/xcXzf8XF8z/FxfM/xcX
-        zP8WFsv/FBTI/x4ezPw0NMSEHR0ABSEhSwAAAAAASUm3AENDkRM+Ps6UKCjS9Rsbzv8ZGc3/GRnN/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc3/GRnN/xsbzv8oKNL1PT3OlkJClBNISLkAAAAAAAAAAAAAAAAAWFi1AFVVlwtQUMtSRUXXnjw8
-        2bk2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY21rs2Nta7NjbWuzY2
-        1rs2Nta7NjbWuzY21rs8PNm5RUXXn09PzFNVVZgMV1e2AAAAAAAAAAAAAAAAAAAAAAAAAAAA1NQAAFNT
-        /wCUlIYEgoKoCX19rQp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8rAp8fKwKfHysCnx8
-        rAp8fKwKfHysCnx8rAp8fKwKfX2tCoKCqAmTk4YETU3/AMrKAAAAAAAAAAAAAAAAAAD/////4AAAB8AA
-        AAPAAAADgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
-        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAPgAAAH+AAAHygA
-        AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA
-        AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAJAAAAEAAAABRAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAA
-        AFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFYAAABWAAAAVgAAAFEAAABAAAAAJAAAAAwAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAACMbGxtiXl5eopGRkcqlpaXapqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qam
-        pt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qampt6mpqbepqam3qWlpdqSkpLLX19fox0d
-        HWMAAAAkAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAMVJSUpCzs7Pg19fX/Nzc
-        3P/b29v/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb
-        2//c3Nz/2NjY/LW1teFUVFSRAAAAMQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAnaWlpl8zM
-        zPHb29v/19fX/9fX1//Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9jY2P/X19f/19fX/9vb2//Ozs7xbW1tmAAAACgAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AA9TU1N0y8vL7dra2v/Y2Nj/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/2tra/9jY2P/a2tr/zMzM7lZWVnYAAAAQAAAAAAAA
-        AAAAAAAAAAAAAA4ODjGwsLDF3d3d/9nZ2f/b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/d3d3/3d3d/97e
-        3v/e3t7/3t7e/97e3v/e3t7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/e
-        3//e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9vb2//Z2dn/3d3d/7Ky
-        sscQEBAyAAAAAAAAAAAAAAAAAAAAA1paWl3V1dXv2tra/9vb2//c3dz/3d7d/97e3v/e3t7/3t7e/97f
-        3v/f39//39/f/9/f3//f4N//4ODg/+Dg4P/g4OD/4ODg/+Dh4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4eD/4OHg/+Dg4P/g4OD/4ODg/9/g3//f39//39/f/9/f3//e397/3t7e/97e3v/e3t7/3d7d/9zd
-        3P/b29v/2tra/9bW1vBeXl5fAAAAAwAAAAAAAAAAAAAABpSUlIHf39/92tra/9zd3P/e3t7/39/f/9/f
-        3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4uH/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Hh4f/g4eD/4ODg/+Dg4P/g4OD/3+Df/9/f
-        3//f39//39/f/97e3v/c3dz/2tra/9/f3/2WlpaCAAAABgAAAAAAAAAAAAAAB6mpqY3g4OD/29zb/93e
-        3f/f39//3+Df/9/g3//g4OD/4OHg/+Dh4P/h4eH/4eHh/+Hi4f/i4uL/4uLi/+Lj4v/i4+L/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pk4//j5OP/4+Tj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uLi/+Li4v/h4uH/4eLh/+Hh
-        4f/g4eD/4OHg/+Dg4P/f4N//3+Df/9/f3//e3t7/29zb/9/f3/+oqaiQAAAABwEBAQAAAAAAAAAAB6io
-        qJDf4N//3d3d/9/f3//g4OD/4OHg/+Dh4P/h4eH/4eLh/+Hi4f/i4uL/4uPi/+Lj4v/j4+P/4+Tj/+Tk
-        5P/k5OT/5OTk/+Tl5P/k5eT/5OXk/+Xl5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tk5P/k5OT/4+Tj/+Pj
-        4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4eH/4OHg/+Dg4P/f39//3d3d/9/f3/+qqqqVAAAACAMD
-        AwAAAAAAAAAAB6ipqJDh4eH/3t7e/+Dg4P/h4eH/4eLh/+Li4v/i4+L/4uPi/+Pj4//j5OP/4+Tj/+Tk
-        5P/k5eT/5eXl/+Xl5f/l5uX/5ebl/+bm5v/m5ub/5ubm/+bm5v/m5+b/5ubm/+bm5v/m5ub/5ebl/+Xm
-        5f/l5uX/5eXl/+Tl5P/k5OT/5OTk/+Pk4//j4+P/4uPi/+Lj4v/i4uL/4eLh/+Hh4f/g4OD/3t7e/+Dg
-        4P+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDh4eH/39/f/+Dh4P/i4uL/4uPi/+Pj4//j4+P/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/m5+b/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tl5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Li
-        4v/g4eD/39/f/+Hh4f+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDi4uL/3+Df/+Hh4f/i4+L/4+Tj/+Tk
-        5P/k5OT/5eXl/+Xl5f/l5uX/5ubm/+bm5v/n5+f/5+fn/+fo5//o6Oj/6Ojo/+jo6P/o6ej/6urq/+zs
-        7P/s7Oz/6+vr/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Pj4//h4eH/3+Df/+Li4v+rq6uVAAAACAMDAwAAAAAAAAAAB6mpqZDj4+P/4eHh/+Lj
-        4v/k5OT/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5+b/5+fn/+fo5//o6Oj/6Ojo/+np6f/p6en/6urq/+7u
-        7v/o6ej/1dXV/8DBwP+6urr/y8vL/+Dg4P/u7u7/7Ozs/+np6f/p6en/6Ono/+jo6P/o6Oj/5+fn/+fn
-        5//m5ub/5ubm/+Xm5f/l5eX/5eXl/+Tk5P/i4+L/4eHh/+Pj4/+rq6uVAAAACAMDAwAAAAAAAAAAB6mp
-        qZDk5OT/4uLi/+Pk4//l5eX/5ubm/+bm5v/m5+b/5+fn/+fn5//o6Oj/6Ojo/+jp6P/p6en/6erp/+nq
-        6f/t7u3/4uPi/52dnf9QUFD/IyMj/xISEv8NDQ3/Ghoa/zY2Nv92dnb/x8fH/+7u7v/q6+r/6erp/+np
-        6f/p6en/6Ojo/+jo6P/n6Of/5+fn/+bn5v/m5ub/5ubm/+Xl5f/k5OT/4uLi/+Tk5P+srKyVAAAACAMD
-        AwAAAAAAAAAAB6qqqpDl5eX/4uPi/+Tl5P/m5ub/5ufm/+fn5//n6Of/6Ojo/+jp6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+/v7//Jycn/S0tL/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Hh4e/5KS
-        kv/q6ur/6+zr/+rr6v/q6ur/6erp/+np6f/o6ej/6Ojo/+fo5//n5+f/5ufm/+bm5v/l5eX/4+Pj/+Tl
-        5P+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDm5ub/4+Tj/+Xm5f/n5+f/5+jn/+jo6P/o6ej/6enp/+nq
-        6f/q6ur/6uvq/+rr6v/r6+v/7+/v/8bGxv8wMDD/AAAA/wAAAP8AAAD/AQEB/wcHB/8JCQn/AwMD/wAA
-        AP8AAAD/AAAA/wsLC/+CgoL/7Ozs/+zs7P/r6+v/6uvq/+rq6v/p6un/6enp/+jp6P/o6Oj/5+jn/+fn
-        5//m5ub/5OTk/+Xm5f+srKyVAAAACAMDAwAAAAAAAAAAB6qqqpDn5+f/5OXk/+bn5v/o6Oj/6Ono/+np
-        6f/p6un/6urq/+rr6v/r6+v/6+vr/+vs6//u7u7/39/f/0NDQ/8AAAD/AAAA/wAAAP8lJSX/c3Nz/6io
-        qP+ysrL/kZGR/0pKSv8JCQn/AAAA/wAAAP8NDQ3/o6Oj//Dx8P/s7Oz/6+zr/+vr6//q6+r/6urq/+nq
-        6f/p6en/6Ono/+jo6P/n5+f/5eXl/+bm5v+srKyVAAAACAMDAwAAAAAAAAAAB6urq5Dq6ur/6Ono/+rr
-        6v/r7Ov/7Ozs/+3t7f/t7e3/7e7t/+7u7v/u7u7/7+/v/+/v7//09PT/jIyM/wMDA/8AAAD/AAAA/0hI
-        SP/IyMj/5ubm/+Dg4P/f39//4+Pj/+Dg4P+NjY3/EhIS/wAAAP8AAAD/NDQ0/97e3v/x8fH/7+/v/+7v
-        7v/u7u7/7u7u/+3t7f/t7e3/7Ozs/+vs6//r6+v/6enp/+rq6v+tra2VAAAACAMDAwAAAAAAAAAAB4yM
-        jJDCw8L/w8PD/8XGxf/Hx8f/yMjI/8nJyf/Jycn/ysrK/8vLy//Ly8v/zMzM/83Nzf/Dw8P/MzMz/wAA
-        AP8AAAD/Ly8v/8/Pz//i4+L/29vb/+Pj4//l5eX/39/f/9vc2//o6Oj/gYGB/wMDA/8AAAD/BQUF/4yM
-        jP/Q0ND/zMzM/8zMzP/Ly8v/ysrK/8nKyf/Jycn/yMjI/8fHx//Gxsb/w8PD/8LCwv+Ojo6WAAAACAMD
-        AwAAAAAAAAAABw8PD5AUFBT/FRUV/xYWFv8XFxf/GBgY/xgYGP8YGBj/GRkZ/xkZGf8ZGRn/Ghoa/xoa
-        Gv8XFxf/AwMD/wAAAP8DAwP/kZGR/+nq6f/e3t7/7Ozs/+zs7P/r6+v/7e3t/+Xm5f/g4OD/2dnZ/y0s
-        Lf8AAAD/AAAA/w4ODv8bGxv/Ghoa/xoaGv8ZGRn/GRkZ/xgYGP8YGBj/GBgY/xcXF/8WFhb/FRUV/xQU
-        FP8RERGWAAAACAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SEhL/xcXF/+Tk5P/q6ur/7/Dv/+7u7v/u7+7/7u7u//Dw
-        8P/g4eD/6+vr/2FhYf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8CAgKWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8dHR3/0dHR/+Xl5f/w8PD/8/Tz//Pz
-        8//z8/P/8/Pz//T09P/l5eX/7u7u/3h4eP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwAAAJAAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/xcXF/+vr
-        6//u7u7/+Pn4//f39//39/f/9/j3//f39//m5ub/8PDw/1tbW/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DAwOWBQUFCAEBAQAAAAAAAAAABwIC
-        L5ADAzz/AwM8/wMDP/8DA0H/AwNC/wQEQv8EBEP/BARE/wQERf8EBEX/BARG/wQER/8EBED/AQEL/wAA
-        AP8BAQH/iIiI//X19f/o6Oj/9fX1//v7+//7/Pv/+fr5/+3t7f/t7u3/2NjY/yYmJv8AAAD/AAAA/wIC
-        KP8EBEj/BARG/wQERv8EBEX/BARE/wQEQ/8EBEP/BARC/wMDQf8DAz//AwM9/wMDPP8HBzKWCAgACAIC
-        AgAAAAAAAAAABwUFeJAHB5f/Bwea/wgIoP8ICKT/CQmn/wkJqv8JCav/CQmt/wkJr/8JCbH/Cgqz/woK
-        tv8KCrX/AwM7/wAAAP8AAAD/JiYm/83Nzf/29vb/6urq/+3t7f/u7+7/6uvq/+7v7v/y8vL/cXFx/wEB
-        Af8AAAD/AQEK/wgIjf8KCrn/Cgq0/wkJsv8JCbD/CQmu/wkJrP8JCar/CQmo/wgIpf8ICKH/Bwea/wcH
-        mP8QEH2XEREACAQEBAAAAAAAAAAABwYGdJAHB5P/CAiV/wgInP8JCaD/CQmk/woKpf8KCqf/Cgqp/woK
-        q/8KCq3/Cgqv/wsLsf8LC7j/CAiE/wEBCf8AAAD/AAAA/zk5Of+/v7//9fX1//f39//29/b/9/j3/+Tl
-        5P95eXn/CQkJ/wAAAP8AAAD/BAQ9/wsLs/8LC7L/Cgqw/woKrv8KCqz/Cgqq/woKqP8KCqb/CQmk/wkJ
-        of8ICJz/CAiW/wgIlP8REXqXEhIACAQEBAAAAAAAAAAABwcHeJAJCZf/CQmZ/woKn/8KCqT/Cwun/wsL
-        qP8LC6r/Cwus/wsLrv8MDLD/DAyx/wwMs/8MDLX/DQ24/wYGT/8AAAD/AAAA/wAAAP8XFxf/XFxc/4+P
-        j/+Wlpb/enp6/zQ0NP8FBQX/AAAA/wAAAP8CAhj/CwuY/w0Nuf8MDLT/DAyy/wwMsP8LC67/Cwut/wsL
-        q/8LC6n/Cwun/wsLpf8KCqD/CQma/wkJmP8SEn6XEREACAQEBAAAAAAAAAAABwcHfJAJCZv/Cgqd/woK
-        o/8LC6f/DAyq/wwMq/8MDK3/DAyu/wwMsP8NDbL/DQ2z/w0Ntf8NDbf/DQ26/w0Nsf8FBUX/AAAC/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICGf8LC4b/Dg69/w0Nt/8NDbb/DQ20/w0N
-        sv8MDLH/DAyv/wwMrf8MDKz/DAyq/wsLp/8KCqP/Cgqd/woKnP8TE4GXEREACAQEBAAAAAAAAAAABwgI
-        f5AKCp//Cwug/wsLpf8MDKr/DAys/w0Nrf8NDa//DQ2w/w0Nsv8NDbT/Dg61/w4Ot/8ODrj/Dg66/w8P
-        vf8PD7f/CAhi/wICE/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAT/BAQ0/w0NmP8PD8D/Dg66/w4O
-        uf8ODrf/Dg62/w4OtP8NDbP/DQ2x/w0Nr/8NDa7/DQ2s/wwMqv8LC6b/Cwug/woKoP8TE4WXEREACAQE
-        BAAAAAAAAAAABwgIgpALC6P/DAyj/wwMqP8NDaz/DQ2v/w4OsP8ODrH/Dg6y/w4OtP8ODrX/Dw+3/w8P
-        uP8PD7r/Dw+7/w8PvP8QEL7/EBDB/w4Oov8JCWL/BQU3/wICGv8CAhj/AwMn/wcHTP8LC4T/EBC4/xAQ
-        wf8PD7z/Dw+7/w8Puv8PD7n/Dw+3/w4Otv8ODrX/Dg6z/w4Osv8ODrD/DQ2v/w0Nrf8MDKn/DAyj/wsL
-        o/8UFIiXEREACAQEBAAAAAAAAAAABwkJhpAMDKf/DAyn/w0NrP8NDa//Dg6x/w4Osv8PD7T/Dw+1/w8P
-        tv8PD7f/Dw+5/xAQuv8QELv/EBC8/xAQvf8QEL7/ERG//xERw/8REcb/ERG//xAQtP8QELP/EBC5/xER
-        xP8REcX/ERHB/xERv/8QEL7/EBC9/xAQvP8QELr/EBC5/w8PuP8PD7f/Dw+1/w8PtP8PD7P/Dg6y/w0N
-        sP8NDaz/DAyn/wwMp/8VFYuXEBEACAQEBAAAAAAAAAAABwoKipAMDKz/DQ2r/w4Or/8ODrP/Dw+0/w8P
-        tv8QELf/EBC4/xAQuf8QELr/EBC7/xERvP8REb3/ERG+/xERv/8REcD/EhLB/xISwv8REcL/EhLD/xIS
-        xP8SEsT/EhLD/xISwv8SEsL/EhLB/xERwP8REcD/ERG//xERvv8REb3/EBC7/xAQuv8QELn/EBC4/xAQ
-        t/8PD7b/Dw+1/w4Os/8ODrD/DQ2r/w0NrP8WFo+XEBEACAQEBAAAAAAAAAAABwoKjZANDbD/DQ2u/w4O
-        sv8PD7X/Dw+3/w8PuP8QELn/EBC6/xAQu/8QELz/EBC9/xERvv8REb//ERHA/xERwf8REcH/ERHC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLD/xISw/8SEsP/ERHC/xERwv8REcH/ERHA/xERv/8REb7/EBC9/xAQ
-        vP8QELv/EBC6/xAQuf8PD7j/Dw+3/w8Ptv8ODrL/DQ2u/w0NsP8XF5OXEREACAQEBAAAAAAAAAAABwsL
-        kZAODrX/Dw+z/xAQtv8QELn/EBC7/xAQu/8REbz/ERG9/xERvv8REb//ERG//xISwf8SEsH/EhLC/xIS
-        w/8SEsP/ExPE/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPF/xMTxf8TE8X/ExPE/xISxP8SEsP/EhLC/xIS
-        wf8SEsH/ERHA/xERv/8REb7/ERG9/xERvf8QELz/EBC7/xAQuf8QELb/Dw+z/w4Otf8YGJeXEREACAQE
-        BAAAAAAAAAAABw0NlI8QELj/ERG2/xISuf8TE7z/ExO9/xMTvv8UFL//FBS//xQUwP8UFMH/FBTB/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbF/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8VFcX/FRXE/xUVw/8VFcP/FBTC/xQUwf8UFMD/FBTA/xQUv/8TE77/ExO+/xMTvP8SErn/ERG2/xER
-        uP8aGpuXEBAACAUFBQAAAAAAAAAABg8Pmo0SErz/EhK5/xMTvf8UFL//FBTA/xQUwf8UFMH/FBTC/xUV
-        wv8VFcP/FRXE/xUVxP8VFcX/FhbG/xYWxv8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbH/xYWx/8WFsb/FhbG/xUVxf8VFcX/FRXE/xUVw/8VFcP/FRXC/xQUwf8UFMH/FBTB/xQU
-        v/8TE73/EhK5/xISvP8XF56SBQUABwMDAwAAAAAAAAAAAxwcn4MXF8L/EhK8/xQUwP8UFML/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbI/xYWyP8XF8n/FxfJ/xcXyf8XF8r/FxfK/xcX
-        yv8XF8r/FxfK/xcXyv8XF8n/FxfJ/xcXyf8WFsj/FhbI/xYWx/8WFsf/FhbG/xYWxv8VFcX/FRXF/xUV
-        xP8VFcT/FRXE/xQUwv8UFMD/EhK8/xYWwv8aGp+EAAAABAAAAAAAAAAAAAAAACkpk18eHsn3ExO//xQU
-        wv8VFcX/FhbG/xYWx/8WFsf/FhbH/xYWyP8WFsj/FxfJ/xcXyf8XF8n/FxfK/xcXyv8XF8v/GBjL/xgY
-        y/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYy/8YGMv/GBjL/xcXy/8XF8v/FxfK/xcXyv8XF8n/FxfJ/xcX
-        yP8WFsj/FhbH/xYWx/8WFsf/FhbG/xUVxf8UFML/ExO+/x4eyfgpKZViAAAAAAAAAAAAAAAAenr/ACMj
-        XycsLMvSFRXE/xQUxP8VFcf/FhbJ/xcXyf8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8YGMz/GBjM/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
-        zP8YGMz/FxfL/xcXy/8XF8r/FxfK/xcXyv8XF8n/FhbJ/xUVx/8UFMT/FRXE/ywsy9QkJGQpeXn/AAAA
-        AAAAAAAADQ0IAAAAAAU5Obh1JyfT+RMTxf8VFcj/FhbK/xYWy/8WFsv/FxfM/xcXzP8XF8z/FxfM/xcX
-        zP8XF83/FxfN/xcXzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8XF83/FxfN/xcXzf8XF83/FxfM/xcXzP8XF8z/FxfM/xYWy/8WFsv/FhbK/xUVyP8TE8X/JibS+jo6
-        uXkAAAAGERERAAAAAAAAAAAAAAAAAO3t/wAxMV8XQ0PNoicn0/0VFcn/FhbK/xcXzP8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjO/xgYzv8YGM7/GRnO/xkZz/8ZGc//GRnO/xkZzv8ZGc7/GRnO/xkZ
-        z/8ZGc//GRnO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8XF8z/FhbK/xUV
-        yf8nJ9P+QkLOpDExYxj8/P8AAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AQkKEHE1N0Zg1Ndr0Hx/P/xgY
-        zP8XF8z/FxfM/xcXzP8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcX
-        zv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfM/xcX
-        zP8YGMz/Hx/P/zU12fRNTdGaQ0OIHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3fSAERE
-        bQ5ZWcRXUVHasURE3uI6Ot7xMjLZ8zAw2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx2PMxMdjzMTHY8zEx
-        2PMwMNjzMjLY8zo63/FDQ97jUFDasllZxVlDQ24PdnbUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAC0tHAAEBAAAUVFkDGhotylnZ8o4ZGTNOmNjzTtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2NjzDtjY8w7Y2PMO2Nj
-        zDtjY8w7Y2PMO2NjzDtjY8w7ZGTNOmdnyzhoaLgqUFBmDAcHAAAqKh0AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAD///////8AAP8AAAAA/wAA+AAAAAAfAADwAAAAAA8AAOAAAAAABwAAwAAAAAAD
-        AADAAAAAAAMAAMAAAAAAAwAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
-        AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAAB
-        AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAA
-        AAAABwAA8AAAAAAPAAD4AAAAAB8AAP4AAAAAfwAA////////AAAoAAAAgAAAAAABAAABACAAAAAAAAAA
-        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAMAAAAEQAAABYAAAAWAAAAGAAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAA
-        ABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGAAAABcAAAAWAAAAEQAA
-        AAwAAAAHAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAABAAAAAZAAAAJQAA
-        ADAAAAA4AAAAQAAAAEYAAABHAAAASAAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAAAEkAAABJAAAASQAA
-        AEkAAABJAAAASQAAAEgAAABHAAAARgAAAEAAAAA4AAAAMAAAACUAAAAZAAAAEQAAAAgAAAADAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAADAAAACQAAABQAAAAjAAAANAAAAEUAAABWAAAAZQAAAHIAAAB6AAAAgAAAAIMAAACEAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAA
-        AIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhAAAAIMAAACAAAAAegAA
-        AHIAAABlAAAAVwAAAEYAAAA1AAAAJAAAABQAAAAKAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABIAAAAjAAAAOAAAAFEAAABpAAAAfgAA
-        AI8AAACcAAAApQAAAKsAAACwAAAAswAAALMAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAAALQAAAC0AAAAtAAA
-        ALQAAAC0AAAAtAAAALQAAAC0AAAAswAAALAAAACsAAAApQAAAJwAAACQAAAAfwAAAGoAAABSAAAAOQAA
-        ACMAAAASAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAA
-        AAwAAAAaAAAAMgAAAFAAAABtAAAAiAAAAJwMDAyyWFhY0pWVleHY2Njz3Nzc8/7+/v7/////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////////////////////9zc
-        3PPc3Nzzmpqa41paWtIQEBCzAAAAngAAAIgAAABtAAAAUAAAADMAAAAbAAAADAAAAAMAAAABAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAOAAAAIwAAAEAAAABiAAAAgwAAAJ43NzfAqKio5v39
-        /fz//////////+7u7v/s7Oz/1tbW/9XV1f/V1dX/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW1v/W1tb/1tbW/9bW
-        1v/W1tb/1tbW/9bW1v/W1tb/1dXV/9XV1f/V1dX/7Ozs/+zs7P////////////39/fyxsbHoPT09xAAA
-        AJ4AAACEAAAAYwAAAEAAAAAjAAAADwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEAAA
-        ACYAAABJAAAAbwAAAJIqKiq6t7e36v//////////2tra/9PT0//T09P/1NTU/9TU1P/U1NT/1NTU/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV
-        1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1dXV/9XV1f/V1dX/1NTU/9TU
-        1P/U1NT/1NTU/9PT0//T09P/2tra////////////vr6+7i4uLrwAAACUAAAAcQAAAEoAAAAnAAAAEQAA
-        AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAA8AAAAnAAAATAAAAHcAAACcdXV11P39/f3/////1NTU/9TU
-        1P/V1dX/1dXV/9bW1v/W1tb/1tbW/9bW1v/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX
-        1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9bW1v/W1tb/1tbW/9XV1f/V1dX/1NTU/9TU
-        1P///////v7+/n19fdcAAACcAAAAdwAAAE0AAAAnAAAAEAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAANAAAAJQAA
-        AEsAAAB4BAQEn6KiouD/////6urq/9TU1P/V1dX/1dXV/9bW1v/W1tb/19fX/9fX1//X19f/19fX/9fX
-        1//Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY
-        2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9fX
-        1//X19f/19fX/9fX1//X19f/1tbW/9bW1v/V1dX/1dXV/9TU1P/l5eX//////66uruUKCgqhAAAAeQAA
-        AEwAAAAmAAAADQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAACgAAAB4AAABFAAAAcxcXF6TT09Pv/////9fX1//V1dX/1dXV/9bW
-        1v/W1tb/19fX/9fX1//X19f/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9jY2P/X19f/19fX/9bW
-        1v/W1tb/1dXV/9XV1f/U1NT//////9fX1+4eHh6nAAAAdAAAAEYAAAAfAAAACgAAAAEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAXAAAAOQAA
-        AGkEBASYzMzM7P/////U1NT/1dXV/9XV1f/W1tb/19fX/9fX1//Y2Nj/2NjY/9jY2P/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//a2tr/2tra/9ra
-        2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ
-        2f/Z2dn/2dnZ/9nZ2f/Z2dn/2NjY/9jY2P/Y2Nj/19fX/9fX1//W1tb/1dXV/9XV1f/U1NT//////9fX
-        1+4KCgqaAAAAawAAADkAAAAXAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAACAAAADgAAACoAAABZAAAAjKWlpd3/////1dXV/9bW1v/X19f/19fX/9jY
-        2P/Z2dn/2dnZ/9ra2v/a2tr/2tra/9ra2v/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb
-        2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9ra2v/a2tr/2tra/9ra
-        2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/V1dX//////6+vr+EAAACNAAAAWwAAACsAAAAOAAAAAgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAbAAAARAAA
-        AHl3d3fM/////9jY2P/W1tb/19fX/9jY2P/Y2Nj/2dnZ/9nZ2f/a2tr/2tra/9ra2v/b29v/29vb/9vb
-        2//b29v/29vb/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/29vb/9vb2//b29v/29vb/9vb2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/Y2Nj/19fX/9bW
-        1v/V1dX//////39/f9EAAAB6AAAARgAAABwAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAABAAAADgAAAC4AAABfKSkpof39/fzs7Oz/1tbW/9fX1//X19f/2NjY/9nZ
-        2f/Z2dn/2tra/9ra2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9vb
-        2//b29v/2tra/9ra2v/Z2dn/2dnZ/9jY2P/X19f/19fX/9bW1v/o6Oj//f39/TQ0NKkAAABiAAAALwAA
-        AA4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAYAAAAQgAA
-        AHq2trbh/////9bW1v/W1tb/19fX/9jY2P/Z2dn/2dnZ/9ra2v/a2tr/29vb/9vb2//c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc
-        3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/9jY
-        2P/X19f/1tbW/9bW1v//////w8PD5wAAAHsAAABDAAAAGQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAACYAAABWNzc3ov7+/v7Z2dn/19fX/9jY2P/Z2dn/2tra/9ra
-        2v/b29v/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/93d3f/d3d3/3d3d/93d
-        3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb2//a2tr/2tra/9nZ2f/Y2Nj/19fX/9bW1v//////Pj4+pwAA
-        AFgAAAAnAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAANAAA
-        AGqpqanY/////9fX1//Y2Nj/2dnZ/9nZ2f/a2tr/29vb/9zc3P/c3Nz/3Nzc/93d3f/d3d3/3d3d/93d
-        3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9vb
-        2//a2tr/2dnZ/9nZ2f/Y2Nj/19fX//////+xsbHcAAAAawAAADUAAAARAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABBBgYGfvv7+/nh4eH/19fX/9jY2P/Z2dn/2tra/9vb
-        2//b29v/3Nzc/9zc3P/d3d3/3d3d/93d3f/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e
-        3v/e3t7/3t7e/93d3f/d3d3/3d3d/9zc3P/c3Nz/29vb/9vb2//a2tr/2dnZ/9jY2P/X19f/4ODg//z8
-        /PgSEhKCAAAAQgAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAA
-        AE5XWVep/////9fY1//Y2dj/2drZ/9nb2f/a29r/29zb/9zd3P/c3dz/3d7d/93e3f/d3t3/3t/e/97f
-        3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3+Df/9/g3//f4N//3+Df/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/9/g
-        3//e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/97f3v/e397/3t/e/93e3f/d3t3/3d7d/9zd
-        3P/c3dz/29zb/9rb2v/Z29n/2drZ/9jZ2P/X2Nf//////2RkZLEAAABOAAAAHwAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAV5ubm83/////2NjY/9nZ2f/a2tr/29vb/9zc
-        3P/c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//f39//4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f
-        3//f39//39/f/9/f3//f39//3t7e/97e3v/e3t7/3d3d/93d3f/c3Nz/3Nzc/9vb2//a2tr/2dnZ/9jY
-        2P//////o6Oj0gAAAFcAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ACoAAABezs7O5P/////Y2Nj/2dnZ/9ra2v/b29v/3Nzc/9zc3P/d3d3/3t7e/97e3v/e3t7/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//3t7e/97e
-        3v/e3t7/3d3d/93d3f/c3Nz/29vb/9ra2v/Z2dn/2dnZ//39/f/U1NTnAAAAXgAAACoAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQAAAGL09PTx7e3t/9nZ2f/a2tr/29vb/9vb
-        2//c3Nz/3d3d/93d3f/e3t7/3t7e/97e3v/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f
-        3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/h4eH/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f
-        3//f39//39/f/9/f3//f39//39/f/9/f3//e3t7/3t7e/97e3v/d3d3/3d3d/9zc3P/b29v/29vb/9ra
-        2v/Z2dn/6Ojo//f39/QAAABkAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAuAAAAZPz8/Pji4+L/2drZ/9rb2v/b3Nv/293b/9zd3P/d3t3/3d7d/97f3v/e397/3uDe/9/g
-        3//f4N//3+Df/9/g3//f4N//3+Df/9/g3//f4N//4ODg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh
-        4P/g4eD/4eHh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uLi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Pj4//j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Pj/+Pj4//i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/i4+L/4uPi/+Lj4v/i4uL/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4eH/4OHg/+Dh
-        4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4OD/3+Df/9/g3//f4N//3+Df/9/g3//f4N//3+Df/97g
-        3v/e397/3t/e/93e3f/d3t3/3N3c/9zd3P/b3Nv/2tva/9na2f/f4N///f39/AAAAGUAAAAwAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAABm/v7+/t3d3f/a2tr/29vb/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/9/f3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9/f3//f39//39/f/97e3v/d3d3/3d3d/9zc
-        3P/b29v/2tra/9nZ2f//////BwcHbAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGb/////29vb/9ra2v/b29v/3Nzc/93d3f/e3t7/3t7e/9/f3//f39//39/f/+Dg
-        4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh
-        4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
-        4P/g4OD/39/f/9/f3//f39//3t7e/97e3v/d3d3/3Nzc/9vb2//a2tr/2tra//////8hISF2AAAAMQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////c3dz/29zb/9vd
-        2//c3dz/3d7d/97f3v/e397/3+Df/9/g3//f4N//4OHg/+Dh4P/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/h4uH/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj
-        4v/j4+P/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Tk5P/k5OT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OTk/+Tk5P/j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Pj/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4eLh/+Hi4f/h4uH/4eLh/+Hi
-        4f/h4uH/4eLh/+Hi4f/g4eD/4OHg/+Dh4P/g4eD/4OHg/+Dh4P/f4N//3+Df/9/g3//e397/3t/e/93e
-        3f/c3dz/3N3c/9vc2//a29r//////yEhIXYAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////93d3f/c3Nz/3d3d/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Dg
-        4P/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh
-        4f/h4eH/4eHh/+Hh4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9vb2///////ISEhdgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3d3d/9zc
-        3P/d3d3/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4uLi/+Li
-        4v/i4uL/4uLi/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Dg4P/g4OD/39/f/9/f
-        3//e3t7/3d3d/93d3f/c3Nz/29vb//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////d3t3/3N3c/93e3f/d393/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Hi4f/h4uH/4eLh/+Hi4f/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4+Pj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5ub/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm5f/l5uX/5ebl/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5eX/5OXk/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j4+P/4uPi/+Lj4v/i4+L/4uPi/+Lj4v/i4+L/4uPi/+Hi
-        4f/h4uH/4eLh/+Hi4f/h4uH/4OHg/+Dh4P/f4N//3+Df/97f3v/d393/3d7d/9zd3P/b3Nv//////yEh
-        IXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97e
-        3v/d3d3/3t7e/9/f3//f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li4v/i4uL/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk
-        5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Li4v/h4eH/4eHh/+Dg
-        4P/g4OD/39/f/9/f3//e3t7/3d3d/9zc3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////3t7e/93d3f/e3t7/39/f/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/i4uL/4uLi/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Li4v/i4uL/4uLi/+Hh4f/h4eH/4ODg/+Dg4P/f39//39/f/97e3v/d3d3/3Nzc////
-        //8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///e3t7/3d3d/97e3v/f39//39/f/+Dg4P/g4OD/4eHh/+Hh4f/i4uL/4uLi/+Li4v/j4+P/4+Pj/+Pj
-        4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Hh
-        4f/g4OD/4ODg/9/f3//f39//3t7e/93d3f/c3Nz//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////97f3v/d3t3/3t/e/9/g3//f4N//4OHg/+Dh
-        4P/h4uH/4eLh/+Lj4v/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Pk4//j5OP/4+Tj/+Pk4//j5OP/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/l5eX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ubm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo
-        5//n6Of/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn5v/m5+b/5ubm/+Xm
-        5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xl5f/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Pk4//j5OP/4+Tj/+Pk
-        4//j5OP/4+Tj/+Pk4//j5OP/4uPi/+Lj4v/h4uH/4eLh/+Dh4P/g4eD/3+Df/9/g3//e397/3d7d/9ze
-        3P//////ISEhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////39/f/97e3v/f39//4ODg/+Dg4P/h4eH/4eHh/+Li4v/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Li
-        4v/i4uL/4eHh/+Hh4f/g4OD/4ODg/9/f3//e3t7/3t7e//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////f39//3t7e/9/f3//g4OD/4ODg/+Hh
-        4f/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Tk
-        5P/k5OT/5OTk/+Tk5P/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/g4OD/39/f/97e
-        3v/e3t7//////yEhIXYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////9/h3//e397/3+Df/+Dh4P/g4uD/4eLh/+Hj4f/i4+L/4uPi/+Pk4//k5eT/5OXk/+Tl
-        5P/k5eT/5OXk/+Tl5P/k5eT/5eXl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+fn5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6Oj/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+nq6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+jo6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n5+f/5ufm/+bn5v/m5+b/5ufm/+bn
-        5v/m5+b/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5eXl/+Tl5P/k5eT/5OXk/+Tl5P/k5eT/5OXk/+Tl
-        5P/i4+L/4uPi/+Hj4f/h4uH/4OLg/+Dh4P/f4N//3uDe/97f3v//////ISEhdgAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4eHh/9/f3//g4OD/4eHh/+Li
-        4v/i4uL/4+Pj/+Pj4//j4+P/5OTk/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//v7+//+fn5//////////////////////////////////////////////////z8/P/w8PD/6+vr/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm
-        5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg
-        4P/g4OD/39/f//////8hISF2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ//////h4eH/39/f/+Dg4P/h4eH/4uLi/+Li4v/j4+P/4+Pj/+Pj4//l5eX/5eXl/+Xl
-        5f/l5eX/5eXl/+Xl5f/l5eX/5eXl/+bm5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn
-        5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6+vr//Dw8P/9/f3///////b29v/BwcH/kJCQ/35+fv9OTk7/Pz8//wsL
-        C/87Ozv/Pz8//35+fv9+fn7/uLi4/+3t7f////////////Pz8//r6+v/6urq/+rq6v/q6ur/6urq/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl
-        5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/+Dg4P/f39///////yEhIXYAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Hi4f/f4d//4OHg/+Hi
-        4f/i4+L/4uPi/+Pk4//j5OP/4+Tj/+Xm5f/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/n5+f/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp6P/o6ej/6Ono/+jp
-        6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6+zr//P08///////7+/v/7Gx
-        sf9dXV3/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZG
-        Rv+goKD/4+Pj///////3+Pf/7e7t/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq6f/p6un/6erp/+np
-        6f/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+fn5//m5+b/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xm5f/l5uX/5ebl/+Xm5f/k5eT/4+Tj/+Pk4//i4+L/4uPi/+Hi
-        4f/g4eD/4OHg/9/g3///////ISIhdgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGf/////4uLi/+Hh4f/h4eH/4uLi/+Pj4//j4+P/5OTk/+Tk5P/l5eX/5ubm/+bm
-        5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+jo6P/o6Oj/6Ojo/+jo
-        6P/o6Oj/6Ojo/+np6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq
-        6v/r6+v/6+vr//Hx8f//////6urq/4WFhf8LCwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/XV1d/9XV1f//////9PT0/+zs
-        7P/r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+np6f/p6en/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm
-        5v/m5ub/5ubm/+Xl5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4ODg//////8iIiJ2AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////i4uL/4eHh/+Hh
-        4f/i4uL/4+Pj/+Pj4//k5OT/5OTk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+bm5v/n5+f/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6+vr/+zs7P/4+Pj/+vr6/56env8LCwv/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/29vb//v7+///////+/v7//r6+v/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/m5ub/5eXl/+Xl5f/k5OT/4+Pj/+Pj
-        4//i4uL/4eHh/+Hh4f/g4OD//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABn/////+Lj4v/h4uH/4eLh/+Lj4v/j5OP/4+Tj/+Tl5P/l5eX/5ebl/+bn
-        5v/m5+b/5ufm/+bn5v/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/5+jn/+jo6P/o6ej/6Ono/+jp
-        6P/o6ej/6Ono/+np6f/p6un/6erp/+nq6f/p6un/6erp/+rr6v/q6+r/6uvq/+rr6v/q6+r/6+vr/+vr
-        6//v7+///////+bm5v8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoa
-        Gv/Kysr///////Dx8P/r6+v/6+vr/+rr6v/q6+r/6uvq/+rr6v/q6+r/6erp/+nq6f/p6un/6erp/+nq
-        6f/p6en/6Ono/+jp6P/o6ej/6Ono/+jp6P/o6Oj/5+jn/+fo5//n6Of/5+jn/+fo5//n6Of/5ufm/+bn
-        5v/m5+b/5ufm/+bn5v/l5uX/5ebl/+Xl5f/j5OP/4+Tj/+Lj4v/h4+H/4eLh/+Dh4P//////IiIidgAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////4+Pj/+Li
-        4v/i4uL/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/6Ojo/+jo
-        6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq
-        6v/q6ur/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/8PDw///////Kysr/Dw8P/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+jo6P///////Pz8//r6+v/6+vr/+vr
-        6//r6+v/6+vr/+vr6//q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np
-        6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//n5+f/5+fn/+bm5v/m5ub/5eXl/+Tk
-        5P/k5OT/4+Pj/+Pj4//i4uL/4eHh//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////j4+P/4uLi/+Li4v/j4+P/5OTk/+Tk5P/l5eX/5eXl/+bm
-        5v/n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np
-        6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v
-        7///////urq6/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP+BgYH///////Ly8v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+fn
-        5//n5+f/5+fn/+fn5//n5+f/5ubm/+bm5v/l5eX/5OTk/+Tk5P/j4+P/4+Pj/+Li4v/h4eH//////yIi
-        InYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Pk
-        4//i4+L/4uTi/+Pk4//k5eT/5OXk/+Xm5f/m5+b/5ufm/+fo5//n6Of/5+jn/+fo5//n6Of/6Ono/+jp
-        6P/o6ej/6Ono/+jp6P/o6ej/6enp/+nq6f/p6un/6erp/+nq6f/p6un/6urq/+rr6v/q6+r/6uvq/+rr
-        6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//v7+///////8PDw/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+MjIz///////Dy
-        8P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6urq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6enp/+jp6P/o6ej/6Ono/+jp6P/o6ej/6Ono/+fo5//n6Of/5+jn/+fo5//m5+b/5ufm/+bn
-        5v/k5eT/5OXk/+Pk4//j5OP/4uPi/+Hi4f//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5OTk/+Pj4//k5OT/5OTk/+Xl5f/l5eX/5ubm/+fn
-        5//n5+f/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6enp/+np6f/q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/7e3t////
-        ///R0dH/CwsL/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+np6f//////+/v7//s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+np
-        6f/p6en/6Ojo/+jo6P/o6Oj/6Ojo/+fn5//n5+f/5+fn/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/4uLi////
-        //8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ///
-        ///k5OT/4+Pj/+Tk5P/k5OT/5eXl/+Xl5f/m5ub/5+fn/+fn5//o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+np
-        6f/p6en/6enp/+np6f/p6en/6enp/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr6//r6+v/6+vr/+vr
-        6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/29vb/8fHx/yUlJf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DAwM/2ZmZv+VlZX/uLi4/7i4uP+4uLj/qKio/3V1
-        df8bGxv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcH
-        B//V1dX//f39/+3t7f/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/5+fn/+fn
-        5//n5+f/5eXl/+Xl5f/k5OT/5OTk/+Pj4//i4uL//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABn/////+Tl5P/j5OP/5OXk/+Tl5P/l5uX/5ebl/+fo
-        5//n6Of/5+jn/+jp6P/o6ej/6Ono/+jp6P/p6en/6erp/+nq6f/p6un/6erp/+nq6f/p6un/6uvq/+rr
-        6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt7P/s7ez/7/Dv////
-        //9vb2//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/RkZG/8fH
-        x//5+fn//////////////////v7+///////////////////////T09P/dXV1/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/ywsLP/4+Pj/8/Tz/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+nq6f/p6un/6erp/+nq
-        6f/p6un/6erp/+np6f/o6ej/6Ono/+jp6P/n6Of/5+jn/+fo5//m5+b/5ebl/+Tl5P/k5eT/4+Tj/+Lj
-        4v//////IiIidgAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGf/////5eXl/+Tk5P/l5eX/5eXl/+bm5v/m5ub/6Ojo/+jo6P/o6Oj/6enp/+np6f/p6en/6enp/+np
-        6f/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//s7Oz/7Ozs/+zs
-        7P/s7Oz/7Ozs/+3t7f/t7e3/7e3t/+3t7f/+/v7/zMzM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/Jycn/8PDw//+/v7/+/v7/+np6f/k5OT/4uLi/+Li4v/i4uL/4uLi/+Li
-        4v/j4+P/5+fn//b29v/+/v7/3Nzc/0pKSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/5SUlP//////7+/v/+3t7f/t7e3/7e3t/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+jo
-        6P/o6Oj/6Ojo/+fn5//m5ub/5eXl/+Xl5f/k5OT/4+Pj//////8iIiJ2AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZ//////l5eX/5OTk/+Xl5f/l5eX/5ubm/+bm
-        5v/o6Oj/6Ojo/+jo6P/p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+vr
-        6//r6+v/6+vr/+vr6//r6+v/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7e3t/+3t7f/t7e3/8fHx////
-        //84ODj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0ZGRv/u7u7//v7+/+jo
-        6P/j4+P/4eHh/+Dg4P/e3t7/3d3d/9zc3P/c3Nz/3d3d/9/f3//g4OD/4uLi/+bm5v/39/f/+vr6/4WF
-        hf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BwcH/+rq6v/29vb/7e3t/+3t
-        7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/6+vr/+vr6//r6+v/6+vr/+vr6//q6ur/6urq/+rq
-        6v/q6ur/6urq/+rq6v/q6ur/6enp/+np6f/p6en/6Ojo/+jo6P/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Tk
-        5P/j4+P//////yIiInYAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABn/////+Xn5f/k5eT/5ebl/+Xm5f/m5+b/5ufm/+jp6P/o6ej/6Ono/+nq6f/p6un/6erp/+nq
-        6f/q6ur/6uvq/+rr6v/q6+r/6uvq/+rr6v/r6+v/6+zr/+vs6//r7Ov/6+zr/+vs6//s7Oz/7O3s/+zt
-        7P/s7ez/7O3s/+3t7f/t7e3/7e7t/+3u7f/+//7/xMTE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP9jY2P/+vr6//X19f/m5ub/4uLi/9/f3//c3Nz/2dnZ/9XV1f/T09P/09PT/9PT
-        0//V1dX/2NjY/9vb2//f39//4eHh/+Tk5P/v7+///v7+/6qqqv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/jo6O///////u7+7/7e7t/+3t7f/t7e3/7O3s/+zt7P/s7ez/7O3s/+zs
-        7P/r7Ov/6+zr/+vs6//r7Ov/6+zr/+vr6//q6+r/6uvq/+rr6v/q6+r/6uvq/+rq6v/p6un/6erp/+nq
-        6f/o6uj/6Ono/+jp6P/n6ef/5ufm/+Xm5f/l5uX/5OXk/+Pl4///////JSUleQAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGf/////5+fn/+Xl5f/m5ub/5ubm/+fn
-        5//p6en/6enp/+np6f/p6en/6urq/+rq6v/q6ur/6urq/+rq6v/r6+v/6+vr/+vr6//r6+v/6+vr/+zs
-        7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/u7u7/7+/v////
-        //9UVFT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/OTk5//T09P/z8/P/5OTk/+Hh
-        4f/e3t7/2dnZ/9TU1P/Pz8//y8vL/8jIyP/R0dH/y8vL/8rKyv/Nzc3/0tLS/9jY2P/d3d3/4ODg/+Tk
-        5P/s7Oz//v7+/3x8fP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QEBD/+Pj4//Pz
-        8//u7u7/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7Ozs/+zs7P/s7Oz/7Ozs/+zs7P/s7Oz/7Ozs/+vr
-        6//r6+v/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/o6Oj/5ubm/+bm
-        5v/l5eX/5eXl//////8lJSV5AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZ///////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        ////////////////////////////////////////6Ojo/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wgICP/k5OT/+vz6/+bm5v/i4+L/3t7e/9fX1//Q0dD/zM3M/+Lj4v/29vb///////v7
-        +//+/v7/+vr6/+fn5//P0M//zc7N/9XV1f/c3dz/4uPi/+Tl5P/x8fH/+vr6/z09Pf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+4uLj/////////////////////////////////////////
-        ////////////////////////////////////////////////////////////////////////////////
-        /////////////////////////////////////////////////////////////ygoKHkAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnbGxs/1VVVf9YWFj/W1tb/15e
-        Xv9hYWH/Y2Nj/2ZmZv9paWn/ampq/2xsbP9tbW3/b29v/3BwcP9wcHD/cXFx/3Jycv9zc3P/c3Nz/3R0
-        dP91dXX/dnZ2/3d3d/93d3f/eHh4/3l5ef96enr/e3t7/3x8fP99fX3/fn5+/35+fv9/f3//gICA/4GB
-        gf9SUlL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/l5eX//7+/v/p6en/5eXl/9/f
-        3//Y2Nj/zs7O/9nZ2f/8/Pz/8/Pz/+vr6//o6Oj/6Ojo/+jo6P/q6ur/8fHx///////k5OT/zc3N/9bW
-        1v/d3d3/4+Pj/+fn5//+/v7/1tbW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zQ0
-        NP+BgYH/gICA/39/f/9+fn7/fn5+/319ff98fHz/e3t7/3p6ev95eXn/eHh4/3d3d/93d3f/dnZ2/3V1
-        df90dHT/c3Nz/3Nzc/9ycnL/cXFx/3BwcP9wcHD/bm5u/2xsbP9ra2v/aWlp/2dnZ/9kZGT/YWFh/19f
-        X/9bW1v/WVlZ/1VVVf9sbGz/FRUVeQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xYWFv/z8/P/8/Pz/+fn5//h4uH/2tra/9HR0f/e397//v7+/+3t7f/p6en/6enp/+np
-        6f/p6en/6enp/+np6f/p6en/6+vr//f39//s7Oz/zc7N/9fY1//g4eD/5ufm/+vs6//+/v7/VlZW/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAh5AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ioqK//7+/v/q6ur/5eXl/9/f
-        3//V1dX/1dXV//7+/v/t7e3/6urq/+rq6v/q6ur/6+vr/+vr6//r6+v/6urq/+rq6v/q6ur/7Ozs//r6
-        +v/h4eH/0tLS/9zc3P/k5OT/6enp//7+/v/ExMT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgICHkAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP/MzMz//v7+/+rq6v/l5eX/3Nzc/9DQ0P/z8/P/8fLx/+zs7P/s7Oz/7Ozs/+zs
-        7P/s7ez/7O3s/+zt7P/s7Oz/7Ozs/+zs7P/s7Oz/7+/v//z8/P/R0dH/2tra/+Li4v/p6en/8fHx//f3
-        9/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJeQAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//f39//y8vL/6erp/+Lj
-        4v/Y2dj/19fX///////v7+//7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u
-        7v/t7e3/+vr6/+Hi4f/V1tX/4OHg/+jp6P/t7e3//////01NTf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JCQl6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8oKCj//////+/v7//p6en/4eHh/9fX1//k5OT//Pz8/+/v7//v8O//7/Dv/+/w
-        7//v8O//7/Dv/+/w7//v8O//7/Dv/+/w7//v8O//7/Dv/+/v7//19fX/8PDw/9TU1P/f39//5+fn/+3t
-        7f//////gICA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJ
-        CXoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0dHR///////7+/v/+rq
-        6v/h4eH/1tbW/+np6f/6+vr/8fHx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy8f/x8vH/8fLx//Hy
-        8f/x8vH/8fHx//X19f/39/f/09PT/9/f3//o6Oj/7u7u//////+Xl5f/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQkJegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/TExM///////w8PD/6+zr/+Pk4//X19f/7Ozs//z8/P/z8/P/8/Pz//Pz
-        8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9vb2//r6+v/T1NP/4OHg/+nq
-        6f/v8O///////52dnf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP88PDz///////Hy
-        8f/t7u3/5ubm/9na2f/n5+f///////X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1
-        9f/19fX/9fX1//X19f/6+vr/9PT0/9fX1//i4+L/6+zr//Hx8f//////ioqK/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv/9/f3/9vb2/+/v7//o6Oj/3d3d/+Dg4P//////9/f3//b3
-        9v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2//b39v/29/b/9vf2///////p6en/29vb/+bm
-        5v/u7u7/8/Pz//////9dXV3/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/CgoKegAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/9zc
-        3P/+/v7/8fHx/+vs6//i4uL/1tfW//v7+//8/Pz/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4
-        +P/4+Pj/+Pj4//j4+P/6+vr//////9vb2//f39//6urq//Hx8f/4+fj//f39/xoaGv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgp6AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ra2t//7+/v/09PT/7/Dv/+jo6P/d3d3/4+Pj////
-        ///7/Pv/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+fr5//n6+f/5+vn/+vr6///////w8PD/2tra/+bm
-        5v/t7u3/8/Pz//7+/v/W1tb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/woKCnoAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP87Ozv//f39//39/f/z8/P/7e3t/+Xl5f/Z2dn/7+/v///////9/v3/+vv6//r7+v/7+/v/+/v7//v7
-        +//6+/r/+vv6//z9/P//////+Pj4/9ra2v/j4+P/6+vr//Ly8v/4+Pj//v7+/4qKiv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CgoKegAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcICLr/BgaP/wcHkv8HB5X/BweX/wcH
-        m/8HB53/CAif/wgIoP8ICKP/CAik/wgIpf8ICKf/CQmn/wkJqP8JCaj/CQmp/wkJqv8JCav/CQmr/wkJ
-        rP8JCa3/CQmu/wkJrv8JCa//CQmw/wkJsP8JCbH/CQmy/woKs/8KCrP/Cgq0/woKtf8KCrb/Cwu3/wYG
-        cv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP++vr7//v7+//b29v/y8vL/7O3s/+Tk
-        5P/a29r/6Ojo//7+/v///////f39//z8/P/8/Pz//Pz8//z9/P///////////+/v7//a29r/4eLh/+rr
-        6v/x8vH/9fb1//7+/v/m5ub/BwcH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BARB/wsL
-        t/8KCrb/Cgq1/woKtP8KCrP/Cgqz/wkJsv8JCbH/CQmw/wkJsP8JCa//CQmu/wkJrv8JCa3/CQms/wkJ
-        q/8JCav/CQmq/wkJqf8JCaj/CQmo/wkJp/8ICKb/CAil/wgIo/8ICKH/CAif/wcHnv8HB5v/BweZ/wcH
-        lf8HB5P/BgaQ/wgIuv8dHR16AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZwkJy/8HB5v/Bwee/wgIoP8ICKP/CAim/wgIp/8JCaj/CQmr/wkJrP8JCa7/CQmu/woK
-        sP8KCrD/Cgqx/woKsv8KCrL/Cgqz/woKs/8KCrT/Cgq1/woKtv8KCrb/Cgq3/woKt/8KCrj/Cgq5/wsL
-        uf8LC7r/Cwu7/wsLu/8LC7z/Cwu9/wsLvf8LC8T/CwvU/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/zAwMP/39/f//v7+//b29v/y8vL/7e3t/+Xl5f/d3d3/3t7e//X19f//////////////
-        //////////////r6+v/j4+P/29vb/+Pj4//r6+v/8fHx//b29v/9/f3//v7+/3Jycv8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCqn/CwvL/wsLvf8LC73/Cwu8/wsLu/8LC7v/Cwu6/wsL
-        uf8KCrn/Cgq4/woKt/8KCrf/Cgq2/woKtv8KCrX/Cgq0/woKs/8KCrP/Cgqy/woKsv8KCrH/Cgqw/woK
-        r/8JCa7/CQmt/wkJq/8JCar/CAin/wgIpv8ICKT/CAih/wgInv8HB5z/CQnL/ysrK3oAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCAiy/wYGif8HB4v/BweP/wcH
-        kv8HB5X/BweX/wgImv8ICJv/CAid/wgIn/8ICKD/CAih/wkJov8JCaP/CQmk/wkJpf8JCaX/CQmm/wkJ
-        pv8JCaf/CQmo/wkJqf8JCar/CQmq/wkJq/8JCaz/CQmt/wkJrf8JCa7/Cgqv/woKsP8KCrH/Cgqx/woK
-        s/8MDND/AgI7/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/42Njf/+/v7//f39//b3
-        9v/z9PP/7/Dv/+nq6f/j5OP/3d3d/93d3f/k5OT/5eXl/+Xm5f/e397/3Nzc/+Hi4f/o6Oj/7u7u//Ly
-        8v/29vb//P38//7+/v+8vLz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAG/wwM
-        0v8KCrf/Cgqx/woKsf8KCrD/Cgqv/wkJrv8JCa3/CQmt/wkJrP8JCav/CQmq/wkJqv8JCan/CQmo/wkJ
-        p/8JCab/CQmm/wkJpf8JCaX/CQmk/wkJo/8JCaL/CAig/wgIoP8ICJ7/CAic/wgImv8HB5j/BweV/wcH
-        k/8HB5D/BweN/wYGif8ICLL/KioqewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcICLP/BgaK/wcHjP8HB5D/BweT/wcHlv8HB5j/CAib/wgInP8ICJ7/CAig/wgI
-        of8ICKL/CQmj/wkJpP8JCaT/CQml/wkJpv8JCaf/CQmn/wkJqP8JCan/CQmp/wkJqv8JCav/CQms/wkJ
-        rP8JCa7/CQmu/wkJr/8KCrD/Cgqx/woKsf8KCrL/Cgqz/wwMwv8KCrD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/7S0tP/+/v7//v7+//j4+P/19vX/8fLx/+7v7v/q6+r/5ufm/+Tl
-        5P/j5OP/5OTk/+bm5v/p6un/7u7u//Dx8P/09fT/9/j3//39/f/+/v7/1tbW/w0NDf8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBnX/DAzK/woKtP8KCrL/Cgqx/woKsf8KCrD/CQmv/wkJ
-        rv8JCa7/CQms/wkJrP8JCav/CQmq/wkJqf8JCan/CQmo/wkJp/8JCaf/CQmm/wkJpf8JCaT/CQmk/wkJ
-        o/8ICKH/CAih/wgIn/8ICJ3/CAib/wcHmf8HB5b/BweU/wcHkf8HB47/BgaK/wgIs/8qKip7AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwgItv8GBoz/BweO/wcH
-        kf8HB5T/BweX/wcHmf8ICJv/CAid/wgIn/8ICKH/CAii/wgIo/8JCaT/CQmk/wkJpf8JCab/CQmm/wkJ
-        p/8JCaj/CQmp/wkJqf8JCar/CQmr/wkJrP8JCaz/CQmt/wkJrv8JCa//CQmv/woKsP8KCrH/Cgqy/woK
-        s/8KCrP/Cgq3/w4O1P8CAif/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/6ur
-        q//+/v7//v7+//r7+v/3+Pf/9vb2//P08//x8fH/7/Dv/+/v7//v8O//8PHw//Lz8v/19vX/9/j3//r6
-        +v/+/v7//v7+/8vLy/8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwM
-        z/8KCrz/Cgqz/woKs/8KCrL/Cgqx/woKsP8JCa//CQmv/wkJrv8JCa3/CQms/wkJrP8JCav/CQmq/wkJ
-        qf8JCan/CQmo/wkJp/8JCab/CQmm/wkJpf8JCaT/CQmk/wgIov8ICKL/CAig/wgInv8ICJz/BweZ/wcH
-        l/8HB5X/BweS/wcHj/8GBov/CAi2/yoqKnsAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnCQm3/wcHjf8HB4//CAiT/wgIlf8ICJn/CAia/wkJnP8JCZ7/CQmf/wkJ
-        ov8JCaP/CQmk/woKpf8KCqX/Cgqm/woKp/8KCqf/Cgqo/woKqf8KCqn/Cgqq/woKq/8KCqv/Cgqs/woK
-        rf8KCq7/Cgqu/wsLr/8LC7D/Cwux/wsLsf8LC7L/Cwuz/wsLtP8LC7X/DAzE/wsLt/8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Jycv/x8fH//v7+//7+/v/7/Pv/+fr5//j4
-        +P/3+Pf/9/j3//f49//4+Pj/+fr5//r6+v/+/v7//v7+//r6+v+tra3/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBm//DAzN/wsLtv8LC7T/Cwuz/wsLsv8LC7H/Cwux/wsL
-        sP8LC6//Cgqu/woKrv8KCq3/Cgqs/woKq/8KCqv/Cgqq/woKqf8KCqn/Cgqo/woKp/8KCqf/Cgqm/woK
-        pf8KCqX/CQmj/wkJo/8JCaH/CQme/wkJnf8ICJr/CAiZ/wgIlv8ICJP/CAiQ/wcHjP8JCbf/KioqewAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC7j/CAiO/wgI
-        kP8JCZT/CQmW/wkJmf8JCZv/CQmd/woKn/8KCqD/Cgqj/woKo/8LC6X/Cwum/wsLpv8LC6f/Cwun/wsL
-        qP8LC6n/Cwup/wsLqv8LC6v/Cwus/wsLrP8LC63/Cwuu/wsLrv8MDK//DAyw/wwMsf8MDLH/DAyy/wwM
-        s/8MDLP/DAy0/wwMtf8MDLn/ERHU/wQET/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/xoaGv+urq7/9vb2///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////39
-        /f/CwsL/OTk5/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIZ/xER
-        1/8MDLz/DAy1/wwMtP8MDLP/DAyz/wwMsv8MDLH/DAyx/wwMsP8MDK//Cwuu/wsLrv8LC63/Cwus/wsL
-        rP8LC6v/Cwuq/wsLqf8LC6n/Cwuo/wsLp/8LC6f/Cwum/wsLpv8LC6T/Cgqj/woKov8KCp//CQme/wkJ
-        m/8JCZr/CQmW/wkJlP8ICJL/CAiN/wsLuP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsLu/8ICJD/CAiS/wkJlv8JCZn/CQmb/wkJnv8JCZ//Cgqh/woK
-        o/8KCqX/Cgql/wsLp/8LC6f/Cwuo/wsLqP8LC6n/Cwuq/wsLqv8LC6v/Cwur/wsLrP8LC63/Cwuu/wsL
-        rv8LC6//Cwuw/wwMsf8MDLH/DAyy/wwMsv8MDLP/DAy0/wwMtf8MDLX/DAy2/wwMt/8MDMD/Dw/T/wAA
-        DP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ICAj/dnZ2/7q6
-        uv/h4eH/4uLi///////p6en/4eHh/8nJyf+EhIT/ISEh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MDLn/Dw/G/wwMuP8MDLb/DAy1/wwMtf8MDLT/DAyz/wwM
-        sv8MDLL/DAyx/wwMsf8LC7D/Cwuv/wsLrv8LC67/Cwut/wsLrP8LC6v/Cwur/wsLqv8LC6r/Cwup/wsL
-        qP8LC6j/Cwun/wsLpv8KCqX/Cgqk/woKof8JCaD/CQme/wkJnP8JCZn/CQmW/wgIlP8ICJD/Cwu7/ysr
-        K3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwu+/wkJ
-        kv8JCZP/CQmW/woKmv8KCpz/Cgqe/woKoP8LC6P/Cwuk/wsLpv8LC6b/DAyn/wwMqP8MDKj/DAyp/wwM
-        qv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrf8MDK7/DAyv/w0NsP8NDbD/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0NuP8QEMj/Dg65/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CQmC/xIS
-        0v8NDbr/DQ23/w0Ntv8NDbb/DQ21/w0NtP8NDbT/DQ2z/w0Ns/8NDbL/DQ2x/w0NsP8NDbD/DAyv/wwM
-        rv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyp/wwMqP8MDKj/DAym/wsLpv8LC6X/Cwuj/woK
-        of8KCp//Cgqc/woKmv8JCZj/CQmU/wkJkf8LC77/KysrewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcLC8D/CQmU/wkJlv8JCZj/Cgqc/woKnv8KCqD/Cgqi/wsL
-        pP8LC6b/Cwun/wsLqP8MDKn/DAyq/wwMqv8MDKv/DAyr/wwMrP8MDKz/DAyt/wwMrv8MDK//DAyv/wwM
-        sP8MDLD/DAyx/w0Nsv8NDbL/DQ2z/w0Ns/8NDbT/DQ21/w0Ntv8NDbb/DQ23/w0Nt/8NDbj/DQ25/w0N
-        u/8QENH/DAyh/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcHXP8SEtf/DQ29/w0Nuf8NDbj/DQ23/w0Nt/8NDbb/DQ22/w0N
-        tf8NDbT/DQ2z/w0Ns/8NDbL/DQ2y/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwMrf8MDKz/DAys/wwM
-        q/8MDKv/DAyq/wwMqv8MDKj/Cwuo/wsLpv8LC6X/Cgqi/woKof8KCp7/Cgqc/wkJmv8JCZb/CQmT/wsL
-        wP8rKyt7AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwsL
-        wP8JCZT/CQmW/wkJmP8KCpz/Cgqe/woKoP8KCqL/Cwuk/wsLpf8LC6f/Cwuo/wsLqf8MDKr/DAyq/wwM
-        q/8MDKv/DAys/wwMrP8MDK3/DAyt/wwMrv8MDK//DAyw/wwMsP8MDLH/DQ2x/w0Nsv8NDbP/DQ2z/w0N
-        tP8NDbX/DQ21/w0Ntv8NDbb/DQ23/w0NuP8NDbj/DQ25/w4Ovf8SEtT/DAyT/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HB13/EhLZ/w4O
-        wP8NDbr/DQ24/w0NuP8NDbf/DQ22/w0Ntv8NDbX/DQ21/w0NtP8NDbP/DQ2z/w0Nsv8NDbH/DAyx/wwM
-        sP8MDLD/DAyv/wwMrv8MDK3/DAyt/wwMrP8MDKz/DAyr/wwMq/8MDKr/DAyq/wsLqP8LC6j/Cwum/wsL
-        pP8KCqL/Cgqh/woKnv8KCpz/CQma/wkJlv8JCZP/CwvA/ysrK3sAAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnCwvE/wkJlv8JCZj/CQmb/woKnf8KCqD/Cgqi/woK
-        o/8LC6b/Cwun/wsLqf8LC6n/Cwur/wwMq/8MDKz/DAys/wwMrf8MDK3/DAyu/wwMr/8MDK//DAyw/wwM
-        sP8MDLH/DAyx/wwMsv8MDLP/DQ2z/w0NtP8NDbX/DQ21/w0Ntv8NDbf/DQ23/w0NuP8NDbj/DQ25/w0N
-        uf8NDbr/DQ26/w4Ov/8REdP/Dg65/wAAB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/CgqN/xQU2f8ODsH/DQ27/w0Nuv8NDbn/DQ25/w0NuP8NDbj/DQ23/w0N
-        t/8NDbb/DQ21/w0Ntf8NDbT/DQ2z/wwMs/8MDLL/DAyx/wwMsf8MDLD/DAyw/wwMr/8MDK//DAyu/wwM
-        rf8MDK3/DAys/wwMrP8MDKv/Cwuq/wsLqf8LC6j/Cwum/woKpP8KCqL/Cgqg/woKnv8JCZv/CQmZ/wkJ
-        lv8LC8T/LCwsewAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcMDMb/CgqY/woKmf8KCpz/Cwue/wsLof8LC6P/Cwuk/wwMp/8MDKj/DAyq/wwMqv8MDKv/DQ2s/w0N
-        rP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0NsP8NDbD/DQ2x/w0Nsv8NDbL/DQ2z/w4Os/8ODrT/Dg61/w4O
-        tf8ODrb/Dg62/w4Ot/8ODrf/Dg64/w4Ouf8ODrn/Dg66/w8Puv8PD7v/Dw+7/w8Pvv8REc7/ERHR/wIC
-        Kf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w8Psf8UFNb/Dw/A/w8P
-        vP8PD7v/Dw+6/w4Ouv8ODrn/Dg65/w4OuP8ODrf/Dg63/w4Otv8ODrb/Dg61/w4Otf8ODrT/Dg6z/w0N
-        s/8NDbL/DQ2y/w0Nsf8NDbD/DQ2w/w0Nr/8NDa7/DQ2u/w0Nrf8NDa3/DQ2s/w0NrP8MDKr/DAyq/wwM
-        qf8MDKf/Cwul/wsLo/8LC6H/Cwuf/woKnP8KCpr/CgqX/wwMxv8sLCx7AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZwwMx/8KCpn/Cgqa/woKnf8LC5//Cwui/wsL
-        pP8LC6X/DAyo/wwMqf8MDKr/DAyr/wwMrP8NDa3/DQ2t/w0Nrv8NDa7/DQ2v/w0Nr/8NDbD/DQ2w/w0N
-        sf8NDbH/DQ2y/w0Ns/8NDbP/Dg60/w4OtP8ODrX/Dg61/w4Otv8ODrf/Dg63/w4OuP8ODrn/Dg65/w4O
-        uv8ODrr/Dg67/w8Pu/8PD7z/Dw+8/w8Pvv8REcn/FBTY/wkJcP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wUFSP8REdP/ERHP/w8Pv/8PD7z/Dw+8/w8Pu/8ODrv/Dg66/w4Ouv8ODrn/Dg65/w4O
-        uP8ODrf/Dg63/w4Otv8ODrX/Dg61/w4OtP8ODrT/DQ2z/w0Ns/8NDbL/DQ2x/w0Nsf8NDbD/DQ2w/w0N
-        r/8NDa//DQ2u/w0Nrv8NDa3/DQ2t/wwMq/8MDKv/DAyp/wwMqP8LC6b/Cwuk/wsLov8LC6D/Cgqd/woK
-        m/8KCpj/DAzH/y0tLXwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABnDAzL/woKm/8KCp3/Cgqf/wsLof8LC6P/Cwum/wsLp/8MDKn/DAyr/wwMrP8MDK3/DAyu/wwM
-        rv8NDa//DQ2v/w0NsP8NDbD/DQ2x/w0Nsf8NDbL/DQ2y/w0Ns/8NDbT/DQ20/w0Ntf8NDbX/Dg62/w4O
-        tv8ODrf/Dg64/w4OuP8ODrn/Dg65/w4Ouf8ODrr/Dg67/w4Ou/8ODrz/Dg68/w4OvP8PD73/Dw+9/w8P
-        vv8PD8T/FRXY/xERyP8FBVb/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICKv8PD7P/FRXc/xERx/8PD7//Dw+9/w8P
-        vf8ODrz/Dg68/w4OvP8ODrv/Dg67/w4Ouv8ODrn/Dg65/w4Ouf8ODrj/Dg64/w4Ot/8ODrb/Dg62/w0N
-        tf8NDbX/DQ20/w0NtP8NDbP/DQ2y/w0Nsv8NDbH/DQ2x/w0NsP8NDbD/DQ2v/w0Nr/8MDK7/DAyt/wwM
-        rf8MDKv/DAyq/wsLp/8LC6b/Cwul/wsLof8KCp//Cgqd/woKm/8MDMv/LS0tfAAAADIAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcNDcv/Cgqb/wsLnf8LC5//DAyh/wwM
-        o/8MDKb/DAyn/wwMqf8NDav/DQ2s/w0NrP8NDa7/Dg6u/w4Or/8ODq//Dg6w/w4OsP8ODrH/Dg6x/w4O
-        sv8ODrL/Dg6z/w4Os/8ODrT/Dg60/w8Ptf8PD7b/Dw+2/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+7/w8Pu/8QELv/EBC8/xAQvP8QEL3/EBC9/xAQvv8QEMD/EhLJ/xUV2/8TE8//Cgp9/wAA
-        AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUF
-        X/8QELz/FRXd/xISzf8QEML/EBC//xAQvf8QEL3/EBC8/xAQvP8QELv/Dw+7/w8Pu/8PD7r/Dw+6/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptv8PD7b/Dw+1/w4OtP8ODrT/Dg6z/w4Os/8ODrL/Dg6y/w4O
-        sf8ODrH/Dg6w/w4OsP8ODq//Dg6v/w4Orv8NDa3/DQ2s/w0Nq/8MDKr/DAyn/wwMpv8MDKX/DAyh/wsL
-        n/8LC53/Cgqb/w0Ny/8tLS18AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAwAAAAZw0Nzv8KCp7/Cwuf/wsLof8MDKT/DAym/wwMqP8MDKr/DAyr/w0NrP8NDa7/DQ2u/w0N
-        sP8NDbD/Dg6x/w4Osf8ODrH/Dg6y/w4Osv8ODrL/Dg6z/w4OtP8ODrT/Dg61/w4Otf8ODrb/Dg62/w8P
-        t/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8Puv8PD7r/Dw+7/w8Pu/8PD7z/Dw+8/w8Pvf8QEL3/EBC9/xAQ
-        vv8QEL7/EBC//xAQv/8QEL//EBDB/xISyf8SEtX/FRXd/xMTyf8ODpf/BQVh/wAAAP8AAAD/AAAA/wAA
-        AP8AAAD/AAAA/wAAAP8FBVH/CgqC/xAQuP8VFd3/FRXZ/xISy/8QEMP/EBDA/xAQv/8QEL//EBC+/xAQ
-        vv8QEL3/EBC9/w8Pvf8PD7z/Dw+8/w8Pu/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dw+3/w8P
-        t/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4OtP8ODrP/Dg6y/w4Osv8ODrL/Dg6x/w4Osf8ODrH/DQ2w/w0N
-        r/8NDa7/DQ2t/wwMq/8MDKr/DAyo/wwMp/8MDKT/Cwui/wsLn/8KCp3/DQ3O/y0tLXwAAAAyAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnDQ3P/woKn/8LC6D/Cwuj/wwM
-        pf8MDKf/DAyo/wwMq/8MDKz/DQ2t/w0Nr/8NDa//DQ2w/w0Nsf8ODrH/Dg6x/w4Osv8ODrL/Dg6z/w4O
-        s/8ODrT/Dg60/w4Otf8ODrX/Dg62/w4Otv8ODrf/Dg63/w8PuP8PD7j/Dw+5/w8Puf8PD7r/Dw+6/w8P
-        u/8PD7v/Dw+8/w8PvP8PD73/Dw+9/w8Pvf8PD77/EBC+/xAQv/8QEL//EBC//xAQv/8QEMD/EBDA/xAQ
-        wf8QEMT/EhLL/xIS0v8WFtr/Fhbi/xYW3P8TE9b/ExPX/xMT1/8TE9X/Fhbk/xYW3P8SEtX/EhLN/xAQ
-        xv8QEMH/EBDA/xAQwP8QEL//EBC//xAQv/8QEL//EBC+/w8Pvv8PD73/Dw+9/w8Pvf8PD7z/Dw+8/w8P
-        u/8PD7v/Dw+6/w8Puv8PD7n/Dw+5/w8PuP8PD7j/Dg63/w4Ot/8ODrb/Dg62/w4Otf8ODrX/Dg60/w4O
-        tP8ODrP/Dg6z/w4Osv8ODrL/Dg6x/w4Osf8NDbH/DQ2v/w0Nr/8NDa7/DAys/wwMq/8MDKn/DAyn/wwM
-        pf8LC6P/Cwuh/woKnv8NDc//LS0tfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAMAAAAGcPD9D/Cwug/wwMov8MDKT/DAym/w0NqP8NDan/DQ2s/w0Nrf8ODq7/Dg6v/w4O
-        sP8ODrH/Dg6y/w4Osv8PD7L/Dw+z/w8Ps/8PD7P/Dw+0/w8PtP8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8P
-        t/8QELj/EBC4/xAQuf8QELn/EBC6/xAQuv8QELv/EBC7/xAQvP8QELz/EBC8/xAQvf8QEL3/ERG9/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHA/xERwf8REcH/ERHB/xERwf8REcL/ERHE/xER
-        x/8REcf/ERHH/xERxv8REcP/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERwP8REb//ERG//xER
-        v/8REb7/ERG+/xERvf8QEL3/EBC9/xAQvP8QELz/EBC8/xAQu/8QELv/EBC6/xAQuv8QELn/EBC5/xAQ
-        uP8QELj/Dw+3/w8Pt/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8PD7P/Dw+z/w8Ps/8PD7L/Dg6y/w4O
-        sv8ODrD/Dg6w/w4Orv8NDa3/DQ2s/w0Nqv8NDaj/DAym/wwMpP8MDKL/Cwuf/w8P0P8uLy58AAAAMgAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZw8P1P8LC6L/DAyk/wwM
-        pv8MDKj/DQ2q/w0Nq/8NDa3/DQ2v/w4OsP8ODrH/Dg6y/w4Os/8ODrP/Dg6z/w8PtP8PD7T/Dw+1/w8P
-        tf8PD7b/Dw+2/w8Pt/8PD7f/Dw+3/w8PuP8PD7j/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        vP8QELz/EBC9/xAQvf8QEL7/EBC+/xAQvv8QEL//ERG//xERv/8REcD/ERHA/xERwP8REcH/ERHB/xER
-        wf8REcH/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xER
-        wv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//EBC//xAQvv8QEL7/EBC+/xAQ
-        vf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQuv8QELr/EBC6/w8Puf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8P
-        t/8PD7b/Dw+2/w8Ptf8PD7X/Dw+0/w8PtP8ODrP/Dg6z/w4Osv8ODrL/Dg6w/w0Nr/8NDa7/DQ2r/w0N
-        qv8MDKj/DAym/wwMpP8LC6L/Dw/U/y4vLnwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAADAAAABnDw/X/wsLpf8MDKb/DAyo/wwMqv8NDaz/DQ2u/w0Nr/8NDbH/Dg6y/w4O
-        s/8ODrP/Dg60/w4Otf8ODrX/Dg62/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8PuP8PD7n/Dw+5/w8P
-        uv8PD7r/Dw+6/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xAQv/8QEL//EBDA/xAQ
-        wP8QEMD/EBDA/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xERwv8REcL/ERHC/xERw/8REcP/ERHD/xER
-        w/8REcP/ERHD/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xERwv8REcL/ERHC/xERwv8REcL/ERHB/xER
-        wf8REcH/EBDA/xAQwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL3/EBC9/xAQvf8QELz/EBC8/xAQ
-        vP8PD7v/Dw+6/w8Puv8PD7r/Dw+5/w8Puf8PD7j/Dw+4/w8Pt/8PD7f/Dw+3/w8Ptv8PD7b/Dg62/w4O
-        tf8ODrX/Dg6z/w4Os/8ODrL/DQ2x/w0NsP8NDa7/DQ2s/wwMqv8MDKn/DAym/wsLpP8PD9f/Li8ufAAA
-        ADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQENf/DAyl/wwM
-        pv8NDaj/DQ2q/w4OrP8ODq7/Dg6v/w4OsP8PD7L/Dw+z/w8Ps/8PD7T/Dw+1/w8Ptf8PD7X/EBC2/xAQ
-        tv8QELf/EBC3/xAQt/8QELj/EBC4/xAQuf8QELn/EBC5/xAQuv8QELr/EBC6/xERu/8REbz/ERG8/xER
-        vP8REb3/ERG9/xERvf8REb7/ERG+/xERv/8REb//ERG//xERwP8SEsD/EhLA/xISwP8SEsH/EhLB/xIS
-        wf8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xISwv8SEsL/EhLC/xIS
-        wv8SEsL/EhLC/xISwv8SEsL/EhLB/xISwf8SEsH/EhLA/xISwP8SEsD/ERHA/xERv/8REb//ERG//xER
-        vv8REb7/ERG9/xERvf8REb3/ERG8/xERvP8REbz/ERG7/xAQuv8QELr/EBC6/xAQuf8QELn/EBC5/xAQ
-        uP8QELj/EBC3/xAQt/8QELf/EBC2/xAQtv8PD7X/Dw+1/w8Ptf8PD7P/Dw+z/w8Psv8ODrH/Dg6v/w4O
-        rv8ODqz/DQ2q/w0Nqf8NDab/DAyk/xAQ1/8vLy98AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ2/8MDKf/DAyp/w0Nq/8NDa3/Dg6u/w4OsP8ODrH/Dg6y/w8P
-        s/8PD7X/Dw+1/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/EBC4/xAQuP8QELj/EBC5/xAQuf8QELr/EBC6/xAQ
-        u/8QELv/EBC7/xAQvP8QELz/EBC8/xERvf8REb3/ERG+/xERvv8REb7/ERG//xERv/8REb//ERHA/xER
-        wP8REcH/ERHB/xERwf8SEsH/EhLB/xISwv8SEsL/EhLC/xISwv8SEsP/EhLD/xISw/8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISwv8SEsL/EhLC/xIS
-        wv8SEsH/EhLB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/ERG9/xER
-        vf8QELz/EBC8/xAQvP8QELv/EBC7/xAQu/8QELr/EBC6/xAQuf8QELn/EBC4/xAQuP8QELj/Dw+3/w8P
-        t/8PD7f/Dw+2/w8Ptf8PD7X/Dw+0/w4Osv8ODrH/Dg6w/w4Orv8NDa3/DQ2r/wwMqf8MDKb/EBDb/zAw
-        MHwAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDc/wwM
-        qP8MDKr/DQ2s/w0Nrv8ODq//Dg6x/w4Osv8ODrP/Dw+0/w8Ptv8PD7b/Dw+3/w8Pt/8PD7f/Dw+4/w8P
-        uP8QELn/EBC5/xAQuf8QELr/EBC6/xAQuv8QELv/EBC7/xAQu/8QELz/EBC8/xAQvf8QEL3/EBC9/xER
-        vv8REb7/ERG+/xERv/8REb//ERG//xERwP8REcD/ERHB/xERwf8REcH/ERHB/xERwv8REcL/ERHC/xIS
-        wv8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsT/EhLE/xISxP8SEsP/EhLD/xIS
-        w/8SEsP/EhLD/xISw/8SEsP/EhLD/xISw/8SEsL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xER
-        wP8REcD/ERG//xERv/8REb//ERG+/xERvv8REb7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELv/EBC7/xAQ
-        u/8QELr/EBC6/xAQuv8QELn/EBC5/xAQuf8PD7j/Dw+4/w8Pt/8PD7f/Dw+2/w8Ptv8PD7X/Dg6z/w4O
-        sv8ODrH/Dg6v/w0Nrv8NDaz/DAyq/wwMqP8QENz/MDAwfAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGcQEN7/DAyq/wwMq/8NDa3/DQ2v/w4OsP8ODrL/Dg6z/w4O
-        tP8PD7X/Dw+2/w8Pt/8PD7j/Dw+4/w8PuP8PD7n/Dw+5/w8Puf8QELr/EBC6/xAQuv8QELv/EBC7/xAQ
-        u/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL7/EBC+/xERv/8REb//ERG//xERv/8REcD/ERHA/xER
-        wf8REcH/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8SEsP/EhLD/xISw/8SEsP/EhLE/xIS
-        xP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsT/EhLE/xISxP8SEsP/EhLD/xISw/8SEsP/ERHD/xER
-        w/8REcL/ERHC/xERwv8REcL/ERHB/xERwf8REcH/ERHB/xERwP8REcD/ERG//xERv/8REb//ERG//xAQ
-        vv8QEL7/EBC9/xAQvf8QEL3/EBC8/xAQvP8QELz/EBC7/xAQu/8QELv/EBC6/xAQuv8QELr/Dw+5/w8P
-        uf8PD7n/Dw+4/w8PuP8PD7f/Dw+3/w8Ptf8ODrT/Dg6z/w4Osv8ODrH/DQ2v/w0Nrf8MDKv/DAyp/xAQ
-        3v8wMDB8AAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxAQ
-        4v8MDKz/DAyt/w0Nr/8NDbH/Dg6y/w4OtP8ODrX/Dg62/w8Pt/8PD7j/Dw+5/w8Puv8PD7r/Dw+6/w8P
-        uv8PD7v/Dw+7/w8Pu/8QELz/EBC8/xAQvP8QEL3/EBC9/xAQvf8QEL3/EBC+/xAQvv8QEL7/EBC//xAQ
-        v/8QEMD/EBDA/xERwP8REcD/ERHB/xERwf8REcL/ERHC/xERwv8REcL/ERHD/xERw/8REcP/ERHD/xER
-        w/8REcT/ERHE/xERxP8REcT/ERHE/xERxf8REcX/EhLF/xISxf8SEsX/EhLF/xISxf8SEsX/EhLF/xIS
-        xf8SEsX/ERHF/xERxf8REcT/ERHE/xERxP8REcT/ERHE/xERw/8REcP/ERHD/xERw/8REcP/ERHC/xER
-        wv8REcL/ERHC/xERwf8REcH/ERHA/xERwP8QEMD/EBDA/xAQv/8QEL//EBC+/xAQvv8QEL7/EBC9/xAQ
-        vf8QEL3/EBC9/xAQvP8QELz/EBC8/w8Pu/8PD7v/Dw+7/w8Puv8PD7r/Dw+6/w8Puf8PD7n/Dw+3/w4O
-        tv8ODrX/Dg60/w4Os/8NDbH/DQ2v/wwMrf8MDKv/EBDi/zExMX0AAAAyAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABnEBDk/w0Nrv8NDbD/Dg6x/w4Os/8ODrX/Dw+2/w8P
-        t/8PD7j/EBC5/xAQuv8QELr/EBC8/xAQvP8QELz/EBC8/xAQvP8QEL3/EBC9/xERvf8REb7/ERG+/xER
-        vv8REb7/ERG//xERv/8REb//ERHA/xERwP8REcD/ERHB/xERwf8SEsH/EhLC/xISwv8SEsL/EhLC/xIS
-        w/8SEsP/EhLD/xISxP8SEsT/EhLE/xISxP8SEsX/EhLF/xISxf8SEsX/EhLF/xISxf8TE8b/ExPG/xMT
-        xv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8TE8b/ExPG/xMTxv8SEsX/EhLF/xIS
-        xf8SEsX/EhLF/xISxf8SEsT/EhLE/xISxP8SEsT/EhLD/xISw/8SEsP/EhLC/xISwv8SEsL/EhLC/xIS
-        wf8REcH/ERHB/xERwP8REcD/ERHA/xERv/8REb//ERG//xERvv8REb7/ERG+/xERvv8REb3/EBC9/xAQ
-        vf8QELz/EBC8/xAQvP8QELz/EBC7/xAQuv8QELn/Dw+4/w8Pt/8PD7b/Dg61/w4Os/8ODrH/DQ2w/w0N
-        rf8QEOT/MTExfQAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA
-        AGcUFOb/Dw+w/xAQsP8QELP/ERG0/xERtv8SErf/EhK4/xISuf8SErr/ExO7/xMTu/8TE7z/ExO9/xMT
-        vf8TE73/ExO9/xMTvf8TE77/FBS+/xQUvv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXF/xYW
-        xf8WFsX/FhbF/xYWxf8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xUVxf8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVwv8VFcL/FRXC/xUVwv8UFMH/FBTB/xQUwP8UFMD/FBTA/xQU
-        wP8UFL//FBS//xQUv/8UFL//FBS+/xQUvv8TE77/ExO9/xMTvf8TE73/ExO9/xMTvf8TE7v/ExO7/xIS
-        uv8SErn/EhK4/xISt/8REbb/ERG0/xAQs/8QELH/Dw+v/xQU5v8xMTF9AAAAMgAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAZxQU5v8PD6//EBCw/xAQsv8REbT/ERG2/xIS
-        t/8SErj/EhK5/xISuv8TE7v/ExO7/xMTvP8TE7z/ExO9/xMTvf8TE73/ExO9/xMTvv8TE77/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBTA/xQUwP8UFMD/FBTA/xQUwf8UFMH/FRXC/xUVwv8VFcL/FRXC/xUV
-        w/8VFcP/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxf8VFcX/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUV
-        wv8VFcL/FBTB/xQUwf8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL//FBS//xQUvv8UFL7/ExO+/xMT
-        vv8TE73/ExO9/xMTvf8TE73/ExO8/xMTu/8TE7v/EhK6/xISuf8SErj/EhK3/xERtv8REbT/EBCz/xAQ
-        sP8PD6//FBTm/zIyMn0AAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        ADAAAABlFBTo/xAQsv8QELP/ERG1/xIStv8SErj/ExO5/xMTuv8TE7v/ExO8/xQUvf8UFL3/FBS+/xQU
-        vv8UFL//FBS//xQUv/8UFL//FBS//xQUwP8VFcD/FRXA/xUVwP8VFcH/FRXB/xUVwf8VFcH/FRXC/xUV
-        wv8VFcL/FRXC/xUVw/8VFcP/FhbD/xYWw/8WFsT/FhbE/xYWxP8WFsT/FhbF/xYWxf8WFsX/FhbF/xYW
-        xf8WFsb/FhbG/xYWxv8XF8b/FxfG/xcXxv8XF8b/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXxv8XF8b/FxfG/xcXxv8WFsb/FhbG/xYWxv8WFsX/FhbF/xYW
-        xf8WFsX/FhbF/xYWxP8WFsT/FhbE/xYWxP8WFsP/FhbD/xUVw/8VFcP/FRXC/xUVwv8VFcL/FRXC/xUV
-        wf8VFcH/FRXB/xUVwf8VFcD/FRXA/xUVwP8UFMD/FBS//xQUv/8UFL//FBS//xQUv/8UFL7/FBS9/xQU
-        vf8TE7z/ExO7/xMTuv8TE7n/EhK4/xIStv8REbX/ERGz/xAQsf8UFOr/MjIyewAAADEAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAGQUFOr/EBCz/xAQtP8REbX/EhK3/xIS
-        uf8SErr/ExO7/xMTvP8TE73/FBS+/xQUvv8UFL//FBS//xQUv/8UFMD/FBTA/xQUwP8UFMD/FBTA/xQU
-        wf8VFcH/FRXB/xUVwf8VFcL/FRXC/xUVwv8VFcL/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FhbE/xYW
-        xP8WFsX/FhbF/xYWxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xcX
-        x/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xcXx/8XF8f/FxfH/xYW
-        x/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxf8WFsX/FhbF/xYWxf8WFsX/FhbE/xYW
-        xP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcL/FRXC/xUVwv8VFcL/FRXB/xUVwf8VFcH/FBTB/xQU
-        wP8UFMD/FBTA/xQUwP8UFMD/FBS//xQUv/8UFL7/FBS+/xMTvf8TE7z/ExO7/xISuv8SErn/EhK3/xER
-        tf8QELT/EBCy/xQU6/8yMjJ7AAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAtAAAAYhUV7v8REbX/EBC2/xERuP8REbn/EhK7/xISvP8TE73/ExO+/xMTv/8UFMD/FBTA/xQU
-        wf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQUwv8UFML/FBTC/xQUwv8VFcP/FRXD/xUVw/8VFcP/FRXE/xUV
-        xP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUVxf8VFcX/FRXG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsn/FhbJ/xYW
-        yf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8VFcb/FRXF/xUVxf8VFcX/FRXF/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQUwv8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wP8UFMD/ExO//xMTvv8TE73/EhK8/xISu/8REbn/ERG4/xAQtv8QELT/Fhbu/zQ0NHkAAAAuAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAABeGBjp/hMTuf8QELb/ERG3/xER
-        uf8SErr/EhK8/xMTvf8TE77/ExO//xQUwP8UFMD/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTB/xQU
-        wv8UFML/FBTC/xQUwv8UFML/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcX/FRXF/xUV
-        xf8VFcX/FRXG/xUVxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbI/xYW
-        yP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWxv8WFsb/FhbG/xYWxv8VFcb/FRXG/xUV
-        xf8VFcX/FRXF/xUVxf8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8VFcP/FRXD/xQUwv8UFML/FBTC/xQU
-        wv8UFML/FBTB/xQUwf8UFMH/FBTB/xQUwf8UFMH/FBTA/xQUwP8TE7//ExO+/xMTvf8SErz/EhK6/xER
-        uf8REbj/EBC2/xIStv8YGO7/AAAAXwAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAJgAAAFchIeT+FxfB/xERuP8SErn/EhK7/xMTvP8TE77/FBS//xQUwP8UFMH/FRXC/xUV
-        wv8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUVxP8VFcT/FRXE/xUVxP8VFcT/FhbF/xYW
-        xf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbH/xYWx/8WFsf/FhbH/xcXx/8XF8f/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8j/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyP8XF8f/FxfH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FhbG/xYW
-        xf8WFsX/FhbF/xYWxf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVw/8VFcP/FRXD/xUVw/8VFcP/FRXD/xUV
-        w/8VFcL/FRXC/xQUwf8UFMD/FBS//xMTvv8TE7z/EhK7/xISuf8REbj/GBi//x0d6P4AAABYAAAAJwAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAATioq2PscHM7/ERG4/xER
-        uv8SErz/ExO9/xMTvv8UFMD/FBTB/xQUwv8UFML/FRXD/xUVw/8VFcT/FRXE/xUVxP8VFcT/FRXE/xUV
-        xP8VFcT/FRXE/xUVxf8VFcX/FRXF/xUVxf8VFcX/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYW
-        x/8WFsf/FhbH/xYWyP8WFsj/FhbI/xYWyP8WFsj/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcX
-        yv8XF8r/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FhbI/xYWyP8WFsj/FhbI/xYW
-        yP8WFsf/FhbH/xYWx/8WFsf/FhbH/xYWx/8WFsb/FhbG/xYWxv8WFsb/FRXF/xUVxf8VFcX/FRXF/xUV
-        xf8VFcT/FRXE/xUVxP8VFcT/FRXE/xUVxP8VFcT/FRXD/xUVw/8UFML/FBTC/xQUwf8UFMD/ExO//xMT
-        vf8SErz/EhK6/xERuP8bG8v/JibZ+wAAAE8AAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAABoAAABCODjG8SEh4v8REbr/ERG8/xISvv8SEr//ExPA/xMTwv8UFMP/FBTE/xQU
-        xP8VFcX/FRXF/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV
-        x/8VFcf/FhbI/xYWyP8WFsj/FhbI/xYWyP8WFsj/FhbJ/xYWyf8WFsn/FhbJ/xYWyf8WFsr/FhbK/xYW
-        yv8WFsr/FhbK/xcXyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyv8WFsr/FhbK/xYWyv8WFsn/FhbJ/xYWyf8WFsn/FhbJ/xYWyP8WFsj/FhbI/xYW
-        yP8WFsj/FhbI/xUVx/8VFcf/FRXH/xUVx/8VFcf/FRXG/xUVxv8VFcb/FRXG/xUVxv8VFcb/FRXG/xUV
-        xv8VFcX/FRXF/xQUxP8UFMT/FBTD/xMTwv8TE8D/EhK//xISvv8REbz/ERG6/yEh3f80NMn1AAAAQwAA
-        ABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAADVAQKTVKSn3/xER
-        uv8SErv/ExO9/xMTv/8UFMD/FBTB/xUVwv8VFcP/FRXE/xUVxf8WFsX/FhbF/xYWxv8WFsb/FhbG/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8XF8f/FxfH/xcXyP8XF8j/FxfI/xcX
-        yP8XF8j/FxfI/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8YGMr/GBjK/xgY
-        yv8YGMr/GBjK/xgYyv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgY
-        y/8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMr/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXx/8XF8f/FhbH/xYWx/8WFsf/FhbH/xYW
-        xv8WFsb/FhbG/xYWxv8WFsb/FhbG/xYWxv8WFsb/FhbF/xYWxf8VFcX/FRXE/xUVw/8VFcL/FBTB/xQU
-        wP8TE7//ExO9/xISu/8REbr/KCj3/z09ptoAAAA3AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAMAAAAKDg4b5MsLPn/GBi+/xISvf8TE7//FBTA/xQUwv8VFcP/FRXE/xYW
-        xf8WFsb/FhbG/xcXx/8XF8f/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/GBjJ/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgYyv8YGMv/GBjL/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZ
-        zP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xgYyv8YGMr/GBjK/xgY
-        yv8YGMn/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8XF8j/FxfI/xcXyP8XF8j/FxfI/xcX
-        yP8XF8f/FxfH/xYWxv8WFsb/FhbF/xUVxP8VFcP/FBTC/xQUwP8TE7//ExO9/xcXvf8sLPn/Ozt+pQAA
-        ACkAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAcAAAAQzg4
-        6fsoKND/EhK+/xMTv/8TE8H/FBTC/xUVw/8VFcT/FRXF/xYWxv8WFsf/FhbI/xcXyP8XF8j/FxfI/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyv8XF8r/FxfK/xcXyv8XF8r/GBjK/xgY
-        yv8YGMr/GBjL/xgYy/8YGMv/GBjL/xgYy/8YGMv/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        zP8YGMz/GBjM/xgYzP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgYzP8YGMz/GBjM/xgY
-        y/8YGMv/GBjL/xgYy/8YGMv/GBjL/xgYyv8YGMr/GBjK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfJ/xcX
-        yf8XF8n/FxfJ/xcXyf8XF8n/FxfJ/xcXyf8XF8j/FxfI/xcXyP8WFsj/FhbH/xYWxv8VFcX/FRXF/xUV
-        w/8UFML/FBTB/xMTv/8SEr7/JibN/zg46/4LCxJKAAAAHQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABEAAAAvSEi12zY2/v8UFMD/ExPB/xMTwv8UFMT/FBTF/xUV
-        xv8VFcf/FhbI/xYWyf8WFsn/FhbK/xYWyv8XF8r/FxfK/xcXyv8XF8v/FxfL/xcXy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcXzP8XF8z/FxfM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcX
-        zP8XF8z/FxfM/xcXzP8XF8z/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8r/FxfK/xcX
-        yv8XF8r/FhbK/xYWyf8WFsn/FhbI/xUVx/8VFcb/FBTF/xQUxP8TE8L/ExPB/xMTwP82Nvz/Rka54gAA
-        ADAAAAARAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACQAA
-        AB4rK0pjOzv5/iYmyv8SEsD/ExPC/xMTw/8UFMT/FBTF/xUVxv8VFcf/FhbI/xYWyf8WFsn/FhbJ/xYW
-        yv8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXzP8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcXzP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcX
-        y/8XF8r/FxfK/xcXyv8XF8r/FxfK/xcXyv8XF8r/FhbK/xYWyf8WFsn/FhbJ/xYWyP8VFcf/FRXG/xQU
-        xf8UFMT/ExPD/xMTwv8SEsD/IyPI/zs7+v8yMlhuAAAAIAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEQAAAC5OTsLiPDz//xYWwv8SEsL/ExPD/xQU
-        xP8UFMX/FBTG/xUVx/8VFcj/FhbJ/xYWyf8WFsr/FhbK/xYWyv8WFsv/FhbL/xYWy/8XF8v/FxfL/xcX
-        y/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfM/xcXzP8XF8z/FxfM/xcXzP8XF8z/GBjM/xgY
-        zP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfM/xcX
-        zP8XF8z/FxfM/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xcXy/8XF8v/FxfL/xYWy/8WFsv/FhbL/xYW
-        yv8WFsr/FhbK/xYWyf8WFsn/FRXI/xUVx/8UFMb/FBTG/xQUxP8TE8P/EhLC/xYWwv87O///T0/I6QAA
-        AC8AAAARAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAAIAAAAGicnQlJKSvT+MTHq/xMTwv8TE8P/ExPF/xQUxv8UFMf/FBTI/xUVyP8VFcn/FRXK/xYW
-        yv8WFsr/FhbL/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbM/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfN/xcX
-        zf8XF83/FxfN/xYWzf8WFs3/FhbN/xYWzf8WFs3/FhbN/xYWzP8WFsz/FhbM/xYWzP8WFsz/FhbM/xYW
-        zP8WFsz/FhbM/xYWy/8WFsv/FhbL/xYWy/8WFsv/FhbL/xYWyv8WFsr/FRXK/xUVyf8VFcj/FBTI/xQU
-        x/8UFMb/ExPF/xMTw/8SEsL/MDDm/0pK9f4xMVJeAAAAGwAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAOAAAAIlJSmqdPT/7/Kyvc/xMT
-        xf8TE8b/FBTH/xUVyP8VFcn/FRXK/xYWyv8WFsv/FhbL/xYWzP8WFsz/FxfM/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgYz/8YGM//GBjP/xgY
-        z/8YGM//GBjP/xgYzv8YGM7/GBjO/xgYzv8YGM7/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zP8XF8z/FhbM/xYWy/8WFsv/FhbK/xUVyv8VFcn/FRXI/xQUx/8TE8b/ExPF/ygo1/9LS/7/VVWisQAA
-        ACMAAAAOAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAARAAAAKFtbus5LS///IiLJ/xMTxv8TE8f/FBTI/xQUyf8VFcr/FRXK/xUV
-        y/8WFsz/FhbM/xYWzP8WFsz/FhbN/xYWzf8WFs3/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfO/xcXzv8XF87/FxfO/xcXzv8XF87/FxfO/xcX
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8XF87/FxfO/xcX
-        zv8XF87/FxfO/xcXzv8XF87/FxfO/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcXzf8XF83/FxfN/xcX
-        zf8XF83/FxfN/xcXzf8XF83/FhbN/xYWzf8WFs3/FhbM/xYWzP8WFsz/FhbM/xUVy/8VFcr/FRXK/xQU
-        yf8UFMj/ExPH/xMTxv8hIcn/Skr//1tbwNcAAAApAAAAEQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAK2Fh
-        1epOTv//JibM/xUVx/8WFsj/FhbJ/xcXyv8XF8v/GBjL/xgYzP8YGMz/GBjM/xgYzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoaz/8aGs//GhrP/xoa
-        z/8aGs//GhrP/xoaz/8aGs//GhrP/xkZz/8ZGc//GRnP/xkZz/8ZGc//GRnP/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8YGM3/GBjM/xgYzP8YGMz/GBjL/xcXy/8XF8r/FhbJ/xYWyP8VFcf/JCTK/0xM//9hYdvwAAAALAAA
-        ABQAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAUFhYgMGlp1elXV///MDDh/xcXx/8WFsj/FxfJ/xcX
-        yf8YGMr/GBjL/xgYy/8ZGcv/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcz/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xoa
-        zv8aGs7/GhrO/xoazv8aGs7/GhrO/xoazv8aGs7/GhrO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGcz/GRnM/xkZzP8ZGcz/GRnM/xkZzP8ZGcv/GBjL/xgYy/8YGMr/FxfJ/xcX
-        yf8XF8j/FhbH/y4u3f9VVf//aWnb7yAgNDgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAA
-        AAcAAAATAAAAJmhovcldXf7/PDz0/xsbyf8WFsn/FxfJ/xcXyv8XF8r/GBjL/xgYy/8YGMz/GBjM/xgY
-        zP8YGMz/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZ
-        zv8ZGc7/GRnO/xkZzv8ZGc7/GRnO/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZ
-        zf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GRnN/xkZzf8ZGc3/GBjM/xgY
-        zP8YGMz/GBjM/xgYy/8YGMv/FxfK/xcXyv8XF8n/FhbJ/xsbyf85OfD/Xl7+/2lpxNIAAAAnAAAAFAAA
-        AAgAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAcAAAARAAAAIGRkp5xzc/f8VFT//y0t
-        2v8ZGcr/FhbK/xcXyv8XF8v/FxfL/xcXzP8XF8z/GBjM/xgYzP8YGMz/GBjM/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgY
-        zf8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/GBjM/xcXzP8XF8z/FxfL/xcXy/8XF8r/FhbK/xgY
-        yf8rK9f/U1P//3Bw+P5lZaukAAAAIQAAABEAAAAHAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAQAAAAUAAAAMAAAAFzAwSjxxcc/cc3P7/ltb//83N+f/HR3N/xcXzP8XF8z/FxfN/xcX
-        zf8YGM3/GBjN/xgYzf8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgYzv8YGM7/GBjO/xgY
-        zf8YGM3/FxfN/xcXzf8XF8z/FxfM/x0dzf80NOT/WVn//3R0/P5zc9XgMzNNPQAAABgAAAAMAAAABQAA
-        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAIAAAADwAA
-        ABo9PVxDdHTN0X198/x1df//YmL//1FR//9BQf//ODjo/ygo5v8eHtH/FxfP/xcXz/8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcX
-        0P8XF9D/FxfQ/xcX0P8XF9D/FxfQ/xcXz/8XF8//HR3Q/ycn5P83N+j/QED//1FR//9hYf//dHT//3p6
-        9fx1dc/XQUFnSwAAABsAAAAQAAAACAAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAEAAAACAAAAA8AAAAWAAAAIFxcjml0dMbAenrh7Hl5
-        4O5/f/P8fn70/IKC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC//+Cgv//goL//4KC
-        //+Cgv//fX31/H9/8/x5eePuenri7XR0x8NeXpJuAAAAIAAAABYAAAAPAAAACQAAAAQAAAABAAAAAQAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAEAAAABAAAAAwAAAAYAAAAKAAAADwAAABMAAAAXAAAAGwAAAB4AAAAgAAAAIgAAACMAAAAjAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAA
-        ACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAjAAAAIwAAACIAAAAgAAAAHgAAABsAAAAYAAAAEwAA
-        AA8AAAAKAAAABwAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
-        ///////////////////////////////////////////////////////////////////////////gAAAA
-        AAAAAAAAAAf/////AAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAf///g
-        AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAA
-        AP//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA
-        AAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gA
-        AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA
-        AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA
-        AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
-        AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAP/wA
-        AAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAA
-        Af//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///wAAAAAAAAAAAAAAAAD///+AAAAAAAAAAA
-        AAAAAB////wAAAAAAAAAAAAAAAA/////AAAAAAAAAAAAAAAA////////////////////////////////
-        ////////////////////////////////////////////////////////
-</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.dll b/PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.dll
deleted file mode 100644
index 980193a..0000000
Binary files a/PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.dll and /dev/null differ
diff --git a/PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.xml b/PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.xml
deleted file mode 100644
index dfd8a30..0000000
--- a/PokemonGo/RocketAPI/Window/lib/GMap.NET.Core.xml
+++ /dev/null
@@ -1,3360 +0,0 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>GMap.NET.Core</name>
-    </assembly>
-    <members>
-        <member name="P:GMap.NET.CacheProviders.MemoryCache.Capacity">
-            <summary>
-            the amount of tiles in MB to keep in memmory, default: 22MB, if each ~100Kb it's ~222 tiles
-            </summary>
-        </member>
-        <member name="P:GMap.NET.CacheProviders.MemoryCache.Size">
-            <summary>
-            current memmory cache size in MB
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.SocksHttpWebRequest">
-            <summary>
-            http://ditrans.blogspot.com/2009/03/making-witty-work-with-socks-proxy.html
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.DrawTile">
-            <summary>
-            struct for drawing tile
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.FastResourceLock">
-            <summary>
-            Provides a fast resource (reader-writer) lock.
-            </summary>
-            <remarks>
-            There are three types of acquire methods in this lock:
-
-            Normal methods (AcquireExclusive, AcquireShared) are preferred
-            for general purpose use.
-            Busy wait methods (SpinAcquireExclusive, SpinAcquireShared) are
-            preferred if very little time is spent while the lock is acquired.
-            However, these do not give exclusive acquires precedence over
-            shared acquires.
-            Try methods (TryAcquireExclusive, TryAcquireShared) can be used to
-            quickly test if the lock is available.
-
-            Note that all three types of functions can be used concurrently
-            in the same class instance.
-            </remarks>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.#ctor">
-            <summary>
-            Creates a FastResourceLock.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.Dispose">
-            <summary>
-            Disposes resources associated with the FastResourceLock.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.AcquireExclusive">
-            <summary>
-            Acquires the lock in exclusive mode, blocking
-            if necessary.
-            </summary>
-            <remarks>
-            Exclusive acquires are given precedence over shared
-            acquires.
-            </remarks>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.AcquireShared">
-            <summary>
-            Acquires the lock in shared mode, blocking
-            if necessary.
-            </summary>
-            <remarks>
-            Exclusive acquires are given precedence over shared
-            acquires.
-            </remarks>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.ConvertExclusiveToShared">
-            <summary>
-            Converts the ownership mode from exclusive to shared.
-            </summary>
-            <remarks>
-            Exclusive acquires are not given a chance to acquire
-            the lock before this function does - as a result,
-            this function will never block.
-            </remarks>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.EnsureEventCreated(System.IntPtr@)">
-            <summary>
-            Checks if the specified event has been created, and
-            if not, creates it.
-            </summary>
-            <param name="handle">A reference to the event handle.</param>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.GetStatistics">
-            <summary>
-            Gets statistics information for the lock.
-            </summary>
-            <returns>A structure containing statistics.</returns>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.ReleaseExclusive">
-            <summary>
-            Releases the lock in exclusive mode.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.ReleaseShared">
-            <summary>
-            Releases the lock in shared mode.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.SpinAcquireExclusive">
-            <summary>
-            Acquires the lock in exclusive mode, busy waiting
-            if necessary.
-            </summary>
-            <remarks>
-            Exclusive acquires are *not* given precedence over shared
-            acquires for busy wait methods.
-            </remarks>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.SpinAcquireShared">
-            <summary>
-            Acquires the lock in shared mode, busy waiting
-            if necessary.
-            </summary>
-            <remarks>
-            Exclusive acquires are *not* given precedence over shared
-            acquires for busy wait methods.
-            </remarks>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.SpinConvertSharedToExclusive">
-            <summary>
-            Converts the ownership mode from shared to exclusive,
-            busy waiting if necessary.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.TryAcquireExclusive">
-            <summary>
-            Attempts to acquire the lock in exclusive mode.
-            </summary>
-            <returns>Whether the lock was acquired.</returns>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.TryAcquireShared">
-            <summary>
-            Attempts to acquire the lock in shared mode.
-            </summary>
-            <returns>Whether the lock was acquired.</returns>
-        </member>
-        <member name="M:GMap.NET.Internals.FastResourceLock.TryConvertSharedToExclusive">
-            <summary>
-            Attempts to convert the ownership mode from shared
-            to exclusive.
-            </summary>
-            <returns>Whether the lock was converted.</returns>
-        </member>
-        <member name="P:GMap.NET.Internals.FastResourceLock.ExclusiveWaiters">
-            <summary>
-            Gets the number of exclusive waiters.
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.FastResourceLock.Owned">
-            <summary>
-            Gets whether the lock is owned in either
-            exclusive or shared mode.
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.FastResourceLock.SharedOwners">
-            <summary>
-            Gets the number of shared owners.
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.FastResourceLock.SharedWaiters">
-            <summary>
-            Gets the number of shared waiters.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.AcqExcl">
-            <summary>
-            The number of times the lock has been acquired in exclusive mode.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.AcqShrd">
-            <summary>
-            The number of times the lock has been acquired in shared mode.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.AcqExclCont">
-            <summary>
-            The number of times either the fast path was retried due to the
-            spin count or the exclusive waiter went to sleep.
-            </summary>
-            <remarks>
-            This number is usually much higher than AcqExcl, and indicates
-            a good spin count if AcqExclSlp is very small.
-            </remarks>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.AcqShrdCont">
-            <summary>
-            The number of times either the fast path was retried due to the
-            spin count or the shared waiter went to sleep.
-            </summary>
-            <remarks>
-            This number is usually much higher than AcqShrd, and indicates
-            a good spin count if AcqShrdSlp is very small.
-            </remarks>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.AcqExclSlp">
-            <summary>
-            The number of times exclusive waiters have gone to sleep.
-            </summary>
-            <remarks>
-            If this number is high and not much time is spent in the
-            lock, consider increasing the spin count.
-            </remarks>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.AcqShrdSlp">
-            <summary>
-            The number of times shared waiters have gone to sleep.
-            </summary>
-            <remarks>
-            If this number is high and not much time is spent in the
-            lock, consider increasing the spin count.
-            </remarks>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.PeakExclWtrsCount">
-            <summary>
-            The highest number of exclusive waiters at any one time.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.FastResourceLock.Statistics.PeakShrdWtrsCount">
-            <summary>
-            The highest number of shared waiters at any one time.
-            </summary>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod">
-            <summary>
-            Implements a SOCKS authentication scheme.
-            </summary>
-            <remarks>This is an abstract class; it must be inherited.</remarks>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.#ctor(System.Net.Sockets.Socket)">
-            <summary>
-            Initializes an AuthMethod instance.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.Authenticate">
-            <summary>
-            Authenticates the user.
-            </summary>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">Authentication with the proxy server failed.</exception>
-            <exception cref="T:System.Net.ProtocolViolationException">The proxy server uses an invalid protocol.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.BeginAuthenticate(Org.Mentalis.Network.ProxySocket.HandShakeComplete)">
-            <summary>
-            Authenticates the user asynchronously.
-            </summary>
-            <param name="callback">The method to call when the authentication is complete.</param>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">Authentication with the proxy server failed.</exception>
-            <exception cref="T:System.Net.ProtocolViolationException">The proxy server uses an invalid protocol.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.m_Buffer">
-            <summary>Holds the value of the Buffer property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.m_Server">
-            <summary>Holds the value of the Server property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.CallBack">
-            <summary>Holds the address of the method to call when the proxy has authenticated the client.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.m_Received">
-            <summary>Holds the value of the Received property.</summary>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.Server">
-            <summary>
-            Gets or sets the socket connection with the proxy server.
-            </summary>
-            <value>The socket connection with the proxy server.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.Buffer">
-            <summary>
-            Gets or sets a byt array that can be used to store data.
-            </summary>
-            <value>A byte array to store data.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Authentication.AuthMethod.Received">
-            <summary>
-            Gets or sets the number of bytes that have been received from the remote proxy server.
-            </summary>
-            <value>An integer that holds the number of bytes that have been received from the remote proxy server.</value>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.Authentication.AuthNone">
-            <summary>
-            This class implements the 'No Authentication' scheme.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthNone.#ctor(System.Net.Sockets.Socket)">
-            <summary>
-            Initializes an AuthNone instance.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthNone.Authenticate">
-            <summary>
-            Authenticates the user.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthNone.BeginAuthenticate(Org.Mentalis.Network.ProxySocket.HandShakeComplete)">
-            <summary>
-            Authenticates the user asynchronously.
-            </summary>
-            <param name="callback">The method to call when the authentication is complete.</param>
-            <remarks>This method immediately calls the callback method.</remarks>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass">
-            <summary>
-            This class implements the 'username/password authentication' scheme.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.#ctor(System.Net.Sockets.Socket,System.String,System.String)">
-            <summary>
-            Initializes a new AuthUserPass instance.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-            <param name="user">The username to use.</param>
-            <param name="pass">The password to use.</param>
-            <exception cref="T:System.ArgumentNullException"><c>user</c> -or- <c>pass</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.GetAuthenticationBytes">
-            <summary>
-            Creates an array of bytes that has to be sent if the user wants to authenticate with the username/password authentication scheme.
-            </summary>
-            <returns>An array of bytes that has to be sent if the user wants to authenticate with the username/password authentication scheme.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.Authenticate">
-            <summary>
-            Starts the authentication process.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.BeginAuthenticate(Org.Mentalis.Network.ProxySocket.HandShakeComplete)">
-            <summary>
-            Starts the asynchronous authentication process.
-            </summary>
-            <param name="callback">The method to call when the authentication is complete.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.OnSent(System.IAsyncResult)">
-            <summary>
-            Called when the authentication bytes have been sent.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.OnReceive(System.IAsyncResult)">
-            <summary>
-            Called when the socket received an authentication reply.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.m_Username">
-            <summary>Holds the value of the Username property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.m_Password">
-            <summary>Holds the value of the Password property.</summary>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.Username">
-            <summary>
-            Gets or sets the username to use when authenticating with the proxy server.
-            </summary>
-            <value>The username to use when authenticating with the proxy server.</value>
-            <exception cref="T:System.ArgumentNullException">The specified value is null.</exception>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Authentication.AuthUserPass.Password">
-            <summary>
-            Gets or sets the password to use when authenticating with the proxy server.
-            </summary>
-            <value>The password to use when authenticating with the proxy server.</value>
-            <exception cref="T:System.ArgumentNullException">The specified value is null.</exception>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult">
-            <summary>
-            A class that implements the IAsyncResult interface. Objects from this class are returned by the BeginConnect method of the ProxySocket class.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.Init(System.Object)">
-            <summary>Initializes the internal variables of this object</summary>
-            <param name="stateObject">An object that contains state information for this request.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.Reset">
-            <summary>Initializes the internal variables of this object</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.m_Completed">
-            <summary>Used internally to represent the state of the asynchronous request</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.m_StateObject">
-            <summary>Holds the value of the StateObject property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.m_WaitHandle">
-            <summary>Holds the value of the WaitHandle property.</summary>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.IsCompleted">
-            <summary>Gets a value that indicates whether the server has completed processing the call. It is illegal for the server to use any client supplied resources outside of the agreed upon sharing semantics after it sets the IsCompleted property to "true". Thus, it is safe for the client to destroy the resources after IsCompleted property returns "true".</summary>
-            <value>A boolean that indicates whether the server has completed processing the call.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.CompletedSynchronously">
-            <summary>Gets a value that indicates whether the BeginXXXX call has been completed synchronously. If this is detected in the AsyncCallback delegate, it is probable that the thread that called BeginInvoke is the current thread.</summary>
-            <value>Returns false.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.AsyncState">
-            <summary>Gets an object that was passed as the state parameter of the BeginXXXX method call.</summary>
-            <value>The object that was passed as the state parameter of the BeginXXXX method call.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.IAsyncProxyResult.AsyncWaitHandle">
-             <summary>
-             The AsyncWaitHandle property returns the WaitHandle that can use to perform a WaitHandle.WaitOne or WaitAny or WaitAll. The object which implements IAsyncResult need not derive from the System.WaitHandle classes directly. The WaitHandle wraps its underlying synchronization primitive and should be signaled after the call is completed. This enables the client to wait for the call to complete instead polling. The Runtime supplies a number of waitable objects that mirror Win32 synchronization primitives e.g. ManualResetEvent, AutoResetEvent and Mutex.
-             WaitHandle supplies methods that support waiting for such synchronization objects to become signaled with "any" or "all" semantics i.e. WaitHandle.WaitOne, WaitAny and WaitAll. Such methods are context aware to avoid deadlocks. The AsyncWaitHandle can be allocated eagerly or on demand. It is the choice of the IAsyncResult implementer.
-            </summary>
-             <value>The WaitHandle associated with this asynchronous result.</value>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.ProxyException">
-            <summary>
-            The exception that is thrown when a proxy error occurs.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxyException.#ctor">
-            <summary>
-            Initializes a new instance of the ProxyException class.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxyException.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the ProxyException class.
-            </summary>
-            <param name="message">The message that describes the error.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxyException.#ctor(System.Int32)">
-            <summary>
-            Initializes a new instance of the ProxyException class.
-            </summary>
-            <param name="socks5Error">The error number returned by a SOCKS5 server.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxyException.Socks5ToString(System.Int32)">
-            <summary>
-            Converts a SOCKS5 error number to a human readable string.
-            </summary>
-            <param name="socks5Error">The error number returned by a SOCKS5 server.</param>
-            <returns>A string representation of the specified SOCKS5 error number.</returns>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.ProxyTypes">
-            <summary>
-            Specifies the type of proxy servers that an instance of the ProxySocket class can use.
-            </summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxyTypes.None">
-            <summary>No proxy server; the ProxySocket object behaves exactly like an ordinary Socket object.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxyTypes.Socks4">
-            <summary>A SOCKS4[A] proxy server.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxyTypes.Socks5">
-            <summary>A SOCKS5 proxy server.</summary>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.ProxySocket">
-            <summary>
-            Implements a Socket class that can connect trough a SOCKS proxy server.
-            </summary>
-            <remarks>This class implements SOCKS4[A] and SOCKS5.<br>It does not, however, implement the BIND commands, so you cannot .</br></remarks>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.#ctor(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType)">
-            <summary>
-            Initializes a new instance of the ProxySocket class.
-            </summary>
-            <param name="addressFamily">One of the AddressFamily values.</param>
-            <param name="socketType">One of the SocketType values.</param>
-            <param name="protocolType">One of the ProtocolType values.</param>
-            <exception cref="T:System.Net.Sockets.SocketException">The combination of addressFamily, socketType, and protocolType results in an invalid socket.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.#ctor(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.String)">
-            <summary>
-            Initializes a new instance of the ProxySocket class.
-            </summary>
-            <param name="addressFamily">One of the AddressFamily values.</param>
-            <param name="socketType">One of the SocketType values.</param>
-            <param name="protocolType">One of the ProtocolType values.</param>
-            <param name="proxyUsername">The username to use when authenticating with the proxy server.</param>
-            <exception cref="T:System.Net.Sockets.SocketException">The combination of addressFamily, socketType, and protocolType results in an invalid socket.</exception>
-            <exception cref="T:System.ArgumentNullException"><c>proxyUsername</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.#ctor(System.Net.Sockets.AddressFamily,System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.String,System.String)">
-            <summary>
-            Initializes a new instance of the ProxySocket class.
-            </summary>
-            <param name="addressFamily">One of the AddressFamily values.</param>
-            <param name="socketType">One of the SocketType values.</param>
-            <param name="protocolType">One of the ProtocolType values.</param>
-            <param name="proxyUsername">The username to use when authenticating with the proxy server.</param>
-            <param name="proxyPassword">The password to use when authenticating with the proxy server.</param>
-            <exception cref="T:System.Net.Sockets.SocketException">The combination of addressFamily, socketType, and protocolType results in an invalid socket.</exception>
-            <exception cref="T:System.ArgumentNullException"><c>proxyUsername</c> -or- <c>proxyPassword</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.Connect(System.Net.EndPoint)">
-            <summary>
-            Establishes a connection to a remote device.
-            </summary>
-            <param name="remoteEP">An EndPoint that represents the remote device.</param>
-            <exception cref="T:System.ArgumentNullException">The remoteEP parameter is a null reference (Nothing in Visual Basic).</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">An error occured while talking to the proxy server.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.Connect(System.String,System.Int32)">
-            <summary>
-            Establishes a connection to a remote device.
-            </summary>
-            <param name="host">The remote host to connect to.</param>
-            <param name="port">The remote port to connect to.</param>
-            <exception cref="T:System.ArgumentNullException">The host parameter is a null reference (Nothing in Visual Basic).</exception>
-            <exception cref="T:System.ArgumentException">The port parameter is invalid.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">An error occured while talking to the proxy server.</exception>
-            <remarks>If you use this method with a SOCKS4 server, it will let the server resolve the hostname. Not all SOCKS4 servers support this 'remote DNS' though.</remarks>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.BeginConnect(System.Net.EndPoint,System.AsyncCallback,System.Object)">
-            <summary>
-            Begins an asynchronous request for a connection to a network device.
-            </summary>
-            <param name="remoteEP">An EndPoint that represents the remote device.</param>
-            <param name="callback">The AsyncCallback delegate.</param>
-            <param name="state">An object that contains state information for this request.</param>
-            <returns>An IAsyncResult that references the asynchronous connection.</returns>
-            <exception cref="T:System.ArgumentNullException">The remoteEP parameter is a null reference (Nothing in Visual Basic).</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while creating the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.BeginConnect(System.String,System.Int32,System.AsyncCallback,System.Object)">
-            <summary>
-            Begins an asynchronous request for a connection to a network device.
-            </summary>
-            <param name="host">The host to connect to.</param>
-            <param name="port">The port on the remote host to connect to.</param>
-            <param name="callback">The AsyncCallback delegate.</param>
-            <param name="state">An object that contains state information for this request.</param>
-            <returns>An IAsyncResult that references the asynchronous connection.</returns>
-            <exception cref="T:System.ArgumentNullException">The host parameter is a null reference (Nothing in Visual Basic).</exception>
-            <exception cref="T:System.ArgumentException">The port parameter is invalid.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while creating the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.EndConnect(System.IAsyncResult)">
-            <summary>
-            Ends a pending asynchronous connection request.
-            </summary>
-            <param name="asyncResult">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-            <exception cref="T:System.ArgumentNullException">The asyncResult parameter is a null reference (Nothing in Visual Basic).</exception>
-            <exception cref="T:System.ArgumentException">The asyncResult parameter was not returned by a call to the BeginConnect method.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-            <exception cref="T:System.InvalidOperationException">EndConnect was previously called for the asynchronous connection.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy server refused the connection.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.BeginDns(System.String,Org.Mentalis.Network.ProxySocket.HandShakeComplete)">
-            <summary>
-            Begins an asynchronous request to resolve a DNS host name or IP address in dotted-quad notation to an IPAddress instance.
-            </summary>
-            <param name="host">The host to resolve.</param>
-            <param name="callback">The method to call when the hostname has been resolved.</param>
-            <returns>An IAsyncResult instance that references the asynchronous request.</returns>
-            <exception cref="T:System.Net.Sockets.SocketException">There was an error while trying to resolve the host.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.OnResolved(System.IAsyncResult)">
-            <summary>
-            Called when the specified hostname has been resolved.
-            </summary>
-            <param name="asyncResult">The result of the asynchronous operation.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.OnConnect(System.IAsyncResult)">
-            <summary>
-            Called when the Socket is connected to the remote host.
-            </summary>
-            <param name="asyncResult">The result of the asynchronous operation.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.ProxySocket.OnHandShakeComplete(System.Exception)">
-            <summary>
-            Called when the Socket has finished talking to the proxy server and is ready to relay data.
-            </summary>
-            <param name="error">The error to throw when the EndConnect method is called.</param>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_State">
-            <summary>Holds the value of the State property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_ProxyEndPoint">
-            <summary>Holds the value of the ProxyEndPoint property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_ProxyType">
-            <summary>Holds the value of the ProxyType property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_ProxyUser">
-            <summary>Holds the value of the ProxyUser property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_ProxyPass">
-            <summary>Holds the value of the ProxyPass property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.CallBack">
-            <summary>Holds a pointer to the method that should be called when the Socket is connected to the remote device.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_AsyncResult">
-            <summary>Holds the value of the AsyncResult property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_ToThrow">
-            <summary>Holds the value of the ToThrow property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.ProxySocket.m_RemotePort">
-            <summary>Holds the value of the RemotePort property.</summary>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.ProxyEndPoint">
-            <summary>
-            Gets or sets the EndPoint of the proxy server.
-            </summary>
-            <value>An IPEndPoint object that holds the IP address and the port of the proxy server.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.ProxyType">
-            <summary>
-            Gets or sets the type of proxy server to use.
-            </summary>
-            <value>One of the ProxyTypes values.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.State">
-            <summary>
-            Gets or sets a user-defined object.
-            </summary>
-            <value>The user-defined object.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.ProxyUser">
-            <summary>
-            Gets or sets the username to use when authenticating with the proxy.
-            </summary>
-            <value>A string that holds the username that's used when authenticating with the proxy.</value>
-            <exception cref="T:System.ArgumentNullException">The specified value is null.</exception>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.ProxyPass">
-            <summary>
-            Gets or sets the password to use when authenticating with the proxy.
-            </summary>
-            <value>A string that holds the password that's used when authenticating with the proxy.</value>
-            <exception cref="T:System.ArgumentNullException">The specified value is null.</exception>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.AsyncResult">
-            <summary>
-            Gets or sets the asynchronous result object.
-            </summary>
-            <value>An instance of the IAsyncProxyResult class.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.ToThrow">
-            <summary>
-            Gets or sets the exception to throw when the EndConnect method is called.
-            </summary>
-            <value>An instance of the Exception class (or subclasses of Exception).</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.ProxySocket.RemotePort">
-            <summary>
-            Gets or sets the remote port the user wants to connect to.
-            </summary>
-            <value>An integer that specifies the port the user wants to connect to.</value>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.Socks4Handler">
-            <summary>
-            Implements the SOCKS4[A] protocol.
-            </summary>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.SocksHandler">
-            <summary>
-            Implements a specific version of the SOCKS protocol. This is an abstract class; it must be inherited.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.#ctor(System.Net.Sockets.Socket,System.String)">
-            <summary>
-            Initilizes a new instance of the SocksHandler class.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-            <param name="user">The username to use when authenticating with the server.</param>
-            <exception cref="T:System.ArgumentNullException"><c>server</c> -or- <c>user</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.PortToBytes(System.Int32)">
-            <summary>
-            Converts a port number to an array of bytes.
-            </summary>
-            <param name="port">The port to convert.</param>
-            <returns>An array of two bytes that represents the specified port.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.ReadBytes(System.Int32)">
-            <summary>
-            Reads a specified number of bytes from the Server socket.
-            </summary>
-            <param name="count">The number of bytes to return.</param>
-            <returns>An array of bytes.</returns>
-            <exception cref="T:System.ArgumentException">The number of bytes to read is invalid.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.SocksHandler.m_Server">
-            <summary>Holds the value of the Server property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.SocksHandler.m_Username">
-            <summary>Holds the value of the Username property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.SocksHandler.m_AsyncResult">
-            <summary>Holds the value of the AsyncResult property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.SocksHandler.m_Buffer">
-            <summary>Holds the value of the Buffer property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.SocksHandler.m_Received">
-            <summary>Holds the value of the Received property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.SocksHandler.ProtocolComplete">
-            <summary>Holds the address of the method to call when the SOCKS protocol has been completed.</summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.Negotiate(System.String,System.Int32)">
-            <summary>
-            Starts negotiating with a SOCKS proxy server.
-            </summary>
-            <param name="host">The remote server to connect to.</param>
-            <param name="port">The remote port to connect to.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.Negotiate(System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating with a SOCKS proxy server.
-            </summary>
-            <param name="remoteEP">The remote endpoint to connect to.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.BeginNegotiate(System.Net.IPEndPoint,Org.Mentalis.Network.ProxySocket.HandShakeComplete,System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating asynchronously with a SOCKS proxy server.
-            </summary>
-            <param name="remoteEP">An IPEndPoint that represents the remote device. </param>
-            <param name="callback">The method to call when the connection has been established.</param>
-            <param name="proxyEndPoint">The IPEndPoint of the SOCKS proxy server.</param>
-            <returns>An IAsyncProxyResult that references the asynchronous connection.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.SocksHandler.BeginNegotiate(System.String,System.Int32,Org.Mentalis.Network.ProxySocket.HandShakeComplete,System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating asynchronously with a SOCKS proxy server.
-            </summary>
-            <param name="host">The remote server to connect to.</param>
-            <param name="port">The remote port to connect to.</param>
-            <param name="callback">The method to call when the connection has been established.</param>
-            <param name="proxyEndPoint">The IPEndPoint of the SOCKS proxy server.</param>
-            <returns>An IAsyncProxyResult that references the asynchronous connection.</returns>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.SocksHandler.Server">
-            <summary>
-            Gets or sets the socket connection with the proxy server.
-            </summary>
-            <value>A Socket object that represents the connection with the proxy server.</value>
-            <exception cref="T:System.ArgumentNullException">The specified value is null.</exception>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.SocksHandler.Username">
-            <summary>
-            Gets or sets the username to use when authenticating with the proxy server.
-            </summary>
-            <value>A string that holds the username to use when authenticating with the proxy server.</value>
-            <exception cref="T:System.ArgumentNullException">The specified value is null.</exception>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.SocksHandler.AsyncResult">
-            <summary>
-            Gets or sets the return value of the BeginConnect call.
-            </summary>
-            <value>An IAsyncProxyResult object that is the return value of the BeginConnect call.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.SocksHandler.Buffer">
-            <summary>
-            Gets or sets a byte buffer.
-            </summary>
-            <value>An array of bytes.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.SocksHandler.Received">
-            <summary>
-            Gets or sets the number of bytes that have been received from the remote proxy server.
-            </summary>
-            <value>An integer that holds the number of bytes that have been received from the remote proxy server.</value>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.#ctor(System.Net.Sockets.Socket,System.String)">
-            <summary>
-            Initilizes a new instance of the SocksHandler class.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-            <param name="user">The username to use when authenticating with the server.</param>
-            <exception cref="T:System.ArgumentNullException"><c>server</c> -or- <c>user</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.GetHostPortBytes(System.String,System.Int32)">
-            <summary>
-            Creates an array of bytes that has to be sent when the user wants to connect to a specific host/port combination.
-            </summary>
-            <param name="host">The host to connect to.</param>
-            <param name="port">The port to connect to.</param>
-            <returns>An array of bytes that has to be sent when the user wants to connect to a specific host/port combination.</returns>
-            <remarks>Resolving the host name will be done at server side. Do note that some SOCKS4 servers do not implement this functionality.</remarks>
-            <exception cref="T:System.ArgumentNullException"><c>host</c> is null.</exception>
-            <exception cref="T:System.ArgumentException"><c>port</c> is invalid.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.GetEndPointBytes(System.Net.IPEndPoint)">
-            <summary>
-            Creates an array of bytes that has to be sent when the user wants to connect to a specific IPEndPoint.
-            </summary>
-            <param name="remoteEP">The IPEndPoint to connect to.</param>
-            <returns>An array of bytes that has to be sent when the user wants to connect to a specific IPEndPoint.</returns>
-            <exception cref="T:System.ArgumentNullException"><c>remoteEP</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.Negotiate(System.String,System.Int32)">
-            <summary>
-            Starts negotiating with the SOCKS server.
-            </summary>
-            <param name="host">The host to connect to.</param>
-            <param name="port">The port to connect to.</param>
-            <exception cref="T:System.ArgumentNullException"><c>host</c> is null.</exception>
-            <exception cref="T:System.ArgumentException"><c>port</c> is invalid.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy rejected the request.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.Negotiate(System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating with the SOCKS server.
-            </summary>
-            <param name="remoteEP">The IPEndPoint to connect to.</param>
-            <exception cref="T:System.ArgumentNullException"><c>remoteEP</c> is null.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy rejected the request.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.Negotiate(System.Byte[])">
-            <summary>
-            Starts negotiating with the SOCKS server.
-            </summary>
-            <param name="connect">The bytes to send when trying to authenticate.</param>
-            <exception cref="T:System.ArgumentNullException"><c>connect</c> is null.</exception>
-            <exception cref="T:System.ArgumentException"><c>connect</c> is too small.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy rejected the request.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.BeginNegotiate(System.String,System.Int32,Org.Mentalis.Network.ProxySocket.HandShakeComplete,System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating asynchronously with a SOCKS proxy server.
-            </summary>
-            <param name="host">The remote server to connect to.</param>
-            <param name="port">The remote port to connect to.</param>
-            <param name="callback">The method to call when the connection has been established.</param>
-            <param name="proxyEndPoint">The IPEndPoint of the SOCKS proxy server.</param>
-            <returns>An IAsyncProxyResult that references the asynchronous connection.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.BeginNegotiate(System.Net.IPEndPoint,Org.Mentalis.Network.ProxySocket.HandShakeComplete,System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating asynchronously with a SOCKS proxy server.
-            </summary>
-            <param name="remoteEP">An IPEndPoint that represents the remote device.</param>
-            <param name="callback">The method to call when the connection has been established.</param>
-            <param name="proxyEndPoint">The IPEndPoint of the SOCKS proxy server.</param>
-            <returns>An IAsyncProxyResult that references the asynchronous connection.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.OnConnect(System.IAsyncResult)">
-            <summary>
-            Called when the Socket is connected to the remote proxy server.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.OnSent(System.IAsyncResult)">
-            <summary>
-            Called when the Socket has sent the handshake data.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks4Handler.OnReceive(System.IAsyncResult)">
-            <summary>
-            Called when the Socket has received a reply from the remote proxy server.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.Socks5Handler">
-            <summary>
-            Implements the SOCKS5 protocol.
-            </summary>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.#ctor(System.Net.Sockets.Socket)">
-            <summary>
-            Initiliazes a new Socks5Handler instance.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-            <exception cref="T:System.ArgumentNullException"><c>server</c>  is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.#ctor(System.Net.Sockets.Socket,System.String)">
-            <summary>
-            Initiliazes a new Socks5Handler instance.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-            <param name="user">The username to use.</param>
-            <exception cref="T:System.ArgumentNullException"><c>server</c> -or- <c>user</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.#ctor(System.Net.Sockets.Socket,System.String,System.String)">
-            <summary>
-            Initiliazes a new Socks5Handler instance.
-            </summary>
-            <param name="server">The socket connection with the proxy server.</param>
-            <param name="user">The username to use.</param>
-            <param name="pass">The password to use.</param>
-            <exception cref="T:System.ArgumentNullException"><c>server</c> -or- <c>user</c> -or- <c>pass</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.Authenticate">
-            <summary>
-            Starts the synchronous authentication process.
-            </summary>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">Authentication with the proxy server failed.</exception>
-            <exception cref="T:System.Net.ProtocolViolationException">The proxy server uses an invalid protocol.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.GetHostPortBytes(System.String,System.Int32)">
-            <summary>
-            Creates an array of bytes that has to be sent when the user wants to connect to a specific host/port combination.
-            </summary>
-            <param name="host">The host to connect to.</param>
-            <param name="port">The port to connect to.</param>
-            <returns>An array of bytes that has to be sent when the user wants to connect to a specific host/port combination.</returns>
-            <exception cref="T:System.ArgumentNullException"><c>host</c> is null.</exception>
-            <exception cref="T:System.ArgumentException"><c>port</c> or <c>host</c> is invalid.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.GetEndPointBytes(System.Net.IPEndPoint)">
-            <summary>
-            Creates an array of bytes that has to be sent when the user wants to connect to a specific IPEndPoint.
-            </summary>
-            <param name="remoteEP">The IPEndPoint to connect to.</param>
-            <returns>An array of bytes that has to be sent when the user wants to connect to a specific IPEndPoint.</returns>
-            <exception cref="T:System.ArgumentNullException"><c>remoteEP</c> is null.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.Negotiate(System.String,System.Int32)">
-            <summary>
-            Starts negotiating with the SOCKS server.
-            </summary>
-            <param name="host">The host to connect to.</param>
-            <param name="port">The port to connect to.</param>
-            <exception cref="T:System.ArgumentNullException"><c>host</c> is null.</exception>
-            <exception cref="T:System.ArgumentException"><c>port</c> is invalid.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy rejected the request.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-            <exception cref="T:System.Net.ProtocolViolationException">The proxy server uses an invalid protocol.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.Negotiate(System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating with the SOCKS server.
-            </summary>
-            <param name="remoteEP">The IPEndPoint to connect to.</param>
-            <exception cref="T:System.ArgumentNullException"><c>remoteEP</c> is null.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy rejected the request.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-            <exception cref="T:System.Net.ProtocolViolationException">The proxy server uses an invalid protocol.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.Negotiate(System.Byte[])">
-            <summary>
-            Starts negotiating with the SOCKS server.
-            </summary>
-            <param name="connect">The bytes to send when trying to authenticate.</param>
-            <exception cref="T:System.ArgumentNullException"><c>connect</c> is null.</exception>
-            <exception cref="T:System.ArgumentException"><c>connect</c> is too small.</exception>
-            <exception cref="T:Org.Mentalis.Network.ProxySocket.ProxyException">The proxy rejected the request.</exception>
-            <exception cref="T:System.Net.Sockets.SocketException">An operating system error occurs while accessing the Socket.</exception>
-            <exception cref="T:System.ObjectDisposedException">The Socket has been closed.</exception>
-            <exception cref="T:System.Net.ProtocolViolationException">The proxy server uses an invalid protocol.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.BeginNegotiate(System.String,System.Int32,Org.Mentalis.Network.ProxySocket.HandShakeComplete,System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating asynchronously with the SOCKS server.
-            </summary>
-            <param name="host">The host to connect to.</param>
-            <param name="port">The port to connect to.</param>
-            <param name="callback">The method to call when the negotiation is complete.</param>
-            <param name="proxyEndPoint">The IPEndPoint of the SOCKS proxy server.</param>
-            <returns>An IAsyncProxyResult that references the asynchronous connection.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.BeginNegotiate(System.Net.IPEndPoint,Org.Mentalis.Network.ProxySocket.HandShakeComplete,System.Net.IPEndPoint)">
-            <summary>
-            Starts negotiating asynchronously with the SOCKS server.
-            </summary>
-            <param name="remoteEP">An IPEndPoint that represents the remote device.</param>
-            <param name="callback">The method to call when the negotiation is complete.</param>
-            <param name="proxyEndPoint">The IPEndPoint of the SOCKS proxy server.</param>
-            <returns>An IAsyncProxyResult that references the asynchronous connection.</returns>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnConnect(System.IAsyncResult)">
-            <summary>
-            Called when the socket is connected to the remote server.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnAuthSent(System.IAsyncResult)">
-            <summary>
-            Called when the authentication bytes have been sent.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnAuthReceive(System.IAsyncResult)">
-            <summary>
-            Called when an authentication reply has been received.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnAuthenticated(System.Exception)">
-            <summary>
-            Called when the socket has been successfully authenticated with the server.
-            </summary>
-            <param name="e">The exception that has occured while authenticating, or <em>null</em> if no error occured.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnSent(System.IAsyncResult)">
-            <summary>
-            Called when the connection request has been sent.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnReceive(System.IAsyncResult)">
-            <summary>
-            Called when a connection reply has been received.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.ProcessReply(System.Byte[])">
-            <summary>
-            Processes the received reply.
-            </summary>
-            <param name="buffer">The received reply</param>
-            <exception cref="T:System.Net.ProtocolViolationException">The received reply is invalid.</exception>
-        </member>
-        <member name="M:Org.Mentalis.Network.ProxySocket.Socks5Handler.OnReadLast(System.IAsyncResult)">
-            <summary>
-            Called when the last bytes are read from the socket.
-            </summary>
-            <param name="ar">Stores state information for this asynchronous operation as well as any user-defined data.</param>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Socks5Handler.m_Password">
-            <summary>Holds the value of the Password property.</summary>
-        </member>
-        <member name="F:Org.Mentalis.Network.ProxySocket.Socks5Handler.m_HandShake">
-            <summary>Holds the value of the HandShake property.</summary>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Socks5Handler.Password">
-            <summary>
-            Gets or sets the password to use when authenticating with the SOCKS5 server.
-            </summary>
-            <value>The password to use when authenticating with the SOCKS5 server.</value>
-        </member>
-        <member name="P:Org.Mentalis.Network.ProxySocket.Socks5Handler.HandShake">
-            <summary>
-            Gets or sets the bytes to use when sending a connect request to the proxy server.
-            </summary>
-            <value>The array of bytes to use when sending a connect request to the proxy server.</value>
-        </member>
-        <member name="T:Org.Mentalis.Network.ProxySocket.HandShakeComplete">
-            <summary>
-            References the callback method to be called when the protocol negotiation is completed.
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_DarbAE_Q2_2011_NAVTQ_Eng_V5_MapProvider">
-            <summary>
-            ArcGIS_DarbAE_Q2_2011_NAVTQ_Eng_V5_Map provider,
-            http://www.darb.ae/ArcGIS/rest/services/BaseMaps/Q2_2011_NAVTQ_Eng_V5/MapServer
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GMapProvider">
-            <summary>
-            base class for each map provider
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GMapProvider.GetTileImage(GMap.NET.GPoint,System.Int32)">
-            <summary>
-            gets tile image using implmented provider
-            </summary>
-            <param name="pos"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GMapProvider.OnInitialized">
-            <summary>
-            called before first use
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.DbId">
-            <summary>
-            id for database, a hash of provider guid
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.Area">
-            <summary>
-            area of map
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.MinZoom">
-            <summary>
-            minimum level of zoom
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.MaxZoom">
-            <summary>
-            maximum level of zoom
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.WebProxy">
-            <summary>
-            proxy for net access
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.IsSocksProxy">
-            <summary>
-            Connect trough a SOCKS 4/5 proxy server
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.Credential">
-            <summary>
-            NetworkCredential for tile http access
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.UserAgent">
-            <summary>
-            Gets or sets the value of the User-agent HTTP header.
-            It's pseudo-randomized to avoid blockages...
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.TimeoutMs">
-            <summary>
-            timeout for provider connections
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.RefererUrl">
-            <summary>
-            Gets or sets the value of the Referer HTTP header.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.InvertedAxisY">
-            <summary>
-            true if tile origin at BottomLeft, WMS-C
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.BypassCache">
-            <summary>
-            to bypass the cache, set to true
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GMapProvider.TileImageProxy">
-            <summary>
-            internal proxy for image managment
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GMapProvider.GetTileImageFromFile(System.String)">
-            <summary>
-            use at your own risk, storing tiles in files is slow and hard on the file system
-            </summary>
-            <param name="fileName"></param>
-            <returns></returns>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProvider.Id">
-            <summary>
-            unique provider id
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProvider.Name">
-            <summary>
-            provider name
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProvider.Projection">
-            <summary>
-            provider projection
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProvider.Overlays">
-            <summary>
-            provider overlays
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProvider.IsInitialized">
-            <summary>
-            was provider initialized
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProvider.Language">
-            <summary>
-            map language
-            </summary>
-        </member>
-        <member name="T:GMap.NET.RoutingProvider">
-            <summary>
-            routing interface
-            </summary>
-        </member>
-        <member name="M:GMap.NET.RoutingProvider.GetRoute(GMap.NET.PointLatLng,GMap.NET.PointLatLng,System.Boolean,System.Boolean,System.Int32)">
-            <summary>
-            get route between two points
-            </summary>
-        </member>
-        <member name="M:GMap.NET.RoutingProvider.GetRoute(System.String,System.String,System.Boolean,System.Boolean,System.Int32)">
-            <summary>
-            get route between two points
-            </summary>
-        </member>
-        <member name="T:GMap.NET.GeocodingProvider">
-            <summary>
-            geocoding interface
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.BingMapProviderBase.ClientKey">
-            <summary>
-            Bing Maps Customer Identification.
-            |
-            FOR LEGAL AND COMMERCIAL USAGE SET YOUR OWN REGISTERED KEY
-            |
-            http://msdn.microsoft.com/en-us/library/ff428642.aspx
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.BingMapProviderBase.ForceSessionIdOnTileAccess">
-            <summary>
-            set true to append SessionId on requesting tiles
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.BingMapProviderBase.DisableDynamicTileUrlFormat">
-            <summary>
-            set true to avoid using dynamic tile url format
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapProviders.BingMapProviderBase.TileXYToQuadKey(System.Int64,System.Int64,System.Int32)">
-            <summary>
-            Converts tile XY coordinates into a QuadKey at a specified level of detail.
-            </summary>
-            <param name="tileX">Tile X coordinate.</param>
-            <param name="tileY">Tile Y coordinate.</param>
-            <param name="levelOfDetail">Level of detail, from 1 (lowest detail)
-            to 23 (highest detail).</param>
-            <returns>A string containing the QuadKey.</returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.BingMapProviderBase.QuadKeyToTileXY(System.String,System.Int32@,System.Int32@,System.Int32@)">
-            <summary>
-            Converts a QuadKey into tile XY coordinates.
-            </summary>
-            <param name="quadKey">QuadKey of the tile.</param>
-            <param name="tileX">Output parameter receiving the tile X coordinate.</param>
-            <param name="tileY">Output parameter receiving the tile Y coordinate.</param>
-            <param name="levelOfDetail">Output parameter receiving the level of detail.</param>
-        </member>
-        <member name="F:GMap.NET.MapProviders.BingMapProviderBase.TryGetDefaultKey">
-            <summary>
-            set false to use your own key.
-            FOR LEGAL AND COMMERCIAL USAGE SET YOUR OWN REGISTERED KEY
-            http://msdn.microsoft.com/en-us/library/ff428642.aspx
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.BingMapProvider">
-            <summary>
-            BingMapProvider provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.BingSatelliteMapProvider">
-            <summary>
-            BingSatelliteMapProvider provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.BingHybridMapProvider">
-            <summary>
-            BingHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_StreetMap_World_2D_MapProvider">
-            <summary>
-            ArcGIS_StreetMap_World_2D_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_Imagery_World_2D_MapProvider">
-            <summary>
-            ArcGIS_Imagery_World_2D_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_ShadedRelief_World_2D_MapProvider">
-            <summary>
-            ArcGIS_ShadedRelief_World_2D_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_Topo_US_2D_MapProvider">
-            <summary>
-            ArcGIS_Topo_US_2D_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_World_Physical_MapProvider">
-            <summary>
-            ArcGIS_World_Physical_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_World_Shaded_Relief_MapProvider">
-            <summary>
-            ArcGIS_World_Shaded_Relief_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_World_Street_MapProvider">
-            <summary>
-            ArcGIS_World_Street_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_World_Terrain_Base_MapProvider">
-            <summary>
-            ArcGIS_World_Terrain_Base_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.ArcGIS_World_Topo_MapProvider">
-            <summary>
-            ArcGIS_World_Topo_Map provider, http://server.arcgisonline.com
-            </summary>
-        </member>
-        <member name="T:GMap.NET.DirectionsProvider">
-            <summary>
-            directions interface
-            </summary>
-        </member>
-        <member name="M:GMap.NET.DirectionsProvider.GetDirections(GMap.NET.DirectionsStatusCode@,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            service may provide more than one route alternative in the response
-            </summary>
-            <param name="status"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.DirectionsProvider.GetDirections(GMap.NET.DirectionsStatusCode@,GMap.NET.PointLatLng,GMap.NET.PointLatLng,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            service may provide more than one route alternative in the response
-            </summary>
-            <param name="status"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.CloudMadeMapProviderBase.GetRoute(System.String,System.String,System.Boolean,System.Boolean,System.Int32)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="walkingMode"></param>
-            <param name="Zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.CloudMadeMapProviderBase.GetDirections(GMap.NET.GDirections@,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="direction"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.CloudMadeMapProviderBase.GetDirections(GMap.NET.DirectionsStatusCode@,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="status"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.CloudMadeMapProviderBase.GetDirections(GMap.NET.DirectionsStatusCode@,GMap.NET.PointLatLng,GMap.NET.PointLatLng,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="status"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.CloudMadeMapProviderBase.GetDirections(GMap.NET.GDirections@,GMap.NET.PointLatLng,System.Collections.Generic.IEnumerable{GMap.NET.PointLatLng},System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="direction"></param>
-            <param name="start"></param>
-            <param name="wayPoints"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.CloudMadeMapProviderBase.GetDirections(GMap.NET.GDirections@,System.String,System.Collections.Generic.IEnumerable{System.String},System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="direction"></param>
-            <param name="start"></param>
-            <param name="wayPoints"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="T:GMap.NET.MapProviders.CloudMadeMapProvider">
-            <summary>
-            CloudMadeMap demo provider, http://maps.cloudmade.com/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.WikiMapiaMapProvider">
-            <summary>
-            WikiMapiaMap provider, http://wikimapia.org/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.CzechHistoryMapProvider">
-            <summary>
-            CzechHistoryMap provider, http://www.mapy.cz/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.CzechHybridMapProvider">
-            <summary>
-            CzechHybridMap provider, http://www.mapy.cz/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.CzechSatelliteMapProvider">
-            <summary>
-            CzechSatelliteMap provider, http://www.mapy.cz/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.CzechTuristMapProvider">
-            <summary>
-            CzechTuristMap provider, http://www.mapy.cz/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.CzechMapProvider">
-            <summary>
-            CzechMap provider, http://www.mapy.cz/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.TurkeyMapProvider">
-            <summary>
-            TurkeyMap provider, http://maps.pergo.com.tr/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.MapBenderWMSProvider">
-            <summary>
-            MapBender provider, WMS demo http://www.mapbender.org/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.SpainMapProvider">
-            <summary>
-            SpainMap provider, http://sigpac.mapa.es/fega/visor/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.LatviaMapProvider">
-            <summary>
-            LatviaMap provider, http://www.ikarte.lv/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.LithuaniaHybridOldMapProvider">
-            <summary>
-            LithuaniaHybridNewMap, from 2005 data, provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.LithuaniaHybridMapProvider">
-            <summary>
-            LithuaniaHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.LithuaniaOrtoFotoOldMapProvider">
-            <summary>
-            LithuaniaOrtoFotoNewMap, from 2005 data, provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.LithuaniaOrtoFotoMapProvider">
-            <summary>
-            LithuaniaOrtoFotoMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.Lithuania3dMapProvider">
-            <summary>
-            Lithuania3dMap (2.5d) provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.LithuaniaMapProvider">
-            <summary>
-            LithuaniaMap provider, http://www.maps.lt/map/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenStreet4UMapProvider">
-            <summary>
-            OpenStreet4UMap provider
-            http://www.4umaps.eu
-
-            4UMaps are topographic outdoor maps based on OpenStreetmap data.
-            The map contains everything you need for any kind of back country activity like hiking,
-            mountain biking, cycling, climbing etc. 4UMaps has elevation lines, hill shading,
-            peak height and name, streets, ways, tracks and trails, as well as springs, supermarkets,
-            restaurants, hotels, shelters etc.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapProviders.OpenStreetMapProviderBase.GetRoute(System.String,System.String,System.Boolean,System.Boolean,System.Int32)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="walkingMode"></param>
-            <param name="Zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenStreetMapQuestSatteliteProvider">
-            <summary>
-            OpenStreetMapQuestSattelite provider - http://wiki.openstreetmap.org/wiki/MapQuest
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenStreetMapQuestHybridProvider">
-            <summary>
-            OpenStreetMapQuestHybrid provider - http://wiki.openstreetmap.org/wiki/MapQuest
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenStreetMapQuestProvider">
-            <summary>
-            OpenStreetMapQuest provider - http://wiki.openstreetmap.org/wiki/MapQuest
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenCycleTransportMapProvider">
-            <summary>
-            OpenCycleMap Transport provider - http://www.opencyclemap.org
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenCycleLandscapeMapProvider">
-            <summary>
-            OpenCycleMap Landscape provider - http://www.opencyclemap.org
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.YandexHybridMapProvider">
-            <summary>
-            YandexHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.YandexSatelliteMapProvider">
-            <summary>
-            YandexSatelliteMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.YandexMapProvider">
-            <summary>
-            YenduxMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OviHybridMapProvider">
-            <summary>
-            OviHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OviTerrainMapProvider">
-            <summary>
-            OviTerrainMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OviSatelliteMapProvider">
-            <summary>
-            OviSatelliteMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OviMapProvider">
-            <summary>
-            OviMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.NearHybridMapProvider">
-            <summary>
-            NearHybridMap provider - http://www.nearmap.com/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.NearSatelliteMapProvider">
-            <summary>
-            NearSatelliteMap provider - http://www.nearmap.com/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.NearMapProvider">
-            <summary>
-            NearMap provider - http://www.nearmap.com/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleKoreaHybridMapProvider">
-            <summary>
-            GoogleKoreaHybridMap provider
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapProviders.GoogleMapProviderBase.ApiKey">
-            <summary>
-            Your application's API key, obtained from the Google Developers Console.
-            This key identifies your application for purposes of quota management.
-            Must provide either API key or Maps for Work credentials.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GoogleMapProviderBase.GetPoints(GMap.NET.Placemark,System.Collections.Generic.List{GMap.NET.PointLatLng}@)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="placemark"></param>
-            <param name="pointList"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GoogleMapProviderBase.GetPoint(GMap.NET.Placemark,GMap.NET.GeoCoderStatusCode@)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="placemark"></param>
-            <param name="status"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GoogleMapProviderBase.GetDirections(GMap.NET.DirectionsStatusCode@,System.String,System.String,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="status"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GoogleMapProviderBase.GetDirections(GMap.NET.DirectionsStatusCode@,GMap.NET.PointLatLng,GMap.NET.PointLatLng,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="status"></param>
-            <param name="start"></param>
-            <param name="end"></param>
-            <param name="avoidHighways"></param>
-            <param name="avoidTolls"></param>
-            <param name="walkingMode"></param>
-            <param name="sensor"></param>
-            <param name="metric"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.MapProviders.GoogleMapProviderBase.SetEnterpriseCredentials(System.String,System.String)">
-            <summary>
-            https://developers.google.com/maps/documentation/business/webservices/auth#how_do_i_get_my_signing_key
-            To access the special features of the Google Maps API for Work you must provide a client ID
-            when accessing any of the API libraries or services.
-            When registering for Google Google Maps API for Work you will receive this client ID from Enterprise Support.
-            All client IDs begin with a gme- prefix. Your client ID is passed as the value of the client parameter.
-            Generally, you should store your private key someplace safe and read them into your code
-            </summary>
-            <param name="clientId"></param>
-            <param name="privateKey"></param>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GoogleMapProviderBase.ClientId">
-            <summary>
-            Your client ID. To access the special features of the Google Maps API for Work
-            you must provide a client ID when accessing any of the API libraries or services.
-            When registering for Google Google Maps API for Work you will receive this client ID
-            from Enterprise Support. All client IDs begin with a gme- prefix.
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleKoreaSatelliteMapProvider">
-            <summary>
-            GoogleKoreaSatelliteMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleKoreaMapProvider">
-            <summary>
-            GoogleKoreaMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleChinaTerrainMapProvider">
-            <summary>
-            GoogleChinaTerrainMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleChinaHybridMapProvider">
-            <summary>
-            GoogleChinaHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleChinaSatelliteMapProvider">
-            <summary>
-            GoogleChinaSatelliteMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleChinaMapProvider">
-            <summary>
-            GoogleChinaMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleTerrainMapProvider">
-            <summary>
-            GoogleTerrainMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleHybridMapProvider">
-            <summary>
-            GoogleHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleSatelliteMapProvider">
-            <summary>
-            GoogleSatelliteMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GoogleMapProvider">
-            <summary>
-            GoogleMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.YahooHybridMapProvider">
-            <summary>
-            YahooHybridMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.YahooSatelliteMapProvider">
-            <summary>
-            YahooSatelliteMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.YahooMapProvider">
-            <summary>
-            YahooMap provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenSeaMapHybridProvider">
-            <summary>
-            OpenSeaMapHybrid provider - http://openseamap.org
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenCycleMapProvider">
-            <summary>
-            OpenCycleMap provider - http://www.opencyclemap.org
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.OpenStreetMapProvider">
-            <summary>
-            OpenStreetMap provider - http://www.openstreetmap.org/
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.GMapProviders">
-            <summary>
-            providers that are already build in
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapProviders.GMapProviders.List">
-            <summary>
-            get all instances of the supported providers
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapProviders.EmptyProvider">
-            <summary>
-            represents empty provider
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Projections.PlateCarreeProjectionDarbAe">
-             <summary>
-             Plate Carrée (literally, “plane square”) projection
-             PROJCS["WGS 84 / World Equidistant Cylindrical",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],UNIT["Meter",1]]
-
-            "spatialReference":
-            {"wkid":4326},"singleFusedMapCache":true,"tileInfo":
-            {"rows":256,"cols":256,"dpi":96,"format":"PNG8","compressionQuality":0,
-            "origin":{"x":-400,"y":400},"spatialReference":{"wkid":4326},"lods":
-
-            [{"level":0,"resolution":0.0118973050291514,"scale":5000000},
-            {"level":1,"resolution":0.0059486525145757,"scale":2500000},
-            {"level":2,"resolution":0.00297432625728785,"scale":1250000},
-            {"level":3,"resolution":0.00118973050291514,"scale":500000},
-            {"level":4,"resolution":0.00059486525145757,"scale":250000},
-            {"level":5,"resolution":0.000356919150874542,"scale":150000},
-            {"level":6,"resolution":0.000178459575437271,"scale":75000},
-            {"level":7,"resolution":0.000118973050291514,"scale":50000},
-            {"level":8,"resolution":5.9486525145757E-05,"scale":25000},
-            {"level":9,"resolution":3.56919150874542E-05,"scale":15000},
-            {"level":10,"resolution":1.90356880466422E-05,"scale":8000},
-            {"level":11,"resolution":9.51784402332112E-06,"scale":4000},
-            {"level":12,"resolution":4.75892201166056E-06,"scale":2000}]},
-
-            "initialExtent":
-            {"xmin":42.1125196069871,"ymin":18.6650706214551,"xmax":65.698643558112
-            4,"ymax":29.4472987133981,"spatialReference":{"wkid":4326}},
-
-            "fullExtent":
-            {"xmin":41.522866508209,"ymin":18.7071563263201,"xmax":66.2882966568906
-            ,"ymax":29.4052130085331,"spatialReference":{"wkid":4326}},
-
-            "units":"esriDecimalDegrees"
-             </summary>
-        </member>
-        <member name="T:GMap.NET.PureProjection">
-            <summary>
-            defines projection
-            </summary>
-        </member>
-        <member name="F:GMap.NET.PureProjection.MAX_VAL">
-            <summary>
-            MAX_VAL
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromLatLngToPixel(System.Double,System.Double,System.Int32)">
-            <summary>
-            get pixel coordinates from lat/lng
-            </summary>
-            <param name="lat"></param>
-            <param name="lng"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromPixelToLatLng(System.Int64,System.Int64,System.Int32)">
-            <summary>
-            gets lat/lng coordinates from pixel coordinates
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromLatLngToPixel(GMap.NET.PointLatLng,System.Int32,System.Boolean)">
-            <summary>
-            get pixel coordinates from lat/lng
-            </summary>
-            <param name="p"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromPixelToLatLng(GMap.NET.GPoint,System.Int32,System.Boolean)">
-            <summary>
-            gets lat/lng coordinates from pixel coordinates
-            </summary>
-            <param name="p"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromPixelToTileXY(GMap.NET.GPoint)">
-            <summary>
-            gets tile coorddinate from pixel coordinates
-            </summary>
-            <param name="p"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromTileXYToPixel(GMap.NET.GPoint)">
-            <summary>
-            gets pixel coordinate from tile coordinate
-            </summary>
-            <param name="p"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetTileMatrixMinXY(System.Int32)">
-            <summary>
-            min. tile in tiles at custom zoom level
-            </summary>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetTileMatrixMaxXY(System.Int32)">
-            <summary>
-            max. tile in tiles at custom zoom level
-            </summary>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetTileMatrixSizeXY(System.Int32)">
-            <summary>
-            gets matrix size in tiles
-            </summary>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetTileMatrixItemCount(System.Int32)">
-            <summary>
-            tile matrix size in pixels at custom zoom level
-            </summary>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetTileMatrixSizePixel(System.Int32)">
-            <summary>
-            gets matrix size in pixels
-            </summary>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetAreaTileList(GMap.NET.RectLatLng,System.Int32,System.Int32)">
-            <summary>
-            gets all tiles in rect at specific zoom
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetGroundResolution(System.Int32,System.Double)">
-            <summary>
-            The ground resolution indicates the distance (in meters) on the ground that’s represented by a single pixel in the map.
-            For example, at a ground resolution of 10 meters/pixel, each pixel represents a ground distance of 10 meters.
-            </summary>
-            <param name="zoom"></param>
-            <param name="latitude"></param>
-            <returns></returns>
-        </member>
-        <member name="F:GMap.NET.PureProjection.PI">
-            <summary>
-            PI
-            </summary>
-        </member>
-        <member name="F:GMap.NET.PureProjection.HALF_PI">
-            <summary>
-            Half of PI
-            </summary>
-        </member>
-        <member name="F:GMap.NET.PureProjection.TWO_PI">
-            <summary>
-            PI * 2
-            </summary>
-        </member>
-        <member name="F:GMap.NET.PureProjection.EPSLoN">
-            <summary>
-            EPSLoN
-            </summary>
-        </member>
-        <member name="F:GMap.NET.PureProjection.MAXLONG">
-            <summary>
-            MAXLONG
-            </summary>
-        </member>
-        <member name="F:GMap.NET.PureProjection.DBLLONG">
-            <summary>
-            DBLLONG
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureProjection.Sign(System.Double)">
-            <summary>
-             return the sign of an argument
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureProjection.SinCos(System.Double,System.Double@,System.Double@)">
-            <summary>
-            calculates the sine and cosine
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureProjection.e0fn(System.Double)">
-            <summary>
-            computes the constants e0, e1, e2, and e3 which are used
-            in a series for calculating the distance along a meridian.
-            </summary>
-            <param name="x">represents the eccentricity squared</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.mlfn(System.Double,System.Double,System.Double,System.Double,System.Double)">
-            <summary>
-            computes the value of M which is the distance along a meridian
-            from the Equator to latitude phi.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetUTMzone(System.Double)">
-            <summary>
-            calculates UTM zone number
-            </summary>
-            <param name="lon">Longitude in degrees</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.Clip(System.Double,System.Double,System.Double)">
-            <summary>
-            Clips a number to the specified minimum and maximum values.
-            </summary>
-            <param name="n">The number to clip.</param>
-            <param name="minValue">Minimum allowable value.</param>
-            <param name="maxValue">Maximum allowable value.</param>
-            <returns>The clipped value.</returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetDistance(GMap.NET.PointLatLng,GMap.NET.PointLatLng)">
-            <summary>
-            distance (in km) between two points specified by latitude/longitude
-            The Haversine formula, http://www.movable-type.co.uk/scripts/latlong.html
-            </summary>
-            <param name="p1"></param>
-            <param name="p2"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.GetBearing(GMap.NET.PointLatLng,GMap.NET.PointLatLng)">
-            <summary>
-            Accepts two coordinates in degrees.
-            </summary>
-            <returns>A double value in degrees. From 0 to 360.</returns>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromGeodeticToCartesian(System.Double,System.Double,System.Double,System.Double@,System.Double@,System.Double@)">
-            <summary>
-            Conversion from cartesian earth-sentered coordinates to geodetic coordinates in the given datum
-            </summary>
-            <param name="Lat"></param>
-            <param name="Lon"></param>
-            <param name="Height">Height above ellipsoid [m]</param>
-            <param name="X"></param>
-            <param name="Y"></param>
-            <param name="Z"></param>
-        </member>
-        <member name="M:GMap.NET.PureProjection.FromCartesianTGeodetic(System.Double,System.Double,System.Double,System.Double@,System.Double@)">
-            <summary>
-            Conversion from cartesian earth-sentered coordinates to geodetic coordinates in the given datum
-            </summary>
-            <param name="X"></param>
-            <param name="Y"></param>
-            <param name="Z"></param>
-            <param name="Lat"></param>
-            <param name="Lon"></param>
-        </member>
-        <member name="P:GMap.NET.PureProjection.TileSize">
-            <summary>
-            size of tile
-            </summary>
-        </member>
-        <member name="P:GMap.NET.PureProjection.Axis">
-            <summary>
-            Semi-major axis of ellipsoid, in meters
-            </summary>
-        </member>
-        <member name="P:GMap.NET.PureProjection.Flattening">
-            <summary>
-            Flattening of ellipsoid
-            </summary>
-        </member>
-        <member name="P:GMap.NET.PureProjection.Bounds">
-            <summary>
-            gets boundaries
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.Summary">
-            <summary>
-            contains a short textual description for the route, suitable for naming and disambiguating the route from alternatives.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.Duration">
-            <summary>
-            contains a human-readable representation of the duration.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.DurationValue">
-            <summary>
-            contains a value of the duration.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.Distance">
-            <summary>
-            contains a human-readable representation of the distance, displayed in units as used at the origin
-            (or as overridden within the units parameter in the request), in the language specified in the request.
-            (For example, miles and feet will be used for any origin within the United States.)
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.DistanceValue">
-            <summary>
-            contains a value of the distance.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.StartLocation">
-            <summary>
-            contains the latitude/longitude coordinates of the origin of this leg. Because the Directions API
-            calculates directions between locations by using the nearest transportation option (usually a road)
-            at the start and end points, start_location may be different than the provided origin of this leg if,
-            for example, a road is not near the origin.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.EndLocation">
-            <summary>
-            contains the latitude/longitude coordinates of the given destination of this leg. Because the Directions
-            API calculates directions between locations by using the nearest transportation option (usually a road)
-            at the start and end points, end_location may be different than the provided destination of this leg if,
-            for example, a road is not near the destination.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.StartAddress">
-            <summary>
-            contains the human-readable address (typically a street address) reflecting the start_location of this leg.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.EndAddress">
-            <summary>
-            contains the human-readable address (typically a street address) reflecting the end_location of this leg.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.Copyrights">
-            <summary>
-            contains the copyrights text to be displayed for this route. You must handle and display this information yourself.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.Steps">
-            <summary>
-            contains an array of steps denoting information about each separate step of the leg of the journey.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirections.Route">
-            <summary>
-            contains all points of the route
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirectionStep.StartLocation">
-            <summary>
-            contains the location of the starting point of this step, as a single set of lat and lng fields.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirectionStep.EndLocation">
-            <summary>
-            contains the location of the ending point of this step, as a single set of lat and lng fields.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirectionStep.Duration">
-            <summary>
-             contains the typical time required to perform the step, until the next step. This field may be undefined if the duration is unknown.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirectionStep.Distance">
-            <summary>
-            contains the distance covered by this step until the next step. This field may be undefined if the distance is unknown.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirectionStep.HtmlInstructions">
-            <summary>
-            contains formatted instructions for this step, presented as an HTML text string.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GDirectionStep.Points">
-            <summary>
-            points of the step
-            </summary>
-        </member>
-        <member name="T:GMap.NET.CacheProviders.SQLitePureImageCache">
-            <summary>
-            ultra fast cache system for tiles
-            </summary>
-        </member>
-        <member name="T:GMap.NET.PureImageCache">
-            <summary>
-            pure abstraction for image cache
-            </summary>
-        </member>
-        <member name="M:GMap.NET.PureImageCache.PutImageToCache(System.Byte[],System.Int32,GMap.NET.GPoint,System.Int32)">
-            <summary>
-            puts image to db
-            </summary>
-            <param name="tile"></param>
-            <param name="type"></param>
-            <param name="pos"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureImageCache.GetImageFromCache(System.Int32,GMap.NET.GPoint,System.Int32)">
-            <summary>
-            gets image from db
-            </summary>
-            <param name="type"></param>
-            <param name="pos"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.PureImageCache.DeleteOlderThan(System.DateTime,System.Nullable{System.Int32})">
-            <summary>
-            delete old tiles beyond a supplied date
-            </summary>
-            <param name="date">Tiles older than this will be deleted.</param>
-            <param name="type">provider dbid or null to use all providers</param>
-            <returns>The number of deleted tiles.</returns>
-        </member>
-        <member name="M:GMap.NET.CacheProviders.SQLitePureImageCache.Ping">
-            <summary>
-            triggers dynamic sqlite loading
-            </summary>
-        </member>
-        <member name="M:GMap.NET.CacheProviders.SQLitePureImageCache.CheckPreAllocation">
-            <summary>
-            pre-allocate 32MB free space 'ahead' if needed,
-            decreases fragmentation
-            </summary>
-        </member>
-        <member name="P:GMap.NET.CacheProviders.SQLitePureImageCache.CacheLocation">
-            <summary>
-            local cache location
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.CacheQueueItem">
-            <summary>
-            cache queue item
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.FastReaderWriterLock">
-            <summary>
-            custom ReaderWriterLock
-            in Vista and later uses integrated Slim Reader/Writer (SRW) Lock
-            http://msdn.microsoft.com/en-us/library/aa904937(VS.85).aspx
-            http://msdn.microsoft.com/en-us/magazine/cc163405.aspx#S2
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.KiberTileCache">
-            <summary>
-            kiber speed memory cache for tiles with history support ;}
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.KiberTileCache.MemoryCacheCapacity">
-            <summary>
-            the amount of tiles in MB to keep in memmory, default: 22MB, if each ~100Kb it's ~222 tiles
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.KiberTileCache.MemoryCacheSize">
-            <summary>
-            current memmory cache size in MB
-            </summary>
-        </member>
-        <member name="T:GMap.NET.PureImageProxy">
-            <summary>
-            image abstraction proxy
-            </summary>
-        </member>
-        <member name="T:GMap.NET.PureImage">
-            <summary>
-            image abstraction
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.LoadTask">
-            <summary>
-            tile load task
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.RawTile">
-            <summary>
-            struct for raw tile
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Projections.LKS92Projection">
-            <summary>
-            GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]
-            PROJCS["LKS92 / Latvia TM",GEOGCS["LKS92",DATUM["D_Latvia_1992",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",24],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",-6000000],UNIT["Meter",1]]
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Projections.MapyCZProjection">
-            <summary>
-            GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]
-            PROJCS["Mapy.cz",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",15],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",134400000],PARAMETER["false_northing",-41600000],UNIT["1/32meter",0.03125]]
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Projections.LKS94Projection">
-            <summary>
-            GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]
-            PROJCS["LKS94 / Lithuania TM",GEOGCS["LKS94",DATUM["Lithuania_1994_ETRS89",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6126"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4669"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",24],PARAMETER["scale_factor",0.9998],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","3346"],AXIS["Y",EAST],AXIS["X",NORTH]]
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Projections.MercatorProjection">
-            <summary>
-            The Mercator projection
-            PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["standard_parallel_1",0],UNIT["Meter",1]]
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Projections.PlateCarreeProjection">
-            <summary>
-            Plate Carrée (literally, “plane square”) projection
-            PROJCS["WGS 84 / World Equidistant Cylindrical",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],UNIT["Meter",1]]
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Extensions.GetValue``1(System.Runtime.Serialization.SerializationInfo,System.String)">
-            <summary>
-            Retrieves a value from the SerializationInfo of the given type.
-            </summary>
-            <typeparam name="T">The Type that we are attempting to de-serialize.</typeparam>
-            <param name="info">The SerializationInfo.</param>
-            <param name="key">The key of the value we wish to retrieve.</param>
-            <returns>The value if found, otherwise null.</returns>
-        </member>
-        <member name="M:GMap.NET.Extensions.GetValue``1(System.Runtime.Serialization.SerializationInfo,System.String,``0)">
-            <summary>
-            Retrieves a value from the SerializationInfo of the given type.
-            </summary>
-            <typeparam name="T">The Type that we are attempting to de-serialize.</typeparam>
-            <param name="info">The SerializationInfo.</param>
-            <param name="key">The key of the value we wish to retrieve.</param>
-            <param name="defaultValue">The default value if the de-serialized value was null.</param>
-            <returns>The value if found, otherwise the default value.</returns>
-        </member>
-        <member name="M:GMap.NET.Extensions.GetStruct``1(System.Runtime.Serialization.SerializationInfo,System.String,``0)">
-            <summary>
-            Retrieves a value from the SerializationInfo of the given type for structs.
-            </summary>
-            <typeparam name="T">The Type that we are attempting to de-serialize.</typeparam>
-            <param name="info">The SerializationInfo.</param>
-            <param name="key">The key of the value we wish to retrieve.</param>
-            <param name="defaultValue">The default value if the de-serialized value was null.</param>
-            <returns>The value if found, otherwise the default value.</returns>
-        </member>
-        <member name="M:GMap.NET.Extensions.GetStruct``1(System.Runtime.Serialization.SerializationInfo,System.String,System.Nullable{``0})">
-            <summary>
-            Retrieves a value from the SerializationInfo of the given type for structs.
-            </summary>
-            <typeparam name="T">The Type that we are attempting to de-serialize.</typeparam>
-            <param name="info">The SerializationInfo.</param>
-            <param name="key">The key of the value we wish to retrieve.</param>
-            <param name="defaultValue">The default value if the de-serialized value was null.</param>
-            <returns>The value if found, otherwise the default value.</returns>
-        </member>
-        <member name="T:GMap.NET.GeoCoderStatusCode">
-            <summary>
-            GeoCoder StatusCode
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.Unknow">
-            <summary>
-            unknow response
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_SUCCESS">
-            <summary>
-            No errors occurred; the address was successfully parsed and its geocode has been returned.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_BAD_REQUEST">
-            <summary>
-            A directions request could not be successfully parsed.
-            For example, the request may have been rejected if it contained more than the maximum number of waypoints allowed.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_SERVER_ERROR">
-            <summary>
-            A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_MISSING_QUERY">
-            <summary>
-            The HTTP q parameter was either missing or had no value.
-            For geocoding requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_MISSING_ADDRESS">
-            <summary>
-            Synonym for G_GEO_MISSING_QUERY.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_UNKNOWN_ADDRESS">
-            <summary>
-             No corresponding geographic location could be found for the specified address.
-             This may be due to the fact that the address is relatively new, or it may be incorrect.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_UNAVAILABLE_ADDRESS">
-            <summary>
-            The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_UNKNOWN_DIRECTIONS">
-            <summary>
-            The GDirections object could not compute directions between the points mentioned in the query.
-            This is usually because there is no route available between the two points, or because we do not have data for routing in that region.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_BAD_KEY">
-            <summary>
-            The given key is either invalid or does not match the domain for which it was given.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.G_GEO_TOO_MANY_QUERIES">
-            <summary>
-            The given key has gone over the requests limit in the 24 hour period or has submitted too many requests in too short a period of time.
-            If you're sending multiple requests in parallel or in a tight loop, use a timer or pause in your code to make sure you don't send the requests too quickly.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GeoCoderStatusCode.ExceptionInCode">
-            <summary>
-            indicates that exception occured during execution
-            </summary>
-        </member>
-        <member name="T:GMap.NET.DirectionsStatusCode">
-            <summary>
-            Direction StatusCode
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.OK">
-            <summary>
-            indicates the response contains a valid result.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.NOT_FOUND">
-            <summary>
-            indicates at least one of the locations specified in the requests's origin, destination, or waypoints could not be geocoded.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.ZERO_RESULTS">
-            <summary>
-            indicates no route could be found between the origin and destination.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.MAX_WAYPOINTS_EXCEEDED">
-            <summary>
-             indicates that too many waypointss were provided in the request The maximum allowed waypoints is 8, plus the origin, and destination.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.INVALID_REQUEST">
-            <summary>
-            indicates that the provided request was invalid.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.OVER_QUERY_LIMIT">
-            <summary>
-            indicates the service has received too many requests from your application within the allowed time period.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.REQUEST_DENIED">
-            <summary>
-            indicates that the service denied use of the directions service by your application.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.UNKNOWN_ERROR">
-            <summary>
-            indicates a directions request could not be processed due to a server error. The request may succeed if you try again.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.DirectionsStatusCode.ExceptionInCode">
-            <summary>
-            indicates that exception occured during execution
-            </summary>
-        </member>
-        <member name="T:GMap.NET.gpxType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.metadata">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.wpt">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.rte">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.trk">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.extensions">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.version">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.gpxType.creator">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.metadataType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.name">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.desc">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.author">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.copyright">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.link">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.time">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.timeSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.keywords">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.bounds">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.metadataType.extensions">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.personType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.personType.name">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.personType.email">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.personType.link">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.emailType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.emailType.id">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.emailType.domain">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.trksegType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trksegType.trkpt">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trksegType.extensions">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.wptType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.ele">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.eleSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.time">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.timeSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.magvar">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.magvarSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.geoidheight">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.geoidheightSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.name">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.cmt">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.desc">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.src">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.link">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.sym">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.type">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.fix">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.fixSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.sat">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.hdop">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.hdopSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.vdop">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.vdopSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.pdop">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.pdopSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.ageofdgpsdata">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.ageofdgpsdataSpecified">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.dgpsid">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.extensions">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.lat">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.wptType.lon">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.linkType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.linkType.text">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.linkType.type">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.linkType.href">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.fixType">
-            <remarks/>
-        </member>
-        <member name="F:GMap.NET.fixType.none">
-            <remarks/>
-        </member>
-        <member name="F:GMap.NET.fixType.Item2d">
-            <remarks/>
-        </member>
-        <member name="F:GMap.NET.fixType.Item3d">
-            <remarks/>
-        </member>
-        <member name="F:GMap.NET.fixType.dgps">
-            <remarks/>
-        </member>
-        <member name="F:GMap.NET.fixType.pps">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.extensionsType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.extensionsType.Any">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.trkType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.name">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.cmt">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.desc">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.src">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.link">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.number">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.type">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.extensions">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.trkType.trkseg">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.rteType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.name">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.cmt">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.desc">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.src">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.link">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.number">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.type">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.extensions">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.rteType.rtept">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.boundsType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.boundsType.minlat">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.boundsType.minlon">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.boundsType.maxlat">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.boundsType.maxlon">
-            <remarks/>
-        </member>
-        <member name="T:GMap.NET.copyrightType">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.copyrightType.year">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.copyrightType.license">
-            <remarks/>
-        </member>
-        <member name="P:GMap.NET.copyrightType.author">
-            <remarks/>
-        </member>
-        <!-- Badly formed XML comment ignored for member "T:GMap.NET.LanguageType" -->
-        <member name="T:GMap.NET.AccessMode">
-            <summary>
-            tile access mode
-            </summary>
-        </member>
-        <member name="F:GMap.NET.AccessMode.ServerOnly">
-            <summary>
-            access only server
-            </summary>
-        </member>
-        <member name="F:GMap.NET.AccessMode.ServerAndCache">
-            <summary>
-            access first server and caches localy
-            </summary>
-        </member>
-        <member name="F:GMap.NET.AccessMode.CacheOnly">
-            <summary>
-            access only cache
-            </summary>
-        </member>
-        <member name="T:GMap.NET.MapRoute">
-            <summary>
-            represents route of map
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapRoute.Points">
-            <summary>
-            points of route
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapRoute.Name">
-            <summary>
-            route info
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MapRoute.Tag">
-            <summary>
-            custom object
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapRoute.Clear">
-            <summary>
-            clears points and sets tag and name to null
-            </summary>
-        </member>
-        <member name="M:GMap.NET.MapRoute.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
-            </summary>
-            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
-            <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
-            <exception cref="T:System.Security.SecurityException">
-            The caller does not have the required permission.
-            </exception>
-        </member>
-        <member name="M:GMap.NET.MapRoute.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GMap.NET.MapRoute"/> class.
-            </summary>
-            <param name="info">The info.</param>
-            <param name="context">The context.</param>
-        </member>
-        <member name="M:GMap.NET.MapRoute.OnDeserialization(System.Object)">
-            <summary>
-            Runs when the entire object graph has been de-serialized.
-            </summary>
-            <param name="sender">The object that initiated the callback. The functionality for this parameter is not currently implemented.</param>
-        </member>
-        <member name="P:GMap.NET.MapRoute.From">
-            <summary>
-            route start point
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapRoute.To">
-            <summary>
-            route end point
-            </summary>
-        </member>
-        <member name="P:GMap.NET.MapRoute.Distance">
-            <summary>
-            route distance (in km)
-            </summary>
-        </member>
-        <member name="T:GMap.NET.CacheProviders.MsSQLPureImageCache">
-            <summary>
-            image cache for ms sql server
-            optimized by mmurfinsimmons@gmail.com
-            </summary>
-        </member>
-        <member name="M:GMap.NET.CacheProviders.MsSQLPureImageCache.Initialize">
-            <summary>
-            inits connection to server
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.CacheProviders.MsSQLPureImageCache.GMap#NET#PureImageCache#DeleteOlderThan(System.DateTime,System.Nullable{System.Int32})">
-            <summary>
-            NotImplemented
-            </summary>
-            <param name="date"></param>
-            <param name="type"></param>
-            <returns></returns>
-        </member>
-        <member name="P:GMap.NET.CacheProviders.MsSQLPureImageCache.Initialized">
-            <summary>
-            is cache initialized
-            </summary>
-        </member>
-        <member name="T:GMap.NET.GPoint">
-            <summary>
-            the point ;}
-            </summary>
-        </member>
-        <member name="T:GMap.NET.GRect">
-            <summary>
-            the rect
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Singleton`1">
-            <summary>
-            generic for singletons
-            </summary>
-            <typeparam name="T"></typeparam>
-        </member>
-        <member name="T:GMap.NET.MouseWheelZoomType">
-            <summary>
-            map zooming type
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MouseWheelZoomType.MousePositionAndCenter">
-            <summary>
-            zooms map to current mouse position and makes it map center
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MouseWheelZoomType.MousePositionWithoutCenter">
-            <summary>
-            zooms to current mouse position, but doesn't make it map center,
-            google/bing style ;}
-            </summary>
-        </member>
-        <member name="F:GMap.NET.MouseWheelZoomType.ViewCenter">
-            <summary>
-            zooms map to current view center
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Properties.Resources">
-            <summary>
-              A strongly-typed resource class, for looking up localized strings, etc.
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Properties.Resources.ResourceManager">
-            <summary>
-              Returns the cached ResourceManager instance used by this class.
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Properties.Resources.Culture">
-            <summary>
-              Overrides the current thread's CurrentUICulture property for all
-              resource lookups using this strongly typed resource class.
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Properties.Resources.CreateTileDb">
-             <summary>
-               Looks up a localized string similar to CREATE TABLE IF NOT EXISTS Tiles (id INTEGER NOT NULL PRIMARY KEY, X INTEGER NOT NULL, Y INTEGER NOT NULL, Zoom INTEGER NOT NULL, Type UNSIGNED INTEGER  NOT NULL, CacheTime DATETIME);
-            CREATE INDEX IF NOT EXISTS IndexOfTiles ON Tiles (X, Y, Zoom, Type);
-
-            CREATE TABLE IF NOT EXISTS TilesData (id INTEGER NOT NULL PRIMARY KEY CONSTRAINT fk_Tiles_id REFERENCES Tiles(id) ON DELETE CASCADE, Tile BLOB NULL);
-
-            -- Foreign Key Preventing insert
-            CREATE TRIGGER fki_TilesData_id_Tiles_id
-            BEFORE INSERT ON [TilesDat [rest of string was truncated]&quot;;.
-             </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.Cache">
-            <summary>
-            cache system for tiles, geocoding, etc...
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Cache.ImageCache">
-            <summary>
-            abstract image cache
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Cache.ImageCacheSecond">
-            <summary>
-            second level abstract image cache
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.Cache.CacheLocation">
-            <summary>
-            local cache location
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.Core">
-            <summary>
-            internal map control core
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.IsDragging">
-            <summary>
-            is user dragging map
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.SetZoomToFitRect(GMap.NET.RectLatLng)">
-            <summary>
-            sets zoom to max to fit rect
-            </summary>
-            <param name="rect"></param>
-            <returns></returns>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.PolygonsEnabled">
-            <summary>
-            is polygons enabled
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.RoutesEnabled">
-            <summary>
-            is routes enabled
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.MarkersEnabled">
-            <summary>
-            is markers enabled
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.CanDragMap">
-            <summary>
-            can user drag map
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.RetryLoadTile">
-            <summary>
-            retry count to get tile
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.LevelsKeepInMemmory">
-            <summary>
-            how many levels of tiles are staying decompresed in memory
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Internals.Core.RenderMode">
-            <summary>
-            map render mode
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.FromLocalToLatLng(System.Int64,System.Int64)">
-            <summary>
-            gets lat/lng from local control coordinates
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.FromLatLngToLocal(GMap.NET.PointLatLng)">
-            <summary>
-            return local coordinates from lat/lng
-            </summary>
-            <param name="latlng"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.GetMaxZoomToFitRect(GMap.NET.RectLatLng)">
-            <summary>
-            gets max zoom level to fit rectangle
-            </summary>
-            <param name="rect"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.BeginDrag(GMap.NET.GPoint)">
-            <summary>
-            initiates map dragging
-            </summary>
-            <param name="pt"></param>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.EndDrag">
-            <summary>
-            ends map dragging
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.ReloadMap">
-            <summary>
-            reloads map
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.GoToCurrentPosition">
-            <summary>
-            moves current position into map center
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.GoToCurrentPositionOnZoom">
-            <summary>
-            moves current position into map center
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.DragOffset(GMap.NET.GPoint)">
-            <summary>
-            darg map by offset in pixels
-            </summary>
-            <param name="offset"></param>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.Drag(GMap.NET.GPoint)">
-            <summary>
-            drag map
-            </summary>
-            <param name="pt"></param>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.CancelAsyncTasks">
-            <summary>
-            cancels tile loaders and bounds checker
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.UpdateBounds">
-            <summary>
-            updates map bounds
-            </summary>
-        </member>
-        <member name="M:GMap.NET.Internals.Core.UpdateGroundResolution">
-            <summary>
-            updates ground resolution info
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.Core.Zoom">
-            <summary>
-            map zoom
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.Core.PositionPixel">
-            <summary>
-            current marker position in pixel coordinates
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.Core.Position">
-            <summary>
-            current marker position
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnCurrentPositionChanged">
-            <summary>
-            occurs when current position is changed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnTileLoadComplete">
-            <summary>
-            occurs when tile set load is complete
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnTileLoadStart">
-            <summary>
-            occurs when tile set is starting to load
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnEmptyTileError">
-            <summary>
-            occurs on empty tile displayed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnMapDrag">
-            <summary>
-            occurs on map drag
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnMapZoomChanged">
-            <summary>
-            occurs on map zoom changed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.Internals.Core.OnMapTypeChanged">
-            <summary>
-            occurs on map type changed
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Internals.Core.ViewArea">
-            <summary>
-            gets current map view top/left coordinate, width in Lng, height in Lat
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="T:GMap.NET.Internals.Tile">
-            <summary>
-            represent tile
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.TileMatrix">
-            <summary>
-            matrix for tiles
-            </summary>
-        </member>
-        <member name="T:GMap.NET.GMaps">
-            <summary>
-            maps manager
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.Mode">
-            <summary>
-            tile access mode
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.UseRouteCache">
-            <summary>
-            is map ussing cache for routing
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.UseGeocoderCache">
-            <summary>
-            is map using cache for geocoder
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.UseDirectionsCache">
-            <summary>
-            is map using cache for directions
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.UsePlacemarkCache">
-            <summary>
-            is map using cache for placemarks
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.UseUrlCache">
-            <summary>
-            is map ussing cache for other url
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.UseMemoryCache">
-            <summary>
-            is map using memory cache for tiles
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.MemoryCache">
-            <summary>
-            MemoryCache provider
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.ShuffleTilesOnLoad">
-            <summary>
-            load tiles in random sequence
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.tileCacheQueue">
-            <summary>
-            tile queue to cache
-            </summary>
-        </member>
-        <member name="F:GMap.NET.GMaps.CacheEngine">
-            <summary>
-            cache worker
-            </summary>
-        </member>
-        <member name="M:GMap.NET.GMaps.SQLitePing">
-            <summary>
-            triggers dynamic sqlite loading,
-            call this before you use sqlite for other reasons than caching maps
-            </summary>
-        </member>
-        <member name="M:GMap.NET.GMaps.ExportToGMDB(System.String)">
-            <summary>
-            exports current map cache to GMDB file
-            if file exsist only new records will be added
-            otherwise file will be created and all data exported
-            </summary>
-            <param name="file"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.GMaps.ImportFromGMDB(System.String)">
-            <summary>
-            imports GMDB file to current map cache
-            only new records will be added
-            </summary>
-            <param name="file"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.GMaps.OptimizeMapDb(System.String)">
-            <summary>
-            optimizes map database, *.gmdb
-            </summary>
-            <param name="file">database file name or null to optimize current user db</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.GMaps.EnqueueCacheTask(GMap.NET.Internals.CacheQueueItem)">
-            <summary>
-            enqueueens tile to cache
-            </summary>
-            <param name="task"></param>
-        </member>
-        <member name="M:GMap.NET.GMaps.CancelTileCaching">
-            <summary>
-            immediately stops background tile caching, call it if you want fast exit the process
-            </summary>
-        </member>
-        <member name="M:GMap.NET.GMaps.CacheEngineLoop">
-            <summary>
-            live for cache ;}
-            </summary>
-            <param name="sender"></param>
-            <param name="e"></param>
-        </member>
-        <member name="M:GMap.NET.GMaps.ExportGPX(System.Collections.Generic.IEnumerable{System.Collections.Generic.List{GMap.NET.GpsLog}},System.String)">
-            <summary>
-            exports gps data to gpx file
-            </summary>
-            <param name="log">gps data</param>
-            <param name="gpxFile">file to export</param>
-            <returns>true if success</returns>
-        </member>
-        <member name="M:GMap.NET.GMaps.GetImageFrom(GMap.NET.MapProviders.GMapProvider,GMap.NET.GPoint,System.Int32,System.Exception@)">
-            <summary>
-            gets image from tile server
-            </summary>
-            <param name="provider"></param>
-            <param name="pos"></param>
-            <param name="zoom"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.GMaps.EnableTileHost(System.Int32)">
-            <summary>
-            turns on tile host
-            </summary>
-            <param name="port"></param>
-        </member>
-        <member name="M:GMap.NET.GMaps.DisableTileHost">
-            <summary>
-            turns off tile host
-            </summary>
-            <param name="port"></param>
-        </member>
-        <member name="P:GMap.NET.GMaps.PrimaryCache">
-            <summary>
-            primary cache provider, by default: ultra fast SQLite!
-            </summary>
-        </member>
-        <member name="P:GMap.NET.GMaps.SecondaryCache">
-            <summary>
-            secondary cache provider, by default: none,
-            use it if you have server in your local network
-            </summary>
-        </member>
-        <member name="P:GMap.NET.GMaps.IsRunningOnMono">
-            <summary>
-            return true if running on mono
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="P:GMap.NET.GMaps.CacheOnIdleRead">
-            <summary>
-            delays writing tiles to cache while performing reads
-            </summary>
-        </member>
-        <member name="P:GMap.NET.GMaps.BoostCacheEngine">
-            <summary>
-            disables delay between saving tiles into database/cache
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Placemark">
-            <summary>
-            represents place info
-            </summary>
-        </member>
-        <member name="F:GMap.NET.Placemark.Accuracy">
-            <summary>
-            the accuracy of address
-            </summary>
-        </member>
-        <member name="P:GMap.NET.Placemark.Address">
-            <summary>
-            the address
-            </summary>
-        </member>
-        <member name="T:GMap.NET.PointLatLng">
-            <summary>
-            the point of coordinates
-            </summary>
-        </member>
-        <member name="P:GMap.NET.PointLatLng.IsEmpty">
-            <summary>
-            returns true if coordinates wasn't assigned
-            </summary>
-        </member>
-        <member name="T:GMap.NET.RectLatLng">
-            <summary>
-            the rect of coordinates
-            </summary>
-        </member>
-        <member name="P:GMap.NET.RectLatLng.IsEmpty">
-            <summary>
-            returns true if coordinates wasn't assigned
-            </summary>
-        </member>
-        <member name="T:GMap.NET.RenderMode">
-            <summary>
-            types of map rendering
-            </summary>
-        </member>
-        <member name="F:GMap.NET.RenderMode.GDI_PLUS">
-            <summary>
-            gdi+ should work anywhere on Windows Forms
-            </summary>
-        </member>
-        <member name="F:GMap.NET.RenderMode.WPF">
-            <summary>
-            only on Windows Presentation Foundation
-            </summary>
-        </member>
-        <member name="T:GMap.NET.GSize">
-            <summary>
-            the size
-            </summary>
-        </member>
-        <member name="T:GMap.NET.SizeLatLng">
-            <summary>
-            the size of coordinates
-            </summary>
-        </member>
-        <member name="T:GMap.NET.Internals.Stuff">
-            <summary>
-            etc functions...
-            </summary>
-        </member>
-    </members>
-</doc>
diff --git a/PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.dll b/PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.dll
deleted file mode 100644
index 88817b0..0000000
Binary files a/PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.dll and /dev/null differ
diff --git a/PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.xml b/PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.xml
deleted file mode 100644
index 42e4666..0000000
--- a/PokemonGo/RocketAPI/Window/lib/GMap.NET.WindowsForms.xml
+++ /dev/null
@@ -1,862 +0,0 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>GMap.NET.WindowsForms</name>
-    </assembly>
-    <members>
-        <member name="T:GMap.NET.WindowsForms.GMapPolygon">
-            <summary>
-            GMap.NET polygon
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapPolygon.IsHitTestVisible">
-            <summary>
-            can receive input
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapPolygon.IsInsideLocal(System.Int32,System.Int32)">
-            <summary>
-            Indicates whether the specified point is contained within this System.Drawing.Drawing2D.GraphicsPath
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-            <returns></returns>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapPolygon.Stroke">
-            <summary>
-            specifies how the outline is painted
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapPolygon.Fill">
-            <summary>
-            background color
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapPolygon.IsInside(GMap.NET.PointLatLng)">
-            <summary>
-            checks if point is inside the polygon,
-            info.: http://greatmaps.codeplex.com/discussions/279437#post700449
-            </summary>
-            <param name="p"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapPolygon.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
-            </summary>
-            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
-            <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
-            <exception cref="T:System.Security.SecurityException">
-            The caller does not have the required permission.
-            </exception>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapPolygon.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GMap.NET.MapRoute"/> class.
-            </summary>
-            <param name="info">The info.</param>
-            <param name="context">The context.</param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapPolygon.OnDeserialization(System.Object)">
-            <summary>
-            Runs when the entire object graph has been de-serialized.
-            </summary>
-            <param name="sender">The object that initiated the callback. The functionality for this parameter is not currently implemented.</param>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapPolygon.IsVisible">
-            <summary>
-            is polygon visible
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapPolygon.IsMouseOver">
-            <summary>
-            is mouse over
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapMarker">
-            <summary>
-            GMap.NET marker
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapMarker.DisableRegionCheck">
-            <summary>
-            if true, marker will be rendered even if it's outside current view
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapMarker.IsHitTestVisible">
-            <summary>
-            can maker receive input
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapMarker.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
-            </summary>
-            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
-            <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
-            <exception cref="T:System.Security.SecurityException">
-            The caller does not have the required permission.
-            </exception>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapMarker.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GMap.NET.WindowsForms.GMapMarker"/> class.
-            </summary>
-            <param name="info">The info.</param>
-            <param name="context">The context.</param>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapMarker.LocalPosition">
-            <summary>
-            marker position in local coordinates, internal only, do not set it manualy
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapMarker.ToolTipPosition">
-            <summary>
-            ToolTip position in local coordinates
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapMarker.IsVisible">
-            <summary>
-            is marker visible
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapMarker.IsMouseOver">
-            <summary>
-            is mouse over marker
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.Markers.GMarkerGoogle.#ctor(GMap.NET.PointLatLng,System.Drawing.Bitmap)">
-            <summary>
-            marker using manual bitmap, NonSerialized
-            </summary>
-            <param name="p"></param>
-            <param name="Bitmap"></param>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.ToolTips.GMapBaloonToolTip">
-            <summary>
-            GMap.NET marker
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapToolTip">
-            <summary>
-            GMap.NET marker
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapToolTip.Format">
-            <summary>
-            string format
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapToolTip.Font">
-            <summary>
-            font
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapToolTip.Stroke">
-            <summary>
-            specifies how the outline is painted
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapToolTip.Fill">
-            <summary>
-            background color
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapToolTip.Foreground">
-            <summary>
-            text foreground
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapToolTip.TextPadding">
-            <summary>
-            text padding
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapToolTip.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GMap.NET.WindowsForms.GMapToolTip"/> class.
-            </summary>
-            <param name="info">The info.</param>
-            <param name="context">The context.</param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapToolTip.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
-            </summary>
-            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
-            <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
-            <exception cref="T:System.Security.SecurityException">
-            The caller does not have the required permission.
-            </exception>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip">
-            <summary>
-            GMap.NET marker
-            </summary>
-        </member>
-        <member name="T:GMap.NET.TilePrefetcher">
-            <summary>
-            form helping to prefetch tiles on local db
-            </summary>
-        </member>
-        <member name="F:GMap.NET.TilePrefetcher.components">
-            <summary>
-            Required designer variable.
-            </summary>
-        </member>
-        <member name="M:GMap.NET.TilePrefetcher.Dispose(System.Boolean)">
-            <summary>
-            Clean up any resources being used.
-            </summary>
-            <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-        </member>
-        <member name="M:GMap.NET.TilePrefetcher.InitializeComponent">
-            <summary>
-            Required method for Designer support - do not modify
-            the contents of this method with the code editor.
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.MarkerTooltipMode">
-            <summary>
-            modeof tooltip
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapOverlay">
-            <summary>
-            GMap.NET overlay
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapOverlay.Id">
-            <summary>
-            overlay Id
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapOverlay.Markers">
-            <summary>
-            list of markers, should be thread safe
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapOverlay.Routes">
-            <summary>
-            list of routes, should be thread safe
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapOverlay.Polygons">
-            <summary>
-            list of polygons, should be thread safe
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapOverlay.ForceUpdate">
-            <summary>
-            updates local positions of objects
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapOverlay.OnRender(System.Drawing.Graphics)">
-            <summary>
-            renders objects/routes/polygons
-            </summary>
-            <param name="g"></param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapOverlay.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
-            </summary>
-            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
-            <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
-            <exception cref="T:System.Security.SecurityException">
-            The caller does not have the required permission.
-            </exception>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapOverlay.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GMap.NET.WindowsForms.GMapOverlay"/> class.
-            </summary>
-            <param name="info">The info.</param>
-            <param name="context">The context.</param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapOverlay.OnDeserialization(System.Object)">
-            <summary>
-            Runs when the entire object graph has been deserialized.
-            </summary>
-            <param name="sender">The object that initiated the callback. The functionality for this parameter is not currently implemented.</param>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapOverlay.IsVisibile">
-            <summary>
-            is overlay visible
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapImage">
-            <summary>
-            image abstraction
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapImageProxy">
-            <summary>
-            image abstraction proxy
-            </summary>
-        </member>
-        <member name="T:System.Windows.Forms.Properties.Resources">
-            <summary>
-              A strongly-typed resource class, for looking up localized strings, etc.
-            </summary>
-        </member>
-        <member name="P:System.Windows.Forms.Properties.Resources.ResourceManager">
-            <summary>
-              Returns the cached ResourceManager instance used by this class.
-            </summary>
-        </member>
-        <member name="P:System.Windows.Forms.Properties.Resources.Culture">
-            <summary>
-              Overrides the current thread's CurrentUICulture property for all
-              resource lookups using this strongly typed resource class.
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapRoute">
-            <summary>
-            GMap.NET route
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapRoute.IsHitTestVisible">
-            <summary>
-            can receive input
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapRoute.IsInside(System.Int32,System.Int32)">
-            <summary>
-            Indicates whether the specified point is contained within this System.Drawing.Drawing2D.GraphicsPath
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-            <returns></returns>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapRoute.Stroke">
-            <summary>
-            specifies how the outline is painted
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapRoute.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
-            </summary>
-            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
-            <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
-            <exception cref="T:System.Security.SecurityException">
-            The caller does not have the required permission.
-            </exception>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapRoute.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
-            <summary>
-            Initializes a new instance of the <see cref="T:GMap.NET.WindowsForms.GMapRoute"/> class.
-            </summary>
-            <param name="info">The info.</param>
-            <param name="context">The context.</param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapRoute.OnDeserialization(System.Object)">
-            <summary>
-            Runs when the entire object graph has been de-serialized.
-            </summary>
-            <param name="sender">The object that initiated the callback. The functionality for this parameter is not currently implemented.</param>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapRoute.IsVisible">
-            <summary>
-            is marker visible
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapRoute.IsMouseOver">
-            <summary>
-            is mouse over
-            </summary>
-        </member>
-        <member name="T:GMap.NET.WindowsForms.GMapControl">
-            <summary>
-            GMap.NET control for Windows Forms
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.Overlays">
-            <summary>
-            list of overlays, should be thread safe
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.EmptyTileText">
-            <summary>
-            text on empty tiles
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.EmptyTileBorders">
-            <summary>
-            pen for empty tile borders
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.ScalePen">
-            <summary>
-            pen for scale info
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.SelectionPen">
-            <summary>
-            area selection pen
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.MapScaleInfoEnabled">
-            <summary>
-            show map scale info
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.FillEmptyTiles">
-            <summary>
-            enables filling empty tiles using lower level images
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.DisableAltForSelection">
-            <summary>
-            if true, selects area just by holding mouse and moving
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.DragButton">
-            <summary>
-            map dragg button
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.selectedArea">
-            <summary>
-            current selected area in map
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.BoundsOfMap">
-            <summary>
-            map boundaries
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.ForceDoubleBuffer">
-            <summary>
-            enables integrated DoubleBuffer for running on windows mobile
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.HoldInvalidation">
-            <summary>
-            stops immediate marker/route/polygon invalidations;
-            call Refresh to perform single refresh and reset invalidation state
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.Refresh">
-            <summary>
-            call this to stop HoldInvalidation and perform single forced instant refresh
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.Invalidate">
-            <summary>
-            enque built-in thread safe invalidation
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.#ctor">
-            <summary>
-            construct
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ForceUpdateOverlays">
-            <summary>
-            update objects when map is draged/zoomed
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.UpdateMarkerLocalPosition(GMap.NET.WindowsForms.GMapMarker)">
-            <summary>
-            updates markers local position
-            </summary>
-            <param name="marker"></param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.UpdateRouteLocalPosition(GMap.NET.WindowsForms.GMapRoute)">
-            <summary>
-            updates routes local position
-            </summary>
-            <param name="route"></param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.UpdatePolygonLocalPosition(GMap.NET.WindowsForms.GMapPolygon)">
-            <summary>
-            updates polygons local position
-            </summary>
-            <param name="polygon"></param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.SetZoomToFitRect(GMap.NET.RectLatLng)">
-            <summary>
-            sets zoom to max to fit rect
-            </summary>
-            <param name="rect"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ZoomAndCenterMarkers(System.String)">
-            <summary>
-            sets to max zoom to fit all markers and centers them in map
-            </summary>
-            <param name="overlayId">overlay id or null to check all</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ZoomAndCenterRoutes(System.String)">
-            <summary>
-            zooms and centers all route
-            </summary>
-            <param name="overlayId">overlay id or null to check all</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ZoomAndCenterRoute(GMap.NET.MapRoute)">
-            <summary>
-            zooms and centers route
-            </summary>
-            <param name="route"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.GetRectOfAllMarkers(System.String)">
-            <summary>
-            gets rectangle with all objects inside
-            </summary>
-            <param name="overlayId">overlay id or null to check all</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.GetRectOfAllRoutes(System.String)">
-            <summary>
-            gets rectangle with all objects inside
-            </summary>
-            <param name="overlayId">overlay id or null to check all</param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.GetRectOfRoute(GMap.NET.MapRoute)">
-            <summary>
-            gets rect of route
-            </summary>
-            <param name="route"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ToImage">
-            <summary>
-            gets image of the current view
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.Offset(System.Int32,System.Int32)">
-            <summary>
-            offset position in pixels
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.OnPaintOverlays(System.Drawing.Graphics)">
-            <summary>
-            override, to render something more
-            </summary>
-            <param name="g"></param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.UpdateRotationMatrix">
-            <summary>
-            updates rotation matrix
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ApplyRotationInversion(System.Int32,System.Int32)">
-            <summary>
-            apply transformation if in rotation mode
-            </summary>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ApplyRotation(System.Int32,System.Int32)">
-            <summary>
-            apply transformation if in rotation mode
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.DragSize">
-            <summary>
-            Gets the width and height of a rectangle centered on the point the mouse
-            button was pressed, within which a drag operation will not begin.
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.DisableFocusOnMouseEnter">
-            <summary>
-            prevents focusing map if mouse enters it's area
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.InvertedMouseWheelZooming">
-            <summary>
-            reverses MouseWheel zooming direction
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.GMapControl.IgnoreMarkerOnMouseWheel">
-            <summary>
-            lets you zoom by MouseWheel even when pointer is in area of marker
-            </summary>
-        </member>
-        <!-- Badly formed XML comment ignored for member "M:GMap.NET.WindowsForms.GMapControl.ReloadMap" -->
-        <member name="M:GMap.NET.WindowsForms.GMapControl.SetPositionByKeywords(System.String)">
-            <summary>
-            set current position using keywords
-            </summary>
-            <param name="keys"></param>
-            <returns>true if successfull</returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.FromLocalToLatLng(System.Int32,System.Int32)">
-            <summary>
-            gets world coordinate from local control coordinate
-            </summary>
-            <param name="x"></param>
-            <param name="y"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.FromLatLngToLocal(GMap.NET.PointLatLng)">
-            <summary>
-            gets local coordinate from world coordinate
-            </summary>
-            <param name="point"></param>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ShowExportDialog">
-            <summary>
-            shows map db export dialog
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.ShowImportDialog">
-            <summary>
-            shows map dbimport dialog
-            </summary>
-            <returns></returns>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.SerializeOverlays(System.IO.Stream)">
-            <summary>
-            Serializes the overlays.
-            </summary>
-            <param name="stream">The stream.</param>
-        </member>
-        <member name="M:GMap.NET.WindowsForms.GMapControl.DeserializeOverlays(System.IO.Stream)">
-            <summary>
-            De-serializes the overlays.
-            </summary>
-            <param name="stream">The stream.</param>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnMarkerClick">
-            <summary>
-            occurs when clicked on marker
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnPolygonClick">
-            <summary>
-            occurs when clicked on polygon
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnRouteClick">
-            <summary>
-            occurs when clicked on route
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnRouteEnter">
-            <summary>
-            occurs on mouse enters route area
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnRouteLeave">
-            <summary>
-            occurs on mouse leaves route area
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnSelectionChange">
-            <summary>
-            occurs when mouse selection is changed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnMarkerEnter">
-            <summary>
-            occurs on mouse enters marker area
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnMarkerLeave">
-            <summary>
-            occurs on mouse leaves marker area
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnPolygonEnter">
-            <summary>
-            occurs on mouse enters Polygon area
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnPolygonLeave">
-            <summary>
-            occurs on mouse leaves Polygon area
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.MaxZoom">
-            <summary>
-            max zoom
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.MinZoom">
-            <summary>
-            min zoom
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.MouseWheelZoomType">
-            <summary>
-            map zooming type for mouse wheel
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.SelectedAreaFillColor">
-            <summary>
-            background of selected area
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.HelperLineOption">
-            <summary>
-            draw lines at the mouse pointer position
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.EmptyTileColor">
-            <summary>
-            color of empty tile background
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.RetryLoadTile">
-            <summary>
-            retry count to get tile
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.LevelsKeepInMemmory">
-            <summary>
-            how many levels of tiles are staying decompresed in memory
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.ShowTileGridLines">
-            <summary>
-            shows tile gridlines
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.IsRotated">
-            <summary>
-            returs true if map bearing is not zero
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.Bearing">
-            <summary>
-            bearing for rotation of the map
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.VirtualSizeEnabled">
-            <summary>
-            shrinks map area, useful just for testing
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.ZoomStep">
-            <summary>
-            map zoom level
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.Position">
-            <summary>
-            current map center position
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.PositionPixel">
-            <summary>
-            current position in pixel coordinates
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.CacheLocation">
-            <summary>
-            location of cache
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.IsDragging">
-            <summary>
-            is user dragging map
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.IsMouseOverMarker">
-            <summary>
-            is mouse over marker
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.IsMouseOverRoute">
-            <summary>
-            is mouse over route
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.IsMouseOverPolygon">
-            <summary>
-            is mouse over polygon
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.ViewArea">
-            <summary>
-            gets current map view top/left coordinate, width in Lng, height in Lat
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.RoutesEnabled">
-            <summary>
-            is routes enabled
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.PolygonsEnabled">
-            <summary>
-            is polygons enabled
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.MarkersEnabled">
-            <summary>
-            is markers enabled
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.CanDragMap">
-            <summary>
-            can user drag map
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.RenderMode">
-            <summary>
-            map render mode
-            </summary>
-        </member>
-        <member name="P:GMap.NET.WindowsForms.GMapControl.Manager">
-            <summary>
-            gets map manager
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnPositionChanged">
-            <summary>
-            occurs when current position is changed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnTileLoadComplete">
-            <summary>
-            occurs when tile set load is complete
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnTileLoadStart">
-            <summary>
-            occurs when tile set is starting to load
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnMapDrag">
-            <summary>
-            occurs on map drag
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnMapZoomChanged">
-            <summary>
-            occurs on map zoom changed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnMapTypeChanged">
-            <summary>
-            occures on map type changed
-            </summary>
-        </member>
-        <member name="E:GMap.NET.WindowsForms.GMapControl.OnEmptyTileError">
-            <summary>
-            occurs on empty tile displayed
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.ScaleModes.Integer">
-            <summary>
-            no scaling
-            </summary>
-        </member>
-        <member name="F:GMap.NET.WindowsForms.ScaleModes.Fractional">
-            <summary>
-            scales to fractional level, CURRENT VERSION DOESN'T HANDLE OBJECT POSITIONS CORRECLTY,
-            http://greatmaps.codeplex.com/workitem/16046
-            </summary>
-        </member>
-    </members>
-</doc>
diff --git a/PokemonGo/RocketAPI/Window/lib/License.txt b/PokemonGo/RocketAPI/Window/lib/License.txt
deleted file mode 100644
index c9dde30..0000000
--- a/PokemonGo/RocketAPI/Window/lib/License.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-
-   *** GMap.NET - Great Maps for Windows Forms & Presentation ***
-
-   GMap.NET is great and Powerful, Free, cross platform, open source
-   .NET control. Enable use routing, geocoding, directions and maps
-   from Coogle, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac,
-   Yandex, Mapy.cz, Maps.lt, iKarte.lv, NearMap, OviMap, CloudMade,
-     WikiMapia in Windows Forms & Presentation, supports caching
-                     and runs on windows mobile!!
-
-
-                    License: The MIT License (MIT)
--------------------------------------------------------------------
-Copyright (c) 2008-2011 Universe, WARNING: This software can access some
-map providers and may viotile their Terms of Service, you use it at your
-own risk, nothing is forcing you to accept this ;} Source itself is legal!
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
--------------------------------------------------------------------
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/packages.config b/PokemonGo/RocketAPI/Window/packages.config
deleted file mode 100644
index 7d8915d..0000000
--- a/PokemonGo/RocketAPI/Window/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="ObjectListView.Official" version="2.9.1" targetFramework="net45" />
-  <package id="S2Geometry" version="1.0.3" targetFramework="net45" />
-</packages>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/pokemonGo.ico b/PokemonGo/RocketAPI/Window/pokemonGo.ico
deleted file mode 100644
index cac4745..0000000
Binary files a/PokemonGo/RocketAPI/Window/pokemonGo.ico and /dev/null differ
diff --git a/PokemonGo/RocketAPI/packages.config b/PokemonGo/RocketAPI/packages.config
deleted file mode 100644
index 87ca41a..0000000
--- a/PokemonGo/RocketAPI/packages.config
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="C5" version="2.2.5073.27396" targetFramework="net45" />
-  <package id="EnterpriseLibrary.TransientFaultHandling" version="6.0.1304.0" targetFramework="net45" />
-  <package id="EnterpriseLibrary.TransientFaultHandling.Data" version="6.0.1304.1" targetFramework="net45" />
-  <package id="Google.Protobuf" version="3.0.0-beta3" targetFramework="net45" />
-  <package id="Google.Protobuf.Tools" version="3.0.0-beta3" targetFramework="net45" />
-  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
-  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
-  <package id="S2Geometry" version="1.0.3" targetFramework="net45" />
-  <package id="VarintBitConverter" version="1.0.0.0" targetFramework="net45" />
-</packages>
\ No newline at end of file
diff --git a/README.md b/README.md
index 234ccc0..34eecfa 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,28 @@
-# Pokemon-Go-Rocket-API
+<!-- define variables -->
+[1.1]: http://i.imgur.com/M4fJ65n.png (ATTENTION)
+[1.2]: https://discordapp.com/api/guilds/208485545439920128/widget.png?style=banner2 (DISCORD)
+
+<!-- title -->
+# RocketBot
+<!-- disclaimer -->
+![alt text][1.1] <strong><em> The contents of this repo are a proof of concept and are for educational use only </em></strong>![alt text][1.1]<br/>
 [![Stories in Ready](https://badge.waffle.io/1461748123/Pokemon-Go-Rocket-API.svg?label=accepted&title=Accepted)](http://waffle.io/1461748123/Pokemon-Go-Rocket-API)
 [![Stories in Ready](https://badge.waffle.io/1461748123/Pokemon-Go-Rocket-API.svg?label=in%20progress&title=In Progress)](http://waffle.io/1461748123/Pokemon-Go-Rocket-API)
 [![Stories in Ready](https://badge.waffle.io/1461748123/Pokemon-Go-Rocket-API.png?label=ready&title=Ready)](https://waffle.io/1461748123/Pokemon-Go-Rocket-API)
-## Official discord channel for user and developer discussions.
-* https://discord.gg/y6EU2qY

-## Window
-![alt tag](https://github.com/1461748123/Pokemon-Go-Rocket-API/blob/master/MainWindow.png)
-![alt tag](https://github.com/1461748123/Pokemon-Go-Rocket-API/blob/master/MainSettings2.png)
+<p align="center">
+  <a href="https://discord.gg/y6EU2qY">
+    <img alt="Logo" src="https://discordapp.com/api/guilds/208485545439920128/widget.png?style=banner2">
+  </a>
+</p>

+## Images
+![alt tag](https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/Images/MainForm.png)
+![alt tag](https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/Images/SettingForm.png)
+![alt tag](https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/Images/SettingForm_2.png)
+![alt tag](https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/Images/SettingForm_3.png)
+![alt tag](https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/Images/SettingForm_4.png)
+![alt tag](https://raw.githubusercontent.com/TheUnnameOrganization/RocketBot/master/Images/SettingForm_5.png)

 A Pokémon Go bot in C#

@@ -51,18 +65,18 @@ Click Start Bot and enjoy!
 ## For users:
 You can contribute in many ways, here are some that you can do to help the project out!
 ### Join discord channel and help answer questions
-We have more and more users everyday, so we have alot of questions form new users who haven't fully understand how the bot works yet. If you want to help them out, join our official discord channel :)
+We have more and more users everyday, so we have a lot of questions from new users who haven't fully understand how the bot works yet. If you want to help them out, join our official discord channel :)
 ### Answer questions in [issues](https://github.com/1461748123/Pokemon-Go-Rocket-API/issues)
 Same as above, you can help by answering questions in the [issues](https://github.com/1461748123/Pokemon-Go-Rocket-API/issues) tab!
 ### Report bugs
 Report bugs you found in [issues](https://github.com/1461748123/Pokemon-Go-Rocket-API/issues).
-In order to help us fix the problem, please take a screenshot of the error you get and also attatch your log file (under the Logs folder) as well. Add [Bug] to the title to help us quickly identify the category of the issue.
+In order to help us fix the problem, please take a screenshot of the error you get and also attach your log file (under the Logs folder) as well. Add [Bug] to the title to help us quickly identify the category of the issue.
 ### Suggestions/ideas
 Tell us what you think we can do better in [issues](https://github.com/1461748123/Pokemon-Go-Rocket-API/issues).
 Give detailed discription to help us understand what you are looking for. Add [Suggestion] to the title to help us quickly identify the category of the issue. Your suggestion might not be accept, but hey, maybe we will accept your suggestion next time! :)
 ## For developers:
 You can contribute to the project by helping us on coding.
-Fork this project and creat a new branch to add your code or fix a know issue.
+Fork this project and create a new branch to add your code or fix a known issue.
 Use pull request to submit your code. Remember, submit to *Beta-Build* branch! :D
 ## Donations
 We are not accepting donations currently :) If you really wanna contribute, consider doing the stuff above! :D
diff --git a/RocketBot.sln b/RocketBot.sln
new file mode 100644
index 0000000..fa6e685
--- /dev/null
+++ b/RocketBot.sln
@@ -0,0 +1,106 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PokemonGo.RocketBot.Logic", "PokemonGo.RocketBot.Logic\PokemonGo.RocketBot.Logic.csproj", "{0739E40D-C589-4AEB-93E5-EE8CD6773C60}"
+	ProjectSection(ProjectDependencies) = postProject
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095} = {05D2DA44-1B8E-4CF7-94ED-4D52451CD095}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PokemonGo.RocketBot.Window", "PokemonGo.RocketBot.Window\PokemonGo.RocketBot.Window.csproj", "{1FEA147E-F704-497B-A538-00B053B5F672}"
+	ProjectSection(ProjectDependencies) = postProject
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095} = {05D2DA44-1B8E-4CF7-94ED-4D52451CD095}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PokemonGo.RocketAPI", "PokemonGo.RocketAPI\PokemonGo.RocketAPI.csproj", "{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB} = {A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "POGOProtos", "POGOProtos\POGOProtos.csproj", "{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x86 = Release|x86
+		v4.0-Debug|Any CPU = v4.0-Debug|Any CPU
+		v4.0-Debug|x86 = v4.0-Debug|x86
+		v4.0-Release|Any CPU = v4.0-Release|Any CPU
+		v4.0-Release|x86 = v4.0-Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Debug|x86.ActiveCfg = Debug|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Debug|x86.Build.0 = Debug|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Release|x86.ActiveCfg = Release|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.Release|x86.Build.0 = Release|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Debug|x86.ActiveCfg = Debug|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Debug|x86.Build.0 = Debug|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Release|Any CPU.Build.0 = Release|Any CPU
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Release|x86.ActiveCfg = Release|x86
+		{0739E40D-C589-4AEB-93E5-EE8CD6773C60}.v4.0-Release|x86.Build.0 = Release|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Debug|x86.ActiveCfg = Debug|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Debug|x86.Build.0 = Debug|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Release|x86.ActiveCfg = Release|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.Release|x86.Build.0 = Release|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Debug|x86.ActiveCfg = Debug|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Debug|x86.Build.0 = Debug|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Release|Any CPU.Build.0 = Release|Any CPU
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Release|x86.ActiveCfg = Release|x86
+		{1FEA147E-F704-497B-A538-00B053B5F672}.v4.0-Release|x86.Build.0 = Release|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Debug|x86.ActiveCfg = Debug|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Debug|x86.Build.0 = Debug|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Release|Any CPU.Build.0 = Release|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Release|x86.ActiveCfg = Release|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.Release|x86.Build.0 = Release|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Debug|Any CPU.Build.0 = Debug|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Debug|x86.ActiveCfg = Debug|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Debug|x86.Build.0 = Debug|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Release|Any CPU.ActiveCfg = Release|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Release|Any CPU.Build.0 = Release|Any CPU
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Release|x86.ActiveCfg = Release|x86
+		{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}.v4.0-Release|x86.Build.0 = Release|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Debug|x86.ActiveCfg = Debug|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Debug|x86.Build.0 = Debug|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Release|x86.ActiveCfg = Release|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.Release|x86.Build.0 = Release|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Debug|x86.ActiveCfg = Debug|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Debug|x86.Build.0 = Debug|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Release|Any CPU.Build.0 = Release|Any CPU
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Release|x86.ActiveCfg = Release|x86
+		{A03A7BB2-4F0B-467B-84B2-9A76E6AAE6FB}.v4.0-Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		EnterpriseLibraryConfigurationToolBinariesPathV6 = packages\EnterpriseLibrary.TransientFaultHandling.6.0.1304.0\lib\portable-net45+win+wp8;packages\EnterpriseLibrary.TransientFaultHandling.Data.6.0.1304.1\lib\NET45
+	EndGlobalSection
+EndGlobal
You may download the files in Public Git.