Furtif/POGOProtos

View on GitHub
base/v0.173.x.proto

Summary

Maintainability
Test Coverage
/*
* Copyright 2020 --=FurtiF=-- Co., Ltd.
*
* Licensed under the
*    Educational Community License, Version 2.0 (the "License"); you may
*    not use this file except in compliance with the License. You may
*    obtain a copy of the License at
*
*    http://www.osedu.org/licenses/ECL-2.0
*
*    Unless required by applicable law or agreed to in writing,
*    software distributed under the License is distributed on an "AS IS"
*    BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
*    or implied. See the License for the specific language governing
*    permissions and limitations under the License.
*/

syntax = "proto3";
package DumpProtos;

//----- Begin ar -----

// ref: Niantic.Holoholo.AR.ArMode
enum ArMode {
    NONE = 0;
    ARSTANDARD = 1;
    ARPLUS = 2;
}

// ref: Niantic.Holoholo.AR.ArToggleContext
enum ArToggleContext {
    ENCOUNTER = 0;
}

//----- End ar -----
//------------------------------
//----- Begin assetbundles -----

// ref: Niantic.Holoholo.AssetBundles.AssetBundleStatus
enum AssetBundleStatus {
    UNLOADED = 0;
    LOADING = 1;
    LOADED = 2;
    FAILED = 3;
}

//----- End assetbundles -----
//------------------------------
//----- Begin assetcache -----

// ref: Niantic.Ingress.Core.AssetCache.HashedKeyProto
message HashedKeyProto {
    string hashed_key_raw = 1;
}

// ref: Niantic.Ingress.Core.AssetCache.JournalAddEntryProto
message JournalAddEntryProto {
    HashedKeyProto hashed_key = 1;
    int64 entry_size = 2;
}

// ref: Niantic.Ingress.Core.AssetCache.JournalEntryProto
message JournalEntryProto {
    // ref: Niantic.Ingress.Core.AssetCache.JournalEntryProto/SubentryOneofCase
    //oneof Subentry {
        //none = 0;
        //add_entry = 1;
        //read_entry = 2;
        //remove_entry = 3;
    //}

    JournalAddEntryProto add_entry = 1;
    JournalReadEntryProto read_entry = 2;
    JournalRemoveEntryProto remove_entry = 3;
}

// ref: Niantic.Ingress.Core.AssetCache.JournalReadEntryProto
message JournalReadEntryProto {
    HashedKeyProto hashed_key = 1;
}

// ref: Niantic.Ingress.Core.AssetCache.JournalRemoveEntryProto
message JournalRemoveEntryProto {
    HashedKeyProto hashed_key = 1;
}

// ref: Niantic.Ingress.Core.AssetCache.JournalVersionProto
message JournalVersionProto {
    int32 version = 1;
}

//----- End assetcache -----
//------------------------------
//----- Begin auth -----

// ref: Com.Nianticproject.Platform.Auth.IdentityProvider
enum IdentityProvider {
    UNSET_IDENTITY_PROVIDER = 0;
    GOOGLE = 1;
    PTC = 2;
    FACEBOOK = 3;
    BACKGROUND = 4;
    INTERNAL = 5;
    SFIDA = 6;
    SUPER_AWESOME = 7;
    DEVELOPER = 8;
    SHARED_SECRET = 9;
    POSEIDON = 10;
    NINTENDO = 11;
    APPLE = 12;
}

// ref: Com.Nianticproject.Platform.Auth.BackgroundToken
message BackgroundToken {
    bytes token = 1;
    int64 expiration_time = 2;
    bytes iv = 3;
}

// ref: Com.Nianticproject.Platform.Auth.RegisterBackgroundDeviceActionProto
message RegisterBackgroundDeviceActionProto {
    string device_type = 1;
    string device_id = 2;
}

// ref: Com.Nianticproject.Platform.Auth.RegisterBackgroundDeviceResponseProto
message RegisterBackgroundDeviceResponseProto {
    // ref: Com.Nianticproject.Platform.Auth.RegisterBackgroundDeviceResponseProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR = 2;
    }

    BackgroundToken token = 1;
}

//----- End auth -----
//------------------------------
//----- Begin avatar -----

// ref: Niantic.Holoholo.Avatar.AvatarCompletion
enum AvatarCompletion {
    SUCCESS = 0;
    QUIT = 1;
}

//----- End avatar -----
//------------------------------
//----- Begin battle -----

// ref: Niantic.Holoholo.Battle.BattlePartiesProto
message BattlePartiesProto {
    repeated BattlePartyProto battle_parties = 1;
}

// ref: Niantic.Holoholo.Battle.BattlePartyProto
message BattlePartyProto {
    string name = 1;
    int32 team_number = 2;
    repeated fixed64 ids = 3;
    string combat_league_id = 4;
}

//----- End battle -----
//------------------------------
//----- Begin bgmode -----

// ref: Niantic.Platform.Bgmode.BackgroundModeClientSettingsProto
message BackgroundModeClientSettingsProto {
    int64 maximum_sample_age_ms = 1;
    bool accept_manual_fitness_samples = 2;
    double minimum_location_accuracy_meters = 3;
    int32 background_wake_up_interval_minutes = 4;
    int32 max_upload_size_in_bytes = 5;
    double min_enclosing_geofence_radius_m = 6;
    int64 background_token_refresh_interval_s = 7;
}

//----- End bgmode -----
//------------------------------
//----- Begin clientinboxservice -----

// ref: Niantic.Holoholo.Services.ClientInboxService.NotificationCategory
enum NotificationCategory {
    NONE = 0;
    GYM_REMOVAL = 1;
    POKEMON_HUNGRY = 2;
    EXCLUSIVE_RAID_INVITE = 3;
    EXCLUSIVE_RAID_CANCELLATION = 4;
    SHARED_EXCLUSIVE_RAID_INVITE = 5;
    GIFTBOX_INCOMING = 6;
    GIFTBOX_DELIVERED = 7;
    FRIENDSHIP_MILESTONE_REWARD = 8;
    GYM_BATTLE_FRIENDSHIP_INCREMENT = 9;
    BGMODE_EGG_HATCH = 10;
    BGMODE_BUDDY_CANDY = 11;
    BGMODE_WEEKLY_FITNESS_REPORT = 12;
    BGMODE_OFF_SESSION_DISTANCE = 13;
    BGMODE_POI_PROXIMITY = 14;
    BGMODE_NAMED_BUDDY_CANDY = 15;
    APP_BADGE_ONLY = 16;
    COMBAT_CHALLENGE_OPENED = 17;
    LUCKY_FRIEND = 18;
    BUDDY_HUNGRY = 19;
    BUDDY_FOUND_GIFT = 20;
    BUDDY_AFFECTION_LEVEL_MILESTONE = 21;
    BUDDY_AFFECTION_WALKING = 22;
    BUDDY_AFFECTION_CARE = 23;
    BUDDY_AFFECTION_BATTLE = 24;
    BUDDY_AFFECTION_PHOTO = 25;
    BUDDY_AFFECTION_POI = 26;
    BUDDY_ATTRACTIVE_POI = 27;
    FRIEND_INVITE_RECEIVED = 28;
    FRIEND_INVITE_ACCEPTED = 29;
    COMBAT_VS_SEEKER_CHARGED = 30;
    COMBAT_COMPETITIVE_SEASON_END = 31;
    BUDDY_AFFECTION_ATTRACTIVE_POI = 32;
    POI_PASSCODE_REDEEMED = 33;
    NO_EGGS_INCUBATING = 34;
    RETENTION_UNOPENED_GIFTS = 39;
    RETENTION_STARPIECE = 40;
    RETENTION_INCENSE = 41;
    RETENTION_LUCKY_EGG = 42;
    RETENTION_ADVSYNC_REWARDS = 43;
    RETENTION_EGGS_NOT_INCUBATING = 44;
    RETENTION_POWER_WALK = 45;
    RETENTION_FUN_WITH_FRIENDS = 46;
    BUDDY_REMOTE_GIFT = 47;
    BGMODE_BUDDY_REMOTE_GIFT = 48;
}

//----- End clientinboxservice -----
//------------------------------
//----- Begin developertoken -----

// ref: Niantic.Platform.Auth.Plugins.DeveloperToken.DeveloperToken
message DeveloperToken {
    string id_token = 1;
    string owner_email = 2;
}

//----- End developertoken -----
//------------------------------
//----- Begin gamemaster -----

// ref: Niantic.Platform.GameMaster.ClientGameMasterTemplateProto
message ClientGameMasterTemplateProto {
    string template_id = 1;
    bytes data = 2;
}

// ref: Niantic.Platform.GameMaster.DownloadGmTemplatesRequestProto
message DownloadGmTemplatesRequestProto {
    int64 basis_batch_id = 1;
    int64 batch_id = 2;
    int32 page_offset = 3;
    bool apply_experiments = 4;
    repeated int32 basis_experiment_id = 5;
    repeated int32 experiment_id = 6;
}

// ref: Niantic.Platform.GameMaster.DownloadGmTemplatesResponseProto
message DownloadGmTemplatesResponseProto {
    // ref: Niantic.Platform.GameMaster.DownloadGmTemplatesResponseProto/Types/Result
    enum Result {
        UNSET = 0;
        COMPLETE = 1;
        MORE_RESULTS = 2;
        BATCH_ID_NOT_LIVE = 3;
        INVALID_BASIS_BATCH_ID = 4;
        WRONG_EXPERIMENTS = 5;
    }

    Result result = 1;
    repeated ClientGameMasterTemplateProto template = 2;
    repeated string deleted_template = 3;
    uint64 batch_id = 4;
    int32 page_offset = 5;
    repeated int32 experiment_id = 6;
}

//----- End gamemaster -----
//------------------------------
//----- Begin gym -----

// ref: Niantic.Holoholo.Gym.BattleResultsExit
enum BattleResultsExit {
    LEAVE_GYM = 0;
    LEAVE_BATTLE = 1;
    CONTINUE_BATTLE = 2;
}

//----- End gym -----
//------------------------------
//----- Begin holoholo -----

// ref: Niantic.Holoholo.CalendarAddResult
enum CalendarAddResult {
    UNKNOWN = 0;
    PERMISSION_DENIED = -2;
    NOT_ADDED = -1;
    ADDED = 1;
}

// ref: Niantic.Holoholo.PlayerOnboardingPath
enum PlayerOnboardingPath {
    UNSET = 0;
    V1 = 1;
    V2 = 2;
}

// ref: Niantic.Holoholo.PokedexGenerationId
enum PokedexGenerationId {
    GEN1 = 0;
    GEN2 = 1;
    GEN3 = 2;
    GEN4 = 3;
    GEN5 = 4;
    GEN6 = 5;
    GEN7 = 6;
    GEN8 = 7;
    MELTAN = 1001;
}

//----- End holoholo -----
//------------------------------
//----- Begin incident -----

// ref: Niantic.Holoholo.Incident.IncidentDynamicStringTypes
enum IncidentDynamicStringTypes {
    GREETING = 0;
    CHALLENGE = 1;
    DEFEAT = 2;
    VICTORY = 3;
    PRE_BATTLE = 4;
    POST_BATTLE = 5;
    ITEMS_STOLEN = 6;
    TUTORIAL = 7;
    COMBAT_QUOTE = 8;
    CANDELA_INSPIRE = 9;
    BLANCHE_INSPIRE = 10;
    SPARK_INSPIRE = 11;
    GRUNT_DECOY = 12;
    COMBAT_DECOY_QUOTE = 13;
}

// ref: Niantic.Holoholo.Incident.IncidentLeaderStringTypes
enum IncidentLeaderStringTypes {
    ONBOARDING_INTRODUCTION = 0;
    ONBOARDING_ENCOUNTER = 1;
    ONBOARDING_SHADOW = 2;
    ONBOARDING_MAP_FRAGMENT = 3;
    ONBOARDING_MAP_1 = 4;
    ONBOARDING_MAP_2 = 5;
    INSPIRE = 6;
    MAP_TIME_WARNING = 7;
    MAP_EMPTY_WARNING = 8;
}

//----- End incident -----
//------------------------------
//----- Begin internal -----

// ref: Niantic.Platform.Auth.Plugins.Internal.InternalAuthProto
message InternalAuthProto {
    string email = 1;
    string player_id = 2;
    string app_id = 3;
    string key = 4;
}

//----- End internal -----
//------------------------------
//----- Begin inventory -----

// ref: Niantic.Platform.Inventory.GetInventoryProto
message GetInventoryProto {
    int64 timestamp_millis = 1;
}

// ref: Niantic.Platform.Inventory.GetInventoryResponseProto
message GetInventoryResponseProto {
    bool success = 1;
    InventoryDeltaProto inventory_delta = 2;
}

// ref: Niantic.Platform.Inventory.InventoryDeltaProto
message InventoryDeltaProto {
    int64 original_timestamp = 1;
    int64 new_timestamp = 2;
    repeated InventoryItemProto inventory_item = 3;
}

// ref: Niantic.Platform.Inventory.InventoryItemProto
message InventoryItemProto {
    // ref: Niantic.Platform.Inventory.InventoryItemProto/InventoryItemOneofCase
    //oneof InventoryItem {
        //none = 0;
        //deleted_item_key = 2;
        //item = 3;
    //}

    int64 modified_timestamp = 1;
    bytes deleted_item_key = 2;
    bytes item = 3;
}

// ref: Niantic.Platform.Inventory.InventoryProto
message InventoryProto {
    repeated InventoryItemProto inventory_item = 1;
}

//----- End inventory -----
//------------------------------
//----- Begin items -----

// ref: Niantic.Holoholo.Items.IncubationResult
enum IncubationResult {
    SUCCESS = 0;
    FAILURE = 1;
}

//----- End items -----
//------------------------------
//----- Begin platform -----

// ref: Com.Nianticproject.Platform.ProxyRequestProto
message ProxyRequestProto {
    uint32 action = 1;
    string host = 2;
    bytes payload = 3;
}

// ref: Com.Nianticproject.Platform.ProxyResponseProto
message ProxyResponseProto {
    // ref: Com.Nianticproject.Platform.ProxyResponseProto/Types/Status
    enum Status {
        UNSET = 0;
        COMPLETED = 1;
        COMPLETED_AND_REASSIGNED = 2;
        ACTION_NOT_FOUND = 3;
        ASSIGNMENT_ERROR = 4;
        PROXY_UNAUTHORIZED_ERROR = 5;
        INTERNAL_ERROR = 6;
        BAD_REQUEST = 7;
        ACCESS_DENIED = 8;
        TIMEOUT_ERROR = 9;
        RATE_LIMITED = 10;
    }

    Status status = 1;
    string assigned_host = 2;
    bytes payload = 3;
}

//----- End platform -----
//------------------------------
//----- Begin poidecoration -----

// ref: Niantic.Holoholo.PoiDecoration.POIDecorationFollowFlags
enum POIDecorationFollowFlags {
    POIDECORATIONFOLLOWFLAGS_AUTO_INVALID = 0;
    FOLLOW_X = 1;
    FOLLOW_Y = 2;
    FOLLOW_Z = 4;
}

// ref: Niantic.Holoholo.PoiDecoration.POIDecorationProperties
enum POIDecorationProperties {
    COLOR = 0;
    POSITION = 1;
    SIZE = 2;
    TEXT = 3;
    ACTIVE = 4;
    ICON = 5;
    SET_RAID_DATA = 6;
    NEARBY_CARROT_VISIBLE = 7;
    SET_LOWEST_MOTIVATION = 8;
    SET_NPC_CLICKED_ACTION = 9;
    BEGIN_EXIT = 10;
}

//----- End poidecoration -----
//------------------------------
//----- Begin poisubmission -----

// ref: Niantic.Holoholo.PoiSubmission.PoiSubmissionTutorialPage
enum PoiSubmissionTutorialPage {
    WHAT_IS_POKESTOP = 0;
    SUBMIT_FOR_REVIEW = 1;
    HOW_TO_CHOOSE_A_LOCATION = 2;
    DESCRIBE_A_LOCATION = 3;
}

//----- End poisubmission -----
//------------------------------
//----- Begin pokemongoplus -----

// ref: PokemonGoPlus.CentralState
enum CentralState {
    UNKNOWN = 0;
    RESETTING = 1;
    UNSUPPORTED = 2;
    UNAUTHORIZED = 3;
    POWERED_OFF = 4;
    POWERED_ON = 5;
}

// ref: PokemonGoPlus.DeviceKind
enum DeviceKind {
    POKEMON_GO_PLUS = 0;
    POKE_BALL_PLUS = 1;
}

// ref: PokemonGoPlus.NotificationType
enum NotificationType {
    NO_NOTIFICATIONS = 0;
    POKEMON_NOTIFICATIONS = 1;
    POKESTOP_NOTIFICATIONS = 2;
    ALL_NOTIFICATIONS = 3;
}

// ref: PokemonGoPlus.PluginState
enum PluginState {
    UNKNOWN = 0;
    INITIALIZED = 1;
    STARTING = 2;
    STARTED = 3;
    RESUMED = 4;
    PAUSED = 5;
    STOPPED = 6;
}

// ref: PokemonGoPlus.SfidaConnectState
enum SfidaConnectState {
    DISCONNECTED = 0;
    DISCONNECTING = 1;
    CONNECTED = 2;
    DISCOVERED = 3;
    CERTIFIED = 4;
    SOFTWARE_UPDATE = 5;
    FAILED = 6;
    CONNECTING = 7;
}

//----- End pokemongoplus -----
//------------------------------
//----- Begin proto -----

// ref: ClientOperatingSystem
enum ClientOperatingSystem {
    OS_UNKNOWN = 0;
    OS_ANDROID = 1;
    OS_IOS = 2;
    OS_DESKTOP = 3;
}

// ref: PlatformWarningType
enum PlatformWarningType {
    PLATFORM_WARNING_UNSET = 0;
    PLATFORM_WARNING_STRIKE1 = 1;
    PLATFORM_WARNING_STRIKE2 = 2;
    PLATFORM_WARNING_STRIKE3 = 3;
}

// ref: PokemonAnim
enum PokemonAnim {
    NONE = 0;
    IDLE_01 = 1;
    IDLE_02 = 2;
    LAND = 3;
    ATTACK_01 = 4;
    ATTACK_02 = 5;
    DAMAGED = 6;
    STUNNED = 7;
    LOOP = 8;
    SLEEP_01 = 9;
    SLEEP_02 = 10;
    SLEEP_WAIT = 11;
}

// ref: UpdateType
enum UpdateType {
    ADD = 0;
    MODIFY = 1;
    REMOVE = 2;
    PREDICTED_MODIFY = 3;
    PREDICTED_REMOVE = 4;
    ROLLED_BACK_MODIFY = 5;
    ROLLED_BACK_REMOVE = 6;
}

// ref: VfxLevel
enum VfxLevel {
    NONE = 0;
    START = 1;
    NICE = 2;
    GREAT = 3;
    EXCELLENT = 4;
}

// ref: AcknowledgeWarningsRequestProto
message AcknowledgeWarningsRequestProto {
    repeated PlatformWarningType warning = 1;
}

// ref: AcknowledgeWarningsResponseProto
message AcknowledgeWarningsResponseProto {
    bool success = 1;
}

// ref: AdventureSyncSettingsProto
message AdventureSyncSettingsProto {
    bool fitness_service_enabled = 1;
    bool awareness_service_enabled = 2;
}

// ref: FitnessMetricsProto
message FitnessMetricsProto {
    double distance_walked_meters = 1;
    int32 step_count = 2;
    double calories_burned_kcals = 3;
    int64 exercise_duration_mi = 4;
    double wheelchair_distance_meters = 5;
    double wheelchair_push_count = 6;
}

// ref: FitnessReportProto
message FitnessReportProto {
    // ref: FitnessReportProto/WindowOneofCase
    //oneof Window {
        //none = 0;
        //day_offset_from_now = 1;
        //week_offset_from_now = 2;
    //}

    int32 day_offset_from_now = 1;
    int32 week_offset_from_now = 2;
    FitnessMetricsProto metrics = 10;
    bytes game_data = 11;
}

// ref: GeofenceMetadata
message GeofenceMetadata {
    double latitude_deg = 1;
    double longitude_deg = 2;
    double radius = 3;
    string identifier = 4;
    int64 expiration_ms = 5;
    int64 dwell_time_ms = 6;
    bool fire_on_entrance = 7;
    bool fire_on_exit = 8;
}

// ref: GeofenceUpdateOutProto
message GeofenceUpdateOutProto {
    repeated GeofenceMetadata geofence = 1;
}

// ref: GeofenceUpdateProto
message GeofenceUpdateProto {
    int32 number_of_points = 1;
    double minimum_point_radius_m = 2;
}

// ref: GetAdventureSyncSettingsRequestProto
message GetAdventureSyncSettingsRequestProto {
}

// ref: GetAdventureSyncSettingsResponseProto
message GetAdventureSyncSettingsResponseProto {
    // ref: GetAdventureSyncSettingsResponseProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_NOT_FOUND = 3;
    }

    AdventureSyncSettingsProto adventure_sync_settings = 1;
}

// ref: GetBackgroundModeSettingsOutProto
message GetBackgroundModeSettingsOutProto {
    // ref: GetBackgroundModeSettingsOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Status status = 1;
    BackgroundModeClientSettingsProto settings = 2;
}

// ref: GetBackgroundModeSettingsProto
message GetBackgroundModeSettingsProto {
}

// ref: GetFitnessReportOutProto
message GetFitnessReportOutProto {
    // ref: GetFitnessReportOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_NOT_FOUND = 2;
        ERROR_RECORDS_NOT_FOUND = 3;
        ERROR_INVALID_WINDOW = 4;
        ERROR_UNKNOWN = 5;
    }

    repeated FitnessReportProto daily_reports = 1;
    repeated FitnessReportProto weekly_reports = 2;
    int64 week_reset_timestamp_since_monday_ms = 3;
}

// ref: GetFitnessReportProto
message GetFitnessReportProto {
    int32 num_of_days = 1;
    int32 num_of_weeks = 2;
}

// ref: GetOutstandingWarningsRequestProto
message GetOutstandingWarningsRequestProto {
}

// ref: GetOutstandingWarningsResponseProto
message GetOutstandingWarningsResponseProto {
    // ref: GetOutstandingWarningsResponseProto/Types/WarningInfo
    message WarningInfo {
        PlatformWarningType type = 1;
    }

    repeated WarningInfo outstanding_warning = 1;
}

// ref: LocationPingOutProto
message LocationPingOutProto {
}

// ref: LocationPingProto
message LocationPingProto {
    // ref: LocationPingProto/Types/PingReason
    enum PingReason {
        UNSET = 0;
        ENTRANCE_EVENT = 1;
        EXIT_EVENT = 2;
        DWELL_EVENT = 3;
        VISIT_EVENT = 4;
        FITNESS_WAKEUP = 5;
        OTHER_WAKEUP = 6;
    }

    string geofence_identifier = 1;
    PingReason reason = 2;
}

// ref: PlatformClientApiSettingsProto
message PlatformClientApiSettingsProto {
    // ref: PlatformClientApiSettingsProto/Types/SettingsType
    enum SettingsType {
        UNDEFINED = 0;
        MAP = 1;
    }

    bytes payload = 1;
}

// ref: RedeemPasscodeRequestProto
message RedeemPasscodeRequestProto {
    string passcode = 1;
}

// ref: RedeemPasscodeResponseProto
message RedeemPasscodeResponseProto {
    // ref: RedeemPasscodeResponseProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        NOT_AVAILABLE = 2;
        OVER_INVENTORY_LIMIT = 3;
        ALREADY_REDEEMED = 4;
        OVER_PLAYER_REDEMPTION_LIMIT = 5;
    }

    // ref: RedeemPasscodeResponseProto/Types/AcquiredItem
    message AcquiredItem {
        string item = 1;
        int64 count = 2;
    }

    Result result = 1;
    repeated AcquiredItem acquired_item = 2;
    bytes acquired_items_proto = 3;
    string passcode = 4;
}

// ref: SetInGameCurrencyExchangeRateOutProto
message SetInGameCurrencyExchangeRateOutProto {
    // ref: SetInGameCurrencyExchangeRateOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    Status status = 1;
}

// ref: SetInGameCurrencyExchangeRateProto
message SetInGameCurrencyExchangeRateProto {
    string in_game_currency = 1;
    string fiat_currency = 2;
    int64 fiat_currency_cost_e6_per_in_game_unit = 3;
}

// ref: SetInGameCurrencyExchangeRateTrackingProto
message SetInGameCurrencyExchangeRateTrackingProto {
    string in_game_currency = 1;
    string fiat_currency = 2;
    int64 fiat_currency_cost_e6_per_in_game_unit = 3;
    string status = 4;
}

// ref: SfidaAuthToken
message SfidaAuthToken {
    bytes response_token = 1;
    string sfida_id = 2;
}

// ref: SfidaCaptureRequest
message SfidaCaptureRequest {
    string spawnpoint_id = 1;
    int64 encounter_id = 2;
    double player_lat = 3;
    double player_lng = 4;
    EncounterType encounter_type = 5;
    double gym_lat = 6;
    double gym_lng = 7;
}

// ref: SfidaCaptureResponse
message SfidaCaptureResponse {
    // ref: SfidaCaptureResponse/Types/Result
    enum Result {
        UNSET = 0;
        POKEMON_CAPTURED = 1;
        POKEMON_FLED = 2;
        NOT_FOUND = 3;
        NO_MORE_POKEBALLS = 4;
        POKEMON_INVENTORY_FULL = 5;
        NOT_IN_RANGE = 6;
        ENCOUNTER_ALREADY_FINISHED = 7;
    }

    Result result = 1;
    int32 xp_gain = 2;
}

// ref: SfidaCertificationRequest
message SfidaCertificationRequest {
    // ref: SfidaCertificationRequest/Types/SfidaCertificationStage
    enum SfidaCertificationStage {
        UNSET = 0;
        STAGE1 = 1;
        STAGE2 = 2;
        STAGE3 = 3;
    }

    SfidaCertificationStage stage = 1;
    bytes payload = 2;
}

// ref: SfidaCertificationResponse
message SfidaCertificationResponse {
    bytes payload = 1;
}

// ref: SfidaDowserRequest
message SfidaDowserRequest {
    int64 encounter_id = 1;
}

// ref: SfidaDowserResponse
message SfidaDowserResponse {
    // ref: SfidaDowserResponse/Types/Result
    enum Result {
        UNSET = 0;
        FOUND = 1;
        NEARBY = 2;
        OUT_OF_RANGE = 3;
        ALREADY_CAUGHT = 4;
        NOT_AVAILABLE = 5;
    }

    Result result = 1;
    int32 proximity = 2;
    string spawnpoint_id = 3;
}

// ref: SfidaMetrics
message SfidaMetrics {
    double distance_walked_km = 1;
    int32 step_count = 2;
    double calories_burned = 3;
    int64 exercise_time_ms = 4;
}

// ref: SfidaMetricsUpdate
message SfidaMetricsUpdate {
    // ref: SfidaMetricsUpdate/Types/UpdateType
    enum UpdateType {
        UNSET = 0;
        INITIALIZATION = 1;
        ACCUMULATION = 2;
    }

    UpdateType update_type = 1;
    int64 timestamp_ms = 2;
    SfidaMetrics metrics = 3;
}

// ref: SfidaUpdateRequest
message SfidaUpdateRequest {
    double player_lat = 1;
    double player_lng = 2;
}

// ref: SfidaUpdateResponse
message SfidaUpdateResponse {
    // ref: SfidaUpdateResponse/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
    }

    Status status = 1;
    bool nearby_pokemon = 2;
    bool uncaught_pokemon = 3;
    bool legendary_pokemon = 4;
    string spawnpoint_id = 5;
    int64 encounter_id = 6;
    bool nearby_pokestop = 7;
    string pokestop_id = 8;
    EncounterType encounter_type = 9;
    int32 pokedex_number = 10;
}

// ref: SkuContentProto
message SkuContentProto {
    string item_type = 1;
    int32 quantity = 2;
}

// ref: SkuDataProto
message SkuDataProto {
    // ref: SkuDataProto/Types/SkuPaymentType
    enum SkuPaymentType {
        UNSET = 0;
        THIRD_PARTY = 1;
        IN_GAME = 2;
    }

    string id = 1;
    bool is_enabled = 2;
    repeated SkuContentProto content = 3;
    repeated SkuPriceProto price = 4;
    SkuPaymentType payment_type = 5;
    int64 last_modified_timestamp_ms = 6;
    repeated SkuPresentationDataProto presentation_data = 7;
    int64 enabled_window_start_ms = 8;
    int64 enabled_window_end_ms = 9;
}

// ref: SkuPresentationDataProto
message SkuPresentationDataProto {
    string key = 1;
    string value = 2;
}

// ref: SkuPriceProto
message SkuPriceProto {
    string currency_type = 1;
    int32 price = 2;
}

// ref: UpdateAdventureSyncFitnessResponseProto
message UpdateAdventureSyncFitnessResponseProto {
    // ref: UpdateAdventureSyncFitnessResponseProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

}

// ref: UpdateAdventureSyncSettingsRequestProto
message UpdateAdventureSyncSettingsRequestProto {
    AdventureSyncSettingsProto adventure_sync_settings = 1;
}

// ref: WeatherAlertSettingsProto
message WeatherAlertSettingsProto {
    // ref: WeatherAlertSettingsProto/Types/AlertEnforceSettings
    message AlertEnforceSettings {
        // ref: WeatherAlertSettingsProto/Types/AlertEnforceSettings/Types/EnforceCondition
        message EnforceCondition {
            repeated string color = 1;
            repeated string type = 2;
            repeated string category = 3;
        }

        string country_code = 1;
        EnforceCondition when = 2;
    }

    // ref: WeatherAlertSettingsProto/Types/AlertIgnoreSettings
    message AlertIgnoreSettings {
        // ref: WeatherAlertSettingsProto/Types/AlertIgnoreSettings/Types/OverrideCondition
        message OverrideCondition {
            repeated string color = 1;
            repeated string type = 2;
        }

        string country_code = 1;
        OverrideCondition when = 2;
    }

    // ref: WeatherAlertSettingsProto/Types/AlertEnforceSettings/Types/EnforceCondition
    message EnforceCondition {
        repeated string color = 1;
        repeated string type = 2;
        repeated string category = 3;
    }

    // ref: WeatherAlertSettingsProto/Types/AlertIgnoreSettings/Types/OverrideCondition
    message OverrideCondition {
        repeated string color = 1;
        repeated string type = 2;
    }

    bool warn_weather = 1;
    WeatherAlertProto.Severity default_severity = 2;
    repeated AlertIgnoreSettings ignores = 3;
    repeated AlertEnforceSettings enforces = 4;
}

// ref: WeatherSettingsProto
message WeatherSettingsProto {
    // ref: WeatherSettingsProto/Types/GameplayWeatherSettingsProto/Types/ConditionMapSettings
    message ConditionMapSettings {
        GameplayWeatherProto.WeatherCondition gameplay_condition = 1;
        repeated string provider_enums = 2;
    }

    // ref: WeatherSettingsProto/Types/DisplayWeatherSettingsProto/Types/DisplayLevelSettings
    message DisplayLevelSettings {
        repeated string condition_enums = 1;
        DisplayWeatherProto.DisplayLevel cloud_level = 2;
        DisplayWeatherProto.DisplayLevel rain_level = 3;
        DisplayWeatherProto.DisplayLevel snow_level = 4;
        DisplayWeatherProto.DisplayLevel fog_level = 5;
        DisplayWeatherProto.DisplayLevel special_effect_level = 6;
    }

    // ref: WeatherSettingsProto/Types/DisplayWeatherSettingsProto
    message DisplayWeatherSettingsProto {
        // ref: WeatherSettingsProto/Types/DisplayWeatherSettingsProto/Types/DisplayLevelSettings
        message DisplayLevelSettings {
            repeated string condition_enums = 1;
            DisplayWeatherProto.DisplayLevel cloud_level = 2;
            DisplayWeatherProto.DisplayLevel rain_level = 3;
            DisplayWeatherProto.DisplayLevel snow_level = 4;
            DisplayWeatherProto.DisplayLevel fog_level = 5;
            DisplayWeatherProto.DisplayLevel special_effect_level = 6;
        }

        // ref: WeatherSettingsProto/Types/DisplayWeatherSettingsProto/Types/WindLevelSettings
        message WindLevelSettings {
            int32 wind_level1_speed = 1;
            int32 wind_level2_speed = 2;
            int32 wind_level3_speed = 3;
        }

        repeated DisplayLevelSettings display_level_settings = 1;
        WindLevelSettings wind_level_settings = 2;
    }

    // ref: WeatherSettingsProto/Types/GameplayWeatherSettingsProto
    message GameplayWeatherSettingsProto {
        // ref: WeatherSettingsProto/Types/GameplayWeatherSettingsProto/Types/ConditionMapSettings
        message ConditionMapSettings {
            GameplayWeatherProto.WeatherCondition gameplay_condition = 1;
            repeated string provider_enums = 2;
        }

        repeated ConditionMapSettings condition_map = 1;
        int32 min_speed_for_windy = 2;
        repeated string conditions_for_windy = 3;
    }

    // ref: WeatherSettingsProto/Types/StaleWeatherSettingsProto
    message StaleWeatherSettingsProto {
        int32 max_stale_weather_threshold_in_hrs = 1;
        int32 default_weather_condition_code = 2;
    }

    // ref: WeatherSettingsProto/Types/DisplayWeatherSettingsProto/Types/WindLevelSettings
    message WindLevelSettings {
        int32 wind_level1_speed = 1;
        int32 wind_level2_speed = 2;
        int32 wind_level3_speed = 3;
    }

    GameplayWeatherSettingsProto gameplay_settings = 1;
    DisplayWeatherSettingsProto display_settings = 2;
    WeatherAlertSettingsProto alert_settings = 3;
    StaleWeatherSettingsProto stale_settings = 4;
}

//----- End proto -----
//------------------------------
//----- Begin protos -----

// ref: Niantic.Platform.Protos.GameAccountRegistryActions
enum GameAccountRegistryActions {
    UNKNOWN_GAME_ACCOUNT_REGISTRY_ACTION = 0;
    ADD_LOGIN_ACTION = 600000;
    REMOVE_LOGIN_ACTION = 600001;
    LIST_LOGIN_ACTION = 600002;
    REPLACE_LOGIN_ACTION = 600003;
}

// ref: Niantic.Platform.Protos.GameAnticheatAction
enum GameAnticheatAction {
    UNKNOWN_GAME_ANTICHEAT_ACTION = 0;
    GET_OUTSTANDING_WARNINGS = 200000;
    ACKNOWLEDGE_WARNINGS = 200001;
}

// ref: Niantic.Platform.Protos.GameFitnessAction
enum GameFitnessAction {
    UNKNOWN_GAME_FITNESS_ACTION = 0;
    UPDATE_FITNESS_METRICS = 640000;
    GET_FITNESS_REPORT = 640001;
    GET_ADVENTURE_SYNC_SETTINGS = 640002;
    UPDATE_ADVENTURE_SYNC_SETTINGS = 640003;
    UPDATE_ADVENTURE_SYNC_FITNESS = 640004;
    GET_ADVENTURE_SYNC_FITNESS_REPORT = 640005;
}

// ref: Niantic.Platform.Protos.GameGmTemplatesAction
enum GameGmTemplatesAction {
    UNKNOWN_GAME_GM_TEMPLATES_ACTION = 0;
    DOWNLOAD_GAME_MASTER_TEMPLATES = 340000;
}

// ref: Niantic.Platform.Protos.GameIapAction
enum GameIapAction {
    UNKNOWN_GAME_IAP_ACTION = 0;
    PURCHASE_SKU = 310000;
    GET_AVAILABLE_SKUS_AND_BALANCES = 310001;
    SET_IN_GAME_CURRENCY_EXCHANGE_RATE = 310002;
    REDEEM_GOOGLE_RECEIPT = 310100;
    REDEEM_APPLE_RECEIPT = 310101;
    REDEEM_DESKTOP_RECEIPT = 310102;
    REDEEM_SAMSUNG_RECEIPT = 310103;
}

// ref: Niantic.Platform.Protos.GameLocationAwarenessAction
enum GameLocationAwarenessAction {
    UNKNOWN_GAME_LOCATION_AWARENESS_ACTION = 0;
    REQUEST_GEOFENCE_UPDATES = 360000;
    UPDATE_PLAYER_LOCATION = 360001;
}

// ref: Niantic.Platform.Protos.GameNotificationAction
enum GameNotificationAction {
    UNKNOWN_GAME_NOTIFICATION_ACTION = 0;
    UPDATE_NOTIFICATION_STATUS = 350000;
}

// ref: Niantic.Platform.Protos.GamePasscodeAction
enum GamePasscodeAction {
    UNKNOWN_GAME_PASSCODE_ACTION = 0;
    REDEEM_PASSCODE = 330000;
}

// ref: Niantic.Platform.Protos.GamePingAction
enum GamePingAction {
    UNKNOWN_GAME_PING_ACTION = 0;
    PING = 220000;
    PING_ASYNC = 220001;
    PING_DOWNSTREAM = 220002;
}

// ref: Niantic.Platform.Protos.GamePlayerAction
enum GamePlayerAction {
    UNKNOWN_GAME_PLAYER_ACTION = 0;
    GET_INVENTORY = 380000;
}

// ref: Niantic.Platform.Protos.GamePoiAction
enum GamePoiAction {
    UNKNOWN_GAME_POI_ACTION = 0;
    ADD_NEW_POI = 620000;
    GET_AVAILABLE_SUBMISSIONS = 620001;
    GET_SIGNED_URL_FOR_PHOTO_UPLOAD = 620002;
    SUBMIT_POI_IMAGE = 620100;
    SUBMIT_POI_TEXT_METADATA_UPDATE = 620101;
    SUBMIT_POI_LOCATION_UPDATE = 620102;
    SUBMIT_POI_TAKEDOWN_REQUEST = 620103;
    SUBMIT_SPONSOR_POI_REPORT = 620104;
    SUBMIT_SPONSOR_POI_LOCATION_UPDATE = 620105;
    ADD_NEW_ROUTE = 620200;
    GENERATE_GMAP_SIGNED_URL = 620300;
    GET_GMAP_SETTINGS = 620301;
    SUBMIT_POI_AR_VIDEO_METADATA = 620400;
    GET_GRAPESHOT_FILE_UPLOAD_URL = 620401;
    ASYNC_FILE_UPLOAD_COMPLETE = 620402;
}

// ref: Niantic.Platform.Protos.GamePushNotificationAction
enum GamePushNotificationAction {
    UNKNOWN_GAME_PUSH_NOTIFICATION_ACTION = 0;
    REGISTER_PUSH_NOTIFICATION = 320000;
    UNREGISTER_PUSH_NOTIFICATION = 320001;
    OPT_OUT_PUSH_NOTIFICATION_CATEGORY = 320002;
}

// ref: Niantic.Platform.Protos.GameSocialAction
enum GameSocialAction {
    UNKNOWN_GAME_SOCIAL_ACTION = 0;
    PROXY_SOCIAL_ACTION = 630000;
    PROXY_SOCIAL_SIDE_CHANNEL_ACTION = 630001;
}

// ref: Niantic.Platform.Protos.GameTelemetryAction
enum GameTelemetryAction {
    UNKNOWN_GAME_TELEMETRY_ACTION = 0;
    COLLECT_CLIENT_TELEMETRY = 610000;
    GET_CLIENT_TELEMETRY_SETTINGS = 610001;
}

// ref: Niantic.Platform.Protos.GameWebTokenAction
enum GameWebTokenAction {
    UNKNOWN_GAME_WEB_TOKEN_ACTION = 0;
    GET_WEB_TOKEN_ACTION = 370000;
}

// ref: Niantic.Platform.Protos.InvitationType
enum InvitationType {
    INVITATION_TYPE_UNSET = 0;
    INVITATION_TYPE_CODE = 1;
    INVITATION_TYPE_FACEBOOK = 2;
    INVITATION_TYPE_SERVER_REQUEST = 3;
}

// ref: Niantic.Platform.Protos.NotificationState
enum NotificationState {
    UNSET_STATE = 0;
    VIEWED = 1;
}

// ref: Niantic.Platform.Protos.PlatformClientAction
enum PlatformClientAction {
    UNKNOWN_PLATFORM_CLIENT_ACTION = 0;
    REGISTER_PUSH_NOTIFICATION = 5000;
    UNREGISTER_PUSH_NOTIFICATION = 5001;
    UPDATE_NOTIFICATION_STATUS = 5002;
    OPT_OUT_PUSH_NOTIFICATION_CATEGORY = 5003;
    DOWNLOAD_GAME_MASTER_TEMPLATES = 5004;
    GET_INVENTORY = 5005;
    REDEEM_PASSCODE = 5006;
    PING = 5007;
    ADD_LOGIN_ACTION = 5008;
    REMOVE_LOGIN_ACTION = 5009;
    LIST_LOGIN_ACTION = 5010;
    ADD_NEW_POI = 5011;
    PROXY_SOCIAL_ACTION = 5012;
    DEPRECATED_CLIENT_TELEMETRY = 5013;
    GET_AVAILABLE_SUBMISSIONS = 5014;
    GET_SIGNED_URL_FOR_PHOTO_UPLOAD = 5015;
    REPLACE_LOGIN_ACTION = 5016;
    PROXY_SOCIAL_SIDE_CHANNEL_ACTION = 5017;
    COLLECT_CLIENT_TELEMETRY = 5018;
    PURCHASE_SKU = 5019;
    GET_AVAILABLE_SKUS_AND_BALANCES = 5020;
    REDEEM_GOOGLE_RECEIPT = 5021;
    REDEEM_APPLE_RECEIPT = 5022;
    REDEEM_DESKTOP_RECEIPT = 5023;
    UPDATE_FITNESS_METRICS = 5024;
    GET_FITNESS_REPORT = 5025;
    GET_CLIENT_TELEMETRY_SETTINGS = 5026;
    PING_ASYNC = 5027;
    REGISTER_BACKGROUND_SERVICE = 5028;
    GET_CLIENT_BGMODE_SETTINGS = 5029;
    PING_DOWNSTREAM = 5030;
    SET_IN_GAME_CURRENCY_EXCHANGE_RATE = 5032;
    REQUEST_GEOFENCE_UPDATES = 5033;
    UPDATE_PLAYER_LOCATION = 5034;
    GENERATE_GMAP_SIGNED_URL = 5035;
    GET_GMAP_SETTINGS = 5036;
    REDEEM_SAMSUNG_RECEIPT = 5037;
    ADD_NEW_ROUTE = 5038;
    GET_OUTSTANDING_WARNINGS = 5039;
    ACKNOWLEDGE_WARNINGS = 5040;
    SUBMIT_POI_IMAGE = 5041;
    SUBMIT_POI_TEXT_METADATA_UPDATE = 5042;
    SUBMIT_POI_LOCATION_UPDATE = 5043;
    SUBMIT_POI_TAKEDOWN_REQUEST = 5044;
    GET_WEB_TOKEN_ACTION = 5045;
    GET_ADVENTURE_SYNC_SETTINGS = 5046;
    UPDATE_ADVENTURE_SYNC_SETTINGS = 5047;
}

// ref: Niantic.Platform.Protos.PlayerSubmissionTypeProto
enum PlayerSubmissionTypeProto {
    TYPE_UNSPECIFIED = 0;
    POI_SUBMISSION = 1;
    ROUTE_SUBMISSION = 2;
    POI_IMAGE_SUBMISSION = 3;
    POI_TEXT_METADATA_UPDATE = 4;
    POI_LOCATION_UPDATE = 5;
    POI_TAKEDOWN_REQUEST = 6;
    POI_AR_VIDEO_SUBMISSION = 7;
    SPONSOR_POI_REPORT = 8;
    SPONSOR_POI_LOCATION_UPDATE = 9;
}

// ref: Niantic.Platform.Protos.PoiInvalidReason
enum PoiInvalidReason {
    INVALID_REASON_UNSPECIFIED = 0;
    NO_PEDESTRIAN_ACCESS = 1;
    OBSTRUCTS_EMERGENCY_SERVICES = 2;
    PRIVATE_RESIDENTIAL_PROPERTY = 3;
    SCHOOL = 4;
    PERMANENTLY_REMOVED = 5;
    DUPLICATE = 6;
}

// ref: Niantic.Platform.Protos.SocialNotificationCategory
enum SocialNotificationCategory {
    unset__social_notification_category = 0;
    FRIEND_INVITE_RECEIVED = 1;
    FRIEND_INVITE_ACCEPTED = 2;
}

// ref: Niantic.Platform.Protos.SocialNotificationVariableName
enum SocialNotificationVariableName {
    unset__social_notification_variable_name = 0;
    SOCIAL_CODENAME = 1;
    SOCIAL_TEAM = 2;
    SOCIAL_PLAYER_SUMMARY = 3;
}

// ref: Niantic.Platform.Protos.SponsorPoiInvalidReason
enum SponsorPoiInvalidReason {
    SPONSOR_POI_REASON_UNSPECIFIED = 0;
    SPONSOR_POI_REASON_DOES_NOT_EXIST = 1;
    SPONSOR_POI_REASON_NOT_SAFE = 2;
    SPONSOR_POI_REASON_NOT_TRUTHFUL = 3;
    SPONSOR_POI_REASON_NOT_FAMILY_FRIENDLY = 4;
    SPONSOR_POI_REASON_OFFENSIVE_CONTENT = 5;
}

// ref: Niantic.Platform.Protos.AcceptFriendInviteOutProto
message AcceptFriendInviteOutProto {
    // ref: Niantic.Platform.Protos.AcceptFriendInviteOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_INVITE_DOES_NOT_EXIST = 3;
        ERROR_MAX_FRIENDS_LIMIT_REACHED_DELETED = 4;
        ERROR_INVITE_HAS_BEEN_CANCELLED = 5;
        ERROR_SENDER_HAS_MAX_FRIENDS = 6;
        ERROR_RECEIVER_HAS_MAX_FRIENDS = 7;
    }

    Result result = 1;
    PlayerSummaryProto friend = 2;
}

// ref: Niantic.Platform.Protos.AcceptFriendInviteProto
message AcceptFriendInviteProto {
    string player_id = 1;
}

// ref: Niantic.Platform.Protos.AddLoginActionOutProto
message AddLoginActionOutProto {
    // ref: Niantic.Platform.Protos.AddLoginActionOutProto/Types/Status
    enum Status {
        UNSET = 0;
        AUTH_FAILURE = 1;
        LOGIN_TAKEN = 2;
    }

    bool success = 1;
    repeated LoginDetail login_detail = 2;
    Status status = 3;
}

// ref: Niantic.Platform.Protos.AddLoginActionProto
message AddLoginActionProto {
    IdentityProvider identity_provider = 1;
    bytes inner_message = 2;
    string auth_provider_id = 3;
}

// ref: Niantic.Platform.Protos.ApnToken
message ApnToken {
    string registration_id = 1;
    string bundle_identifier = 2;
    int32 payload_byte_size = 3;
}

// ref: Niantic.Platform.Protos.CancelFriendInviteOutProto
message CancelFriendInviteOutProto {
    // ref: Niantic.Platform.Protos.CancelFriendInviteOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_INVITE_DOES_NOT_EXIST = 3;
        ERROR_ALREADY_CANCELLED = 4;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.CancelFriendInviteProto
message CancelFriendInviteProto {
    string player_id = 1;
}

// ref: Niantic.Platform.Protos.ClientInbox
message ClientInbox {
    // ref: Niantic.Platform.Protos.ClientInbox/Types/Label
    enum Label {
        UNSET_LABEL = 0;
        UNREAD = 1;
        NEW = 2;
        IMMEDIATE = 3;
    }

    // ref: Niantic.Platform.Protos.ClientInbox/Types/Notification
    message Notification {
        string notification_id = 1;
        string title_key = 2;
        string category = 3;
        int64 create_timestamp_ms = 4;
        repeated TemplateVariable variables = 5;
        repeated Label labels = 6;
        int64 expire_time_ms = 7;
    }

    repeated Notification notifications = 1;
    repeated TemplateVariable builtin_variables = 2;
}

// ref: Niantic.Platform.Protos.DebugInfoProto
message DebugInfoProto {
    double latitude = 1;
    double longitude = 2;
}

// ref: Niantic.Platform.Protos.DeclineFriendInviteOutProto
message DeclineFriendInviteOutProto {
    // ref: Niantic.Platform.Protos.DeclineFriendInviteOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_INVITE_DOES_NOT_EXIST = 3;
        ERROR_INVITE_ALREADY_DECLINED = 4;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.DeclineFriendInviteProto
message DeclineFriendInviteProto {
    string player_id = 1;
}

// ref: Niantic.Platform.Protos.DownloadSettingsActionProto
message DownloadSettingsActionProto {
    string sha1 = 1;
}

// ref: Niantic.Platform.Protos.DownloadSettingsResponseProto
message DownloadSettingsResponseProto {
    string error = 1;
    string sha1 = 2;
    bytes values = 3;
}

// ref: Niantic.Platform.Protos.FriendDetailsProto
message FriendDetailsProto {
    PlayerSummaryProto player = 1;
    bytes friend_visible_data = 2;
    int32 score = 3;
    bytes data_with_me = 4;
}

// ref: Niantic.Platform.Protos.GcmToken
message GcmToken {
    string registration_id = 1;
}

// ref: Niantic.Platform.Protos.GenerateGmapSignedUrlOutProto
message GenerateGmapSignedUrlOutProto {
    // ref: Niantic.Platform.Protos.GenerateGmapSignedUrlOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_NOT_VALID = 2;
        ERROR_RATE_LIMITED = 3;
        ERROR_MISSING_INPUT = 4;
        ERROR_UNKNOWN = 5;
    }

    Result result = 1;
    string signed_url = 2;
}

// ref: Niantic.Platform.Protos.GenerateGmapSignedUrlProto
message GenerateGmapSignedUrlProto {
    double latitude = 1;
    double longitude = 2;
    int32 width = 3;
    int32 height = 4;
    int32 zoom = 5;
    string language_code = 6;
    string country_code = 7;
    string map_style = 8;
    string map_type = 9;
    string icon_params = 10;
}

// ref: Niantic.Platform.Protos.GetAvailableSubmissionsOutProto
message GetAvailableSubmissionsOutProto {
    int32 submissions_left = 1;
    int32 min_player_level = 2;
    bool has_valid_email = 3;
    bool is_feature_enabled = 4;
    int64 time_window_for_submissions_limit_ms = 5;
}

// ref: Niantic.Platform.Protos.GetAvailableSubmissionsProto
message GetAvailableSubmissionsProto {
}

// ref: Niantic.Platform.Protos.GetFacebookFriendListOutProto
message GetFacebookFriendListOutProto {
    // ref: Niantic.Platform.Protos.GetFacebookFriendListOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_FACEBOOK_API = 3;
        ERROR_FACEBOOK_PERMISSIONS = 4;
        ERROR_NO_FACEBOOK_ID = 5;
    }

    // ref: Niantic.Platform.Protos.GetFacebookFriendListOutProto/Types/FacebookFriendProto
    message FacebookFriendProto {
        PlayerSummaryProto player = 1;
        string full_name = 2;
    }

    Result result = 1;
    repeated FacebookFriendProto friend = 2;
    string next_cursor = 3;
}

// ref: Niantic.Platform.Protos.GetFacebookFriendListProto
message GetFacebookFriendListProto {
    string fb_access_token = 1;
    int32 limit = 2;
    string cursor = 3;
}

// ref: Niantic.Platform.Protos.GetFriendCodeOutProto
message GetFriendCodeOutProto {
    // ref: Niantic.Platform.Protos.GetFriendCodeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string friend_code = 2;
}

// ref: Niantic.Platform.Protos.GetFriendCodeProto
message GetFriendCodeProto {
    bool force_generate_code = 1;
}

// ref: Niantic.Platform.Protos.GetFriendDetailsOutProto
message GetFriendDetailsOutProto {
    // ref: Niantic.Platform.Protos.GetFriendDetailsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        EXCEEDS_MAX_PLAYERS_PER_QUERY = 3;
    }

    // ref: Niantic.Platform.Protos.GetFriendDetailsOutProto/Types/DebugProto/Types/Callee
    message Callee {
        repeated int32 callee_id = 1;
        string player_id = 2;
    }

    // ref: Niantic.Platform.Protos.GetFriendDetailsOutProto/Types/DebugProto
    message DebugProto {
        // ref: Niantic.Platform.Protos.GetFriendDetailsOutProto/Types/DebugProto/Types/Callee
        message Callee {
            repeated int32 callee_id = 1;
            string player_id = 2;
        }

        int32 fetched_from_db = 1;
        int32 fetched_from_fanout = 2;
        int32 fetched_from_player_mapper = 3;
        int32 fetched_from_status_cache = 4;
        int32 failed_to_fetch = 5;
        repeated Callee callee_list = 6;
    }

    Result result = 1;
    repeated FriendDetailsProto friend = 2;
    DebugProto friend_details_debug_info = 3;
}

// ref: Niantic.Platform.Protos.GetFriendDetailsProto
message GetFriendDetailsProto {
    repeated string player_id = 1;
}

// ref: Niantic.Platform.Protos.GetFriendsListOutProto
message GetFriendsListOutProto {
    // ref: Niantic.Platform.Protos.GetFriendsListOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    // ref: Niantic.Platform.Protos.GetFriendsListOutProto/Types/FriendProto
    message FriendProto {
        string player_id = 1;
        string codename = 2;
        string team = 3;
        int32 score = 4;
        bytes data_with_me = 5;
        int64 version = 6;
        int64 created_ms = 7;
        string fb_user_id = 8;
        bool is_facebook_friendship = 9;
    }

    Result result = 1;
    repeated FriendProto friend = 2;
}

// ref: Niantic.Platform.Protos.GetFriendsListProto
message GetFriendsListProto {
}

// ref: Niantic.Platform.Protos.GetGmapSettingsOutProto
message GetGmapSettingsOutProto {
    // ref: Niantic.Platform.Protos.GetGmapSettingsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_MISSING_CONFIG = 3;
        ERROR_NO_UNIQUE_ID = 4;
    }

    Result result = 1;
    string gmap_template_url = 2;
    int32 max_poi_distance_in_meters = 3;
}

// ref: Niantic.Platform.Protos.GetGmapSettingsProto
message GetGmapSettingsProto {
}

// ref: Niantic.Platform.Protos.GetInboxV2Proto
message GetInboxV2Proto {
    bool is_history = 1;
    bool is_reverse = 2;
    int64 not_before_ms = 3;
}

// ref: Niantic.Platform.Protos.GetIncomingFriendInvitesOutProto
message GetIncomingFriendInvitesOutProto {
    // ref: Niantic.Platform.Protos.GetIncomingFriendInvitesOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Result result = 1;
    repeated IncomingFriendInviteDisplayProto invites = 2;
}

// ref: Niantic.Platform.Protos.GetIncomingFriendInvitesProto
message GetIncomingFriendInvitesProto {
}

// ref: Niantic.Platform.Protos.GetNotificationInboxOutProto
message GetNotificationInboxOutProto {
    // ref: Niantic.Platform.Protos.GetNotificationInboxOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    Result result = 1;
    ClientInbox inbox = 2;
}

// ref: Niantic.Platform.Protos.GetOutgoingFriendInvitesOutProto
message GetOutgoingFriendInvitesOutProto {
    // ref: Niantic.Platform.Protos.GetOutgoingFriendInvitesOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Result result = 1;
    repeated OutgoingFriendInviteDisplayProto invites = 2;
}

// ref: Niantic.Platform.Protos.GetOutgoingFriendInvitesProto
message GetOutgoingFriendInvitesProto {
}

// ref: Niantic.Platform.Protos.GetUploadUrlOutProto
message GetUploadUrlOutProto {
    // ref: Niantic.Platform.Protos.GetUploadUrlOutProto/Types/Status
    enum Status {
        UNSET = 0;
        FAILURES = 1;
        SUCCESS = 2;
    }

    Status status = 1;
    string signed_url = 2;
    string supporting_image_signed_url = 3;
}

// ref: Niantic.Platform.Protos.GetUploadUrlProto
message GetUploadUrlProto {
    string user_id = 1;
    string game_unique_id = 2;
}

// ref: Niantic.Platform.Protos.GetWebTokenActionOutProto
message GetWebTokenActionOutProto {
    // ref: Niantic.Platform.Protos.GetWebTokenActionOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Status status = 1;
    string access_token = 2;
}

// ref: Niantic.Platform.Protos.GetWebTokenActionProto
message GetWebTokenActionProto {
    string client_id = 1;
}

// ref: Niantic.Platform.Protos.IncomingFriendInviteDisplayProto
message IncomingFriendInviteDisplayProto {
    IncomingFriendInviteProto invite = 1;
    PlayerSummaryProto player = 2;
}

// ref: Niantic.Platform.Protos.IncomingFriendInviteProto
message IncomingFriendInviteProto {
    // ref: Niantic.Platform.Protos.IncomingFriendInviteProto/Types/Status
    enum Status {
        UNSET = 0;
        PENDING = 1;
        DECLINED = 2;
        CANCELLED = 3;
    }

    Status status = 1;
    string player_id = 2;
    int64 created_ms = 3;
    InvitationType invitation_type = 4;
    string full_name = 5;
}

// ref: Niantic.Platform.Protos.InviteFacebookFriendOutProto
message InviteFacebookFriendOutProto {
    // ref: Niantic.Platform.Protos.InviteFacebookFriendOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_NOT_FOUND = 3;
        ERROR_PLAYER_OUTBOX_FULL = 4;
        ERROR_PLAYER_INBOX_FULL = 5;
        ERROR_SENDER_HAS_MAX_FRIENDS = 6;
        ERROR_RECEIVER_HAS_MAX_FRIENDS = 7;
        ERROR_ALREADY_A_FRIEND = 8;
        ERROR_INVITE_ALREADY_SENT = 9;
        ERROR_INVITE_ALREADY_RECEIVED = 10;
        ERROR_CANNOT_SEND_INVITES_TO_YOURSELF = 11;
        ERROR_FRIEND_CACHE_EXPIRED = 12;
        ERROR_FRIEND_NOT_CACHED = 13;
        ERROR_INVALID_SENDER_FACEBOOK_ID = 14;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.InviteFacebookFriendProto
message InviteFacebookFriendProto {
    string fb_access_token = 1;
    string friend_fb_user_id = 2;
}

// ref: Niantic.Platform.Protos.IsMyFriendOutProto
message IsMyFriendOutProto {
    // ref: Niantic.Platform.Protos.IsMyFriendOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_NOT_FOUND_DELETED = 3;
    }

    Result result = 1;
    bool is_friend = 2;
}

// ref: Niantic.Platform.Protos.IsMyFriendProto
message IsMyFriendProto {
    string player_id = 1;
}

// ref: Niantic.Platform.Protos.ListLoginActionOutProto
message ListLoginActionOutProto {
    bool success = 1;
    repeated LoginDetail login_detail = 2;
}

// ref: Niantic.Platform.Protos.LocationE6Proto
message LocationE6Proto {
    int32 latitude_e6 = 1;
    int32 longitude_e6 = 2;
}

// ref: Niantic.Platform.Protos.LoginDetail
message LoginDetail {
    IdentityProvider identity_provider = 1;
    string email = 2;
    string auth_provider_id = 3;
}

// ref: Niantic.Platform.Protos.OptOutProto
message OptOutProto {
    repeated string categories = 1;
}

// ref: Niantic.Platform.Protos.OutgoingFriendInviteDisplayProto
message OutgoingFriendInviteDisplayProto {
    OutgoingFriendInviteProto invite = 1;
    PlayerSummaryProto player = 2;
}

// ref: Niantic.Platform.Protos.OutgoingFriendInviteProto
message OutgoingFriendInviteProto {
    // ref: Niantic.Platform.Protos.OutgoingFriendInviteProto/Types/Status
    enum Status {
        UNSET = 0;
        PENDING = 1;
        CANCELLED = 2;
        DECLINED = 3;
    }

    Status status = 1;
    string player_id = 2;
    int64 created_ms = 3;
    InvitationType invitation_type = 4;
    string full_name = 5;
}

// ref: Niantic.Platform.Protos.PingRequestProto
message PingRequestProto {
    int32 response_size_bytes = 1;
    string random_request_bytes = 2;
    bool use_cache_for_random_request_bytes = 3;
    string return_value = 4;
}

// ref: Niantic.Platform.Protos.PingResponseProto
message PingResponseProto {
    string user_info = 1;
    string server_info = 2;
    string random_response_bytes = 3;
    string return_value = 4;
}

// ref: Niantic.Platform.Protos.PlayerChurnParameters
message PlayerChurnParameters {
    string account_id = 1;
    string code_name = 2;
    string team = 3;
    string country = 4;
    int32 level = 5;
    int32 total_pokemon_caught = 6;
    int32 gifts_opened_daily = 7;
    int32 total_big_karps = 8;
    int32 stardust_balance = 9;
    int32 total_raids = 10;
    int32 total_pokemon_evolved = 11;
    int32 total_legendary_raids = 12;
    int32 total_eggs_hatched = 13;
    int32 total_battle_attack_won = 14;
    int32 total_battle_defended_won = 15;
    int32 total_quests_completed = 16;
    int32 poke_coin_balance = 17;
    int32 pokemon_caught_active_day = 18;
    float total_km_walked = 19;
    float num_pokedex_entries = 20;
    float km_walked_past_active_day = 21;
    int64 days_since_last_logon = 22;
    int64 days_since_creation = 23;
    int64 days_since_last_pokemon_caught = 24;
}

// ref: Niantic.Platform.Protos.PlayerReputationProto
message PlayerReputationProto {
    // ref: Niantic.Platform.Protos.PlayerReputationProto/Types/CheatReputation
    enum CheatReputation {
        UNSET = 0;
        BOT = 1;
        SPOOFER = 2;
    }

    int64 account_age_ms = 1;
    int64 player_level = 2;
    repeated CheatReputation cheat_reputation = 3;
    bool is_minor = 4;
}

// ref: Niantic.Platform.Protos.PlayerSummaryProto
message PlayerSummaryProto {
    string player_id = 1;
    string codename = 2;
    bytes public_data = 3;
    string team = 4;
    string fb_user_id = 5;
}

// ref: Niantic.Platform.Protos.PortalCurationImageResult
message PortalCurationImageResult {
    // ref: Niantic.Platform.Protos.PortalCurationImageResult/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FEATURE_DISABLED = 2;
        ALREADY_UPLOADED = 3;
        IMAGE_NOT_FOUND = 4;
        IMAGE_TOO_BIG = 5;
        IMAGE_NOT_SERVABLE = 6;
        PORTAL_NOT_FOUND = 7;
    }

}

// ref: Niantic.Platform.Protos.PushNotificationRegistryOutProto
message PushNotificationRegistryOutProto {
    // ref: Niantic.Platform.Protos.PushNotificationRegistryOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        NO_CHANGE = 2;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.PushNotificationRegistryProto
message PushNotificationRegistryProto {
    ApnToken apn_token = 1;
    GcmToken gcm_token = 2;
}

// ref: Niantic.Platform.Protos.RemoveFriendOutProto
message RemoveFriendOutProto {
    // ref: Niantic.Platform.Protos.RemoveFriendOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_DOES_NOT_EXIST_DELETED = 2;
        ERROR_PLAYER_NOT_A_FRIEND = 3;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.RemoveFriendProto
message RemoveFriendProto {
    string player_id = 1;
}

// ref: Niantic.Platform.Protos.RemoveLoginActionOutProto
message RemoveLoginActionOutProto {
    // ref: Niantic.Platform.Protos.RemoveLoginActionOutProto/Types/Status
    enum Status {
        UNSET = 0;
        LOGIN_NOT_REMOVABLE = 1;
    }

    bool success = 1;
    repeated LoginDetail login_detail = 2;
    Status status = 3;
}

// ref: Niantic.Platform.Protos.RemoveLoginActionProto
message RemoveLoginActionProto {
    IdentityProvider identity_provider = 1;
    string auth_provider_id = 3;
}

// ref: Niantic.Platform.Protos.ReplaceLoginActionOutProto
message ReplaceLoginActionOutProto {
    // ref: Niantic.Platform.Protos.ReplaceLoginActionOutProto/Types/Status
    enum Status {
        UNSET = 0;
        AUTH_FAILURE = 1;
        LOGIN_TAKEN = 2;
        LOGIN_ALREADY_HAVE = 3;
        LOGIN_NOT_REPLACEABLE = 4;
    }

    bool success = 1;
    repeated LoginDetail login_detail = 2;
    Status status = 3;
}

// ref: Niantic.Platform.Protos.ReplaceLoginActionProto
message ReplaceLoginActionProto {
    IdentityProvider existing_identity_provider = 1;
    AddLoginActionProto new_login = 2;
    string auth_provider_id = 3;
}

// ref: Niantic.Platform.Protos.SearchPlayerOutProto
message SearchPlayerOutProto {
    // ref: Niantic.Platform.Protos.SearchPlayerOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_NOT_FOUND = 3;
    }

    Result result = 1;
    PlayerSummaryProto player = 2;
}

// ref: Niantic.Platform.Protos.SearchPlayerProto
message SearchPlayerProto {
    string friend_code = 1;
}

// ref: Niantic.Platform.Protos.SendFriendInviteOutProto
message SendFriendInviteOutProto {
    // ref: Niantic.Platform.Protos.SendFriendInviteOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_ALREADY_A_FRIEND = 3;
        ERROR_PLAYER_DOES_NOT_EXIST_DELETED = 4;
        ERROR_PLAYER_INBOX_FULL = 5;
        ERROR_PLAYER_OUTBOX_FULL = 6;
        ERROR_SENDER_HAS_MAX_FRIENDS = 7;
        ERROR_INVITE_ALREADY_SENT = 8;
        ERROR_CANNOT_SEND_INVITES_TO_YOURSELF = 9;
        ERROR_INVITE_ALREADY_RECEIVED = 10;
        ERROR_RECEIVER_HAS_MAX_FRIENDS = 11;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.SendFriendInviteProto
message SendFriendInviteProto {
    string player_id = 1;
    string friend_code = 2;
}

// ref: Niantic.Platform.Protos.SubmitNewPoiOutProto
message SubmitNewPoiOutProto {
    // ref: Niantic.Platform.Protos.SubmitNewPoiOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        INTERNAL_ERROR = 3;
        TOO_MANY_RECENT_SUBMISSIONS = 4;
        INVALID_INPUT = 5;
        MINOR = 6;
        NOT_AVAILABLE = 7;
    }

    Status status = 1;
}

// ref: Niantic.Platform.Protos.SubmitNewPoiProto
message SubmitNewPoiProto {
    string title = 1;
    string long_description = 2;
    int32 lat_e6 = 4;
    int32 lng_e6 = 5;
    string supporting_statement = 14;
}

// ref: Niantic.Platform.Protos.TemplateVariable
message TemplateVariable {
    string name = 1;
    string literal = 2;
    string key = 3;
    string lookup_table = 4;
    bytes byte_value = 5;
}

// ref: Niantic.Platform.Protos.UpdateFacebookStatusOutProto
message UpdateFacebookStatusOutProto {
    // ref: Niantic.Platform.Protos.UpdateFacebookStatusOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_NOT_FOUND = 3;
        ERROR_FACEBOOK_API = 4;
        ERROR_ALREADY_EXISTS = 5;
    }

    Result result = 1;
}

// ref: Niantic.Platform.Protos.UpdateFacebookStatusProto
message UpdateFacebookStatusProto {
    string fb_access_token = 1;
    bool force_update = 2;
}

// ref: Niantic.Platform.Protos.UpdateNotificationOutProto
message UpdateNotificationOutProto {
    repeated string notification_ids = 1;
    repeated int64 create_timestamp_ms = 2;
    NotificationState state = 3;
}

// ref: Niantic.Platform.Protos.UpdateNotificationProto
message UpdateNotificationProto {
    repeated string notification_ids = 1;
    repeated int64 create_timestamp_ms = 2;
    NotificationState state = 3;
}

// ref: Niantic.Platform.Protos.UploadPoiPhotoByUrlOutProto
message UploadPoiPhotoByUrlOutProto {
    PortalCurationImageResult.Result status = 1;
}

// ref: Niantic.Platform.Protos.UploadPoiPhotoByUrlProto
message UploadPoiPhotoByUrlProto {
    string request_id = 1;
    string image_url = 2;
}

//----- End protos -----
//------------------------------
//----- Begin protos -----

// ref: Niantic.Titan.Protos.RouteVisitOrder
enum RouteVisitOrder {
    ROUTE_VISIT_ORDER_UNSPECIFIED = 0;
    IN_ORDER = 1;
    UNORDERED = 2;
    REVERSIBLE = 3;
}

// ref: Niantic.Titan.Protos.AsyncFileUploadCompleteOutProto
message AsyncFileUploadCompleteOutProto {
    // ref: Niantic.Titan.Protos.AsyncFileUploadCompleteOutProto/Types/ErrorStatus
    enum ErrorStatus {
        UNSET = 0;
        SERVER_UPDATE_FAILED = 1;
        MISSING_SUBMISSION_ID = 2;
        MISSING_SUBMISSION_TYPE = 3;
        MISSING_UPLOAD_STATUS = 4;
    }

    ErrorStatus error = 1;
}

// ref: Niantic.Titan.Protos.AsyncFileUploadCompleteProto
message AsyncFileUploadCompleteProto {
    // ref: Niantic.Titan.Protos.AsyncFileUploadCompleteProto/Types/Status
    enum Status {
        UNSET = 0;
        UPLOAD_DONE = 1;
        UPLOAD_FAILED = 2;
    }

    string submission_id = 1;
    PlayerSubmissionTypeProto submission_type = 2;
    Status upload_status = 3;
}

// ref: Niantic.Titan.Protos.AvailableSubmissionsPerSubmissionType
message AvailableSubmissionsPerSubmissionType {
    PlayerSubmissionTypeProto player_submission_type = 1;
    int32 submissions_left = 2;
    int32 min_player_level = 3;
    bool is_feature_enabled = 4;
    int64 time_window_for_submissions_limit_ms = 5;
    int32 max_poi_distance_in_meters = 6;
    repeated string blacklisted_os = 7;
}

// ref: Niantic.Titan.Protos.GenerateGmapSignedUrlOutProto
message GenerateGmapSignedUrlOutProto {
    // ref: Niantic.Titan.Protos.GenerateGmapSignedUrlOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_NOT_VALID = 2;
        ERROR_RATE_LIMITED = 3;
        ERROR_MISSING_INPUT = 4;
        ERROR_UNKNOWN = 5;
    }

    Result result = 1;
    string signed_url = 2;
}

// ref: Niantic.Titan.Protos.GenerateGmapSignedUrlProto
message GenerateGmapSignedUrlProto {
    double latitude = 1;
    double longitude = 2;
    int32 width = 3;
    int32 height = 4;
    int32 zoom = 5;
    string language_code = 6;
    string country_code = 7;
    string map_style = 8;
    string map_type = 9;
    string icon_params = 10;
}

// ref: Niantic.Titan.Protos.GetAvailableSubmissionsOutProto
message GetAvailableSubmissionsOutProto {
    int32 submissions_left = 1;
    int32 min_player_level = 2;
    bool has_valid_email = 3;
    bool is_feature_enabled = 4;
    int64 time_window_for_submissions_limit_ms = 5;
    int32 max_poi_distance_in_meters = 6;
    repeated string blacklisted_os = 7;
    repeated AvailableSubmissionsPerSubmissionType availability_result_per_type = 8;
}

// ref: Niantic.Titan.Protos.GetAvailableSubmissionsProto
message GetAvailableSubmissionsProto {
    PlayerSubmissionTypeProto submission_type = 1;
    repeated PlayerSubmissionTypeProto submission_types = 2;
}

// ref: Niantic.Titan.Protos.GetGmapSettingsOutProto
message GetGmapSettingsOutProto {
    // ref: Niantic.Titan.Protos.GetGmapSettingsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_MISSING_CONFIG = 3;
        ERROR_NO_UNIQUE_ID = 4;
    }

    Result result = 1;
    string gmap_template_url = 2;
    int32 max_poi_distance_in_meters = 3;
}

// ref: Niantic.Titan.Protos.GetGmapSettingsProto
message GetGmapSettingsProto {
}

// ref: Niantic.Titan.Protos.GetGrapeshotUploadUrlOutProto
message GetGrapeshotUploadUrlOutProto {
    // ref: Niantic.Titan.Protos.GetGrapeshotUploadUrlOutProto/Types/Status
    enum Status {
        UNSET = 0;
        FAILURE = 1;
        SUCCESS = 2;
        MISSING_FILE_CONTEXTS = 3;
        DUPLICATE_FILE_CONTEXT = 4;
        MISSING_SUBMISSION_TYPE = 5;
        MISSING_SUBMISSION_ID = 6;
    }

    Status status = 1;
    map<string, GrapeshotUploadingDataProto> file_context_to_grapeshot_data = 4;
}

// ref: Niantic.Titan.Protos.GetGrapeshotUploadUrlProto
message GetGrapeshotUploadUrlProto {
    PlayerSubmissionTypeProto submission_type = 1;
    string submission_id = 2;
    repeated string file_upload_context = 3;
}

// ref: Niantic.Titan.Protos.GetUploadUrlOutProto
message GetUploadUrlOutProto {
    // ref: Niantic.Titan.Protos.GetUploadUrlOutProto/Types/Status
    enum Status {
        UNSET = 0;
        FAILURES = 1;
        SUCCESS = 2;
        MISSING_IMAGE_CONTEXTS = 3;
        DUPLICATE_IMAGE_CONTEXTS = 4;
    }

    Status status = 1;
    string signed_url = 2;
    string supporting_image_signed_url = 3;
    map<string, string> context_signed_urls = 4;
}

// ref: Niantic.Titan.Protos.GetUploadUrlProto
message GetUploadUrlProto {
    string user_id = 1;
    string game_unique_id = 2;
    PlayerSubmissionTypeProto submission_type = 3;
    string submission_id = 4;
    repeated string image_contexts = 5;
}

// ref: Niantic.Titan.Protos.GrapeshotAuthenticationDataProto
message GrapeshotAuthenticationDataProto {
    string authorization = 1;
    string date = 2;
}

// ref: Niantic.Titan.Protos.GrapeshotChunkDataProto
message GrapeshotChunkDataProto {
    string chunk_file_path = 1;
    uint32 chunk_number = 2;
    GrapeshotAuthenticationDataProto upload_authentication = 3;
    GrapeshotAuthenticationDataProto delete_authentication = 4;
}

// ref: Niantic.Titan.Protos.GrapeshotComposeDataProto
message GrapeshotComposeDataProto {
    string target_file_path = 1;
    GrapeshotAuthenticationDataProto authentication = 2;
}

// ref: Niantic.Titan.Protos.GrapeshotUploadingDataProto
message GrapeshotUploadingDataProto {
    repeated GrapeshotChunkDataProto chunk_data = 1;
    GrapeshotComposeDataProto compose_data = 2;
    string gcs_bucket = 3;
    int32 number_of_chunks = 4;
}

// ref: Niantic.Titan.Protos.PlayerSubmissionResponseProto
message PlayerSubmissionResponseProto {
    // ref: Niantic.Titan.Protos.PlayerSubmissionResponseProto/Types/Status
    enum Status {
        STATUS_UNSPECIFIED = 0;
        SUCCESS = 1;
        INTERNAL_ERROR = 2;
        TOO_MANY_RECENT_SUBMISSIONS = 3;
        MINOR = 4;
        NOT_AVAILABLE = 5;
        INVALID_INPUT = 6;
        MISSING_IMAGE = 7;
    }

    Status status = 1;
    string submission_id = 2;
}

// ref: Niantic.Titan.Protos.PoiPlayerMetadataTelemetry
message PoiPlayerMetadataTelemetry {
    string device_model = 1;
    string device_os = 2;
}

// ref: Niantic.Titan.Protos.PoiSubmissionPhotoUploadErrorTelemetry
message PoiSubmissionPhotoUploadErrorTelemetry {
    // ref: Niantic.Titan.Protos.PoiSubmissionPhotoUploadErrorTelemetry/Types/PoiSubmissionPhotoUploadErrorIds
    enum PoiSubmissionPhotoUploadErrorIds {
        UNSET = 0;
        POI_PHOTO_UPLOAD_ERROR = 1;
        POI_PHOTO_UPLOAD_TIMEOUT = 2;
    }

    PoiSubmissionPhotoUploadErrorIds error_id = 1;
    PoiImageType image_type = 2;
    string error_message = 3;
}

// ref: Niantic.Titan.Protos.PoiSubmissionTelemetry
message PoiSubmissionTelemetry {
    // ref: Niantic.Titan.Protos.PoiSubmissionTelemetry/Types/PoiCameraStepIds
    enum PoiCameraStepIds {
        UNSET = 0;
        ENTER = 1;
        RETAKE = 2;
        CONFIRM = 3;
        EXIT = 4;
    }

    // ref: Niantic.Titan.Protos.PoiSubmissionTelemetry/Types/PoiSubmissionGuiEventId
    enum PoiSubmissionGuiEventId {
        UNKNOWN = 0;
        POI_NOMINATION_ENTER = 1;
        POI_TUTORIAL_COMPLETE = 2;
        POI_MAP_CHANGEDVIEW_MAP = 3;
        POI_MAP_CHANGEDVIEW_SATELLITE = 4;
        POI_MAP_CENTER_LOCATION = 5;
        POI_LOCATION_SET = 6;
        POI_PHOTO_CAMERA_ENTER = 7;
        POI_PHOTO_CAMERA_EXIT = 8;
        POI_TITLE_ENTERED = 9;
        POI_DESCRIPTION_ENTER = 10;
        POI_DETAILS_CONFIRM = 11;
        POI_SUPPORTINGINFO_ENTER = 12;
        POI_SUBMIT_BUTTON_HIT = 13;
        POI_EXIT_BUTTON_HIT = 14;
    }

    PoiSubmissionGuiEventId gui_event_id = 1;
    PoiImageType image_type = 2;
    PoiCameraStepIds camera_step_id = 3;
}

// ref: Niantic.Titan.Protos.PoiVideoSubmissionMetadataProto
message PoiVideoSubmissionMetadataProto {
    string poi_id = 1;
    LocationE6Proto location = 2;
    int32 player_level = 3;
}

// ref: Niantic.Titan.Protos.PortalCurationImageResult
message PortalCurationImageResult {
    // ref: Niantic.Titan.Protos.PortalCurationImageResult/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FEATURE_DISABLED = 2;
        ALREADY_UPLOADED = 3;
        IMAGE_NOT_FOUND = 4;
        IMAGE_TOO_BIG = 5;
        IMAGE_NOT_SERVABLE = 6;
        PORTAL_NOT_FOUND = 7;
    }

}

// ref: Niantic.Titan.Protos.RouteCheckpointProto
message RouteCheckpointProto {
    // ref: Niantic.Titan.Protos.RouteCheckpointProto/TypeOneofCase
    //oneof Type {
        //none = 0;
        //poi = 1;
        //guidepost = 2;
    //}

    RoutePoiProto poi = 1;
    RouteGuidepostProto guidepost = 2;
}

// ref: Niantic.Titan.Protos.RouteGuidepostProto
message RouteGuidepostProto {
    LocationE6Proto location = 1;
}

// ref: Niantic.Titan.Protos.RouteImageProto
message RouteImageProto {
    // ref: Niantic.Titan.Protos.RouteImageProto/SourceOneofCase
    //oneof Source {
        //none = 0;
        //image_id = 1;
        //image_context = 2;
    //}

    string image_id = 1;
    string image_context = 2;
}

// ref: Niantic.Titan.Protos.RoutePoiProto
message RoutePoiProto {
    string poi_id = 1;
}

// ref: Niantic.Titan.Protos.SubmitNewPoiOutProto
message SubmitNewPoiOutProto {
    // ref: Niantic.Titan.Protos.SubmitNewPoiOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        INTERNAL_ERROR = 3;
        TOO_MANY_RECENT_SUBMISSIONS = 4;
        INVALID_INPUT = 5;
        MINOR = 6;
        NOT_AVAILABLE = 7;
    }

    Status status = 1;
    string submission_id = 2;
}

// ref: Niantic.Titan.Protos.SubmitNewPoiProto
message SubmitNewPoiProto {
    string title = 1;
    string long_description = 2;
    int32 lat_e6 = 4;
    int32 lng_e6 = 5;
    string supporting_statement = 14;
    bool async_file_upload = 18;
}

// ref: Niantic.Titan.Protos.SubmitNewRouteOutProto
message SubmitNewRouteOutProto {
    // ref: Niantic.Titan.Protos.SubmitNewRouteOutProto/Types/Status
    enum Status {
        STATUS_UNSPECIFIED = 0;
        SUCCESS = 1;
        INTERNAL_ERROR = 2;
        TOO_MANY_RECENT_SUBMISSIONS = 3;
        MINOR = 4;
        NOT_AVAILABLE = 5;
        INVALID_INPUT = 6;
        MISSING_IMAGE = 7;
        INVALID_CHECKPOINT = 8;
        INVALID_ROUTE_LENGTH = 9;
        DUPLICATE_CHECKPOINTS = 10;
        ALREADY_SUBMITTED = 11;
    }

    Status status = 1;
}

// ref: Niantic.Titan.Protos.SubmitNewRouteProto
message SubmitNewRouteProto {
    string route_submission_id = 1;
    string title = 2;
    string description = 3;
    RouteVisitOrder visit_order = 5;
    repeated RouteCheckpointProto checkpoints = 6;
    RouteImageProto main_image = 7;
}

// ref: Niantic.Titan.Protos.SubmitPoiImageProto
message SubmitPoiImageProto {
    string poi_id = 1;
    bool async_file_upload = 2;
}

// ref: Niantic.Titan.Protos.SubmitPoiLocationUpdateProto
message SubmitPoiLocationUpdateProto {
    string poi_id = 1;
    LocationE6Proto location = 2;
}

// ref: Niantic.Titan.Protos.SubmitPoiTakedownRequestProto
message SubmitPoiTakedownRequestProto {
    string poi_id = 1;
    PoiInvalidReason invalid_reason = 2;
}

// ref: Niantic.Titan.Protos.SubmitPoiTextMetadataUpdateProto
message SubmitPoiTextMetadataUpdateProto {
    string poi_id = 1;
    string title = 2;
    string description = 3;
}

// ref: Niantic.Titan.Protos.SubmitSponsorPoiLocationUpdateProto
message SubmitSponsorPoiLocationUpdateProto {
    string poi_id = 1;
    LocationE6Proto location = 2;
}

// ref: Niantic.Titan.Protos.SubmitSponsorPoiReportProto
message SubmitSponsorPoiReportProto {
    string poi_id = 1;
    SponsorPoiInvalidReason invalid_reason = 2;
    string additional_details = 3;
}

// ref: Niantic.Titan.Protos.TitanGameClientTelemetryOmniProto
message TitanGameClientTelemetryOmniProto {
    // ref: Niantic.Titan.Protos.TitanGameClientTelemetryOmniProto/TelemetryDataOneofCase
    //oneof TelemetryData {
        //none = 0;
        //poi_submission_telemetry = 1;
        //poi_submission_photo_upload_error_telemetry = 2;
        //player_metadata_telemetry = 3;
    //}

    PoiSubmissionTelemetry poi_submission_telemetry = 1;
    PoiSubmissionPhotoUploadErrorTelemetry poi_submission_photo_upload_error_telemetry = 2;
    PoiPlayerMetadataTelemetry player_metadata_telemetry = 3;
    PlatformServerData server_data = 1001;
}

// ref: Niantic.Titan.Protos.UploadPoiPhotoByUrlOutProto
message UploadPoiPhotoByUrlOutProto {
    PortalCurationImageResult.Result status = 1;
}

// ref: Niantic.Titan.Protos.UploadPoiPhotoByUrlProto
message UploadPoiPhotoByUrlProto {
    string request_id = 1;
    string image_url = 2;
}

//----- End protos -----
//------------------------------
//----- Begin protos -----

// ref: Niantic.Platform.Iap.Protos.AvailableSkuProto
message AvailableSkuProto {
    string id = 1;
    bool is_third_party_vendor_item = 2;
    repeated CurrencyQuantityProto price = 3;
    repeated CurrencyQuantityProto currency_granted = 4;
    repeated GameItemContentProto game_item_content = 5;
    repeated SkuPresentationProto presentation_data = 6;
    bool can_be_purchased = 7;
}

// ref: Niantic.Platform.Iap.Protos.CurrencyQuantityProto
message CurrencyQuantityProto {
    string currency_type = 1;
    int32 quantity = 2;
}

// ref: Niantic.Platform.Iap.Protos.CurrencyUpdateProto
message CurrencyUpdateProto {
    string currency_name = 1;
    int32 currency_delta = 2;
    int32 currency_balance = 3;
    int32 fiat_purchased_balance = 4;
}

// ref: Niantic.Platform.Iap.Protos.GameItemContentProto
message GameItemContentProto {
    string type = 1;
    int32 quantity = 2;
}

// ref: Niantic.Platform.Iap.Protos.GetAvailableSkusAndBalancesOutProto
message GetAvailableSkusAndBalancesOutProto {
    // ref: Niantic.Platform.Iap.Protos.GetAvailableSkusAndBalancesOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    repeated AvailableSkuProto available_sku = 1;
    repeated CurrencyQuantityProto balance = 2;
    string player_token = 3;
}

// ref: Niantic.Platform.Iap.Protos.GetAvailableSkusAndBalancesProto
message GetAvailableSkusAndBalancesProto {
}

// ref: Niantic.Platform.Iap.Protos.PurchaseSkuOutProto
message PurchaseSkuOutProto {
    // ref: Niantic.Platform.Iap.Protos.PurchaseSkuOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        BALANCE_TOO_LOW = 3;
        SKU_NOT_AVAILABLE = 4;
        OVER_INVENTORY_LIMIT = 5;
    }

}

// ref: Niantic.Platform.Iap.Protos.PurchaseSkuProto
message PurchaseSkuProto {
    string sku_id = 1;
}

// ref: Niantic.Platform.Iap.Protos.RedeemGoogleReceiptOutProto
message RedeemGoogleReceiptOutProto {
    // ref: Niantic.Platform.Iap.Protos.RedeemGoogleReceiptOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    string transaction_token = 1;
}

// ref: Niantic.Platform.Iap.Protos.RedeemGoogleReceiptProto
message RedeemGoogleReceiptProto {
    string receipt = 1;
    string receipt_signature = 2;
    string purchase_currency = 3;
    int32 price_paid_e6 = 4;
    int64 price_paid_e6_long = 5;
}

// ref: Niantic.Platform.Iap.Protos.SkuPresentationProto
message SkuPresentationProto {
    string key = 1;
    string value = 2;
}

//----- End protos -----
//------------------------------
//----- Begin protos -----

// ref: Niantic.Social.Protos.SocialAction
enum SocialAction {
    UNKNOWN_SOCIAL_ACTION = 0;
    SEARCH_PLAYER = 10000;
    SEND_FRIEND_INVITE = 10002;
    CANCEL_FRIEND_INVITE = 10003;
    ACCEPT_FRIEND_INVITE = 10004;
    DECLINE_FRIEND_INVITE = 10005;
    LIST_FRIENDS = 10006;
    LIST_OUTGOING_FRIEND_INVITES = 10007;
    LIST_INCOMING_FRIEND_INVITES = 10008;
    REMOVE_FRIEND = 10009;
    LIST_FRIEND_STATUS = 10010;
    SEND_FACEBOOK_FRIEND_INVITE = 10011;
    IS_MY_FRIEND = 10012;
    CREATE_INVITE_CODE = 10013;
    GET_FACEBOOK_FRIEND_LIST = 10014;
    UPDATE_FACEBOOK_STATUS = 10015;
    REGISTER_PUSH_NOTIFICATION = 10101;
    UNREGISTER_PUSH_NOTIFICATION = 10102;
    UPDATE_NOTIFICATION = 10103;
    OPT_OUT_PUSH_NOTIFICATION_CATEGORY = 10104;
    GET_INBOX = 10105;
}

//----- End protos -----
//------------------------------
//----- Begin quest -----

// ref: Niantic.Holoholo.Quest.PhoneBoothPresentationMode
enum PhoneBoothPresentationMode {
    NONE = 0;
    PORTRAIT = 1;
    DIALOG = 2;
}

//----- End quest -----
//------------------------------
//----- Begin rpc -----

// ref: Holoholo.Rpc.AssetTelemetryIds
enum AssetTelemetryIds {
    UNDEFINED_ASSET_EVENT = 0;
    DOWNLOAD_START = 1;
    DOWNLOAD_FINISHED = 2;
    DOWNLOAD_FAILED = 3;
    ASSET_RETRIEVED_FROM_CACHE = 4;
    CACHE_THRASH = 5;
}

// ref: Holoholo.Rpc.AvatarCustomizationTelemetryIds
enum AvatarCustomizationTelemetryIds {
    UNDEFINED_AVATAR_CUSTOMIZATION = 0;
    EQUIP_ITEM = 1;
    OPEN_FEATURES = 2;
    OPEN_STORE = 3;
    PURCHASE_ITEM = 4;
    PURCHASE_ERROR = 5;
    SELECT_ITEM_GROUP = 6;
    SELECT_SLOT = 7;
    SELECT_COLOR = 8;
    SHOW_QUICK_SHOP = 9;
}

// ref: Holoholo.Rpc.BattleHubSection
enum BattleHubSection {
    SECTION_UNSET = 0;
    SECTION_VS_SEEKER = 1;
    SECTION_CURR_SEASON = 2;
    SECTION_LAST_SEASON = 3;
    SECTION_NEARBY = 4;
    SECTION_TEAM_LEADERS = 5;
    SECTION_QR_CODE = 6;
}

// ref: Holoholo.Rpc.BattleHubSubsection
enum BattleHubSubsection {
    SUBSECTION_UNSET = 0;
    SUBSECTION_VS_CHARGING = 1;
    SUBSECTION_VS_FREE = 2;
    SUBSECTION_VS_PREMIUM = 3;
    SUBSECTION_NEARBY_TEAM_LEADERS = 4;
    SUBSECTION_NEARBY_QR_CODE = 5;
}

// ref: Holoholo.Rpc.BattlePartyTelemetryIds
enum BattlePartyTelemetryIds {
    UNDEFINED_BATTLE_PARTY_EVENT = 0;
    ADD = 1;
    REMOVE = 2;
    GYM_BATTLE = 3;
    RAID_BATTLE = 4;
    BATTLE_POKEMON_CHANGED = 5;
}

// ref: Holoholo.Rpc.BuddyActivity
enum BuddyActivity {
    BUDDY_ACTIVITY_UNSET = 0;
    BUDDY_ACTIVITY_FEED = 1;
    BUDDY_ACTIVITY_PET = 2;
    BUDDY_ACTIVITY_SNAPSHOT = 3;
    BUDDY_ACTIVITY_WALK = 4;
    BUDDY_ACTIVITY_NEW_POIS = 5;
    BUDDY_ACTIVITY_GYM_BATTLE = 6;
    BUDDY_ACTIVITY_RAID_BATTLE = 7;
    BUDDY_ACTIVITY_NPC_BATTLE = 8;
    BUDDY_ACTIVITY_PVP_BATTLE = 9;
    BUDDY_ACTIVITY_OPEN_SOUVENIRS = 10;
    BUDDY_ACTIVITY_OPEN_CONSUMABLES = 11;
    BUDDY_ACTIVITY_INVASION_GRUNT = 12;
    BUDDY_ACTIVITY_INVASION_LEADER = 13;
    BUDDY_ACTIVITY_INVASION_GIOVANNI = 14;
    BUDDY_ACTIVITY_ATTRACTIVE_POI = 15;
}

// ref: Holoholo.Rpc.BuddyActivityCategory
enum BuddyActivityCategory {
    BUDDY_CATEGORY_UNSET = 0;
    BUDDY_CATEGORY_FEED = 1;
    BUDDY_CATEGORY_CARE = 2;
    BUDDY_CATEGORY_SNAPSHOT = 3;
    BUDDY_CATEGORY_WALK = 4;
    BUDDY_CATEGORY_BATTLE = 5;
    BUDDY_CATEGORY_EXPLORE = 6;
    BUDDY_CATEGORY_BONUS = 7;
}

// ref: Holoholo.Rpc.BuddyAnimation
enum BuddyAnimation {
    BUDDY_ANIMATION_UNSET = 0;
    BUDDY_ANIMATION_HAPPY = 1;
    BUDDY_ANIMATION_HATE = 2;
}

// ref: Holoholo.Rpc.BuddyEmotionLevel
enum BuddyEmotionLevel {
    BUDDY_EMOTION_LEVEL_UNSET = 0;
    BUDDY_EMOTION_LEVEL_0 = 1;
    BUDDY_EMOTION_LEVEL_1 = 2;
    BUDDY_EMOTION_LEVEL_2 = 3;
    BUDDY_EMOTION_LEVEL_3 = 4;
    BUDDY_EMOTION_LEVEL_4 = 5;
    BUDDY_EMOTION_LEVEL_5 = 6;
    BUDDY_EMOTION_LEVEL_6 = 7;
}

// ref: Holoholo.Rpc.BuddyLevel
enum BuddyLevel {
    BUDDY_LEVEL_UNSET = 0;
    BUDDY_LEVEL_0 = 1;
    BUDDY_LEVEL_1 = 2;
    BUDDY_LEVEL_2 = 3;
    BUDDY_LEVEL_3 = 4;
    BUDDY_LEVEL_4 = 5;
    BUDDY_LEVEL_5 = 6;
}

// ref: Holoholo.Rpc.CameraInterpolation
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;
}

// ref: Holoholo.Rpc.CameraTarget
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;
}

// ref: Holoholo.Rpc.CombatHubEntranceTelemetryIds
enum CombatHubEntranceTelemetryIds {
    UNDEFINED_EVENT = 0;
    CLICKED_COMBAT_HUB_BUTTON = 1;
}

// ref: Holoholo.Rpc.CombatPlayerFinishState
enum CombatPlayerFinishState {
    WINNER = 0;
    LOSER = 1;
    DRAW = 2;
}

// ref: Holoholo.Rpc.CombatRewardStatus
enum CombatRewardStatus {
    UNSET_REWARD_STATUS = 0;
    REWARDS_GRANTED = 1;
    MAX_REWARDS_RECEIVED = 2;
    PLAYER_BAG_FULL = 3;
    NO_REWARDS = 4;
}

// ref: Holoholo.Rpc.CombatType
enum CombatType {
    COMBAT_TYPE_UNSET = 0;
    SOLO = 1;
    QR_CODE = 2;
    FRIENDS = 3;
    NEARBY = 4;
    SOLO_INVASION = 5;
    VS_SEEKER = 6;
}

// ref: Holoholo.Rpc.DeviceServiceTelemetryIds
enum DeviceServiceTelemetryIds {
    UNDEFINED_DEVICE_SERVICE = 0;
    FITNESS = 1;
    SMART_WATCH = 2;
    SFIDA = 3;
    AWARENESS = 4;
    ADVENTURE_SYNC = 5;
}

// ref: Holoholo.Rpc.EggIncubatorType
enum EggIncubatorType {
    INCUBATOR_UNSET = 0;
    INCUBATOR_DISTANCE = 1;
}

// ref: Holoholo.Rpc.EncounterType
enum EncounterType {
    SPAWN_POINT = 0;
    INCENSE = 1;
    DISK = 2;
    POST_RAID = 3;
    STORY_QUEST = 4;
    QUEST_STAMP_CARD = 5;
    CHALLENGE_QUEST = 6;
    PHOTOBOMB = 7;
    INVASION = 8;
    VS_SEEKER_REWARD = 9;
    TIMED_STORY_QUEST = 10;
}

// ref: Holoholo.Rpc.FortType
enum FortType {
    GYM = 0;
    CHECKPOINT = 1;
}

// ref: Holoholo.Rpc.FriendshipLevelMilestone
enum FriendshipLevelMilestone {
    FRIENDSHIP_LEVEL_UNSET = 0;
    FRIENDSHIP_LEVEL_0 = 1;
    FRIENDSHIP_LEVEL_1 = 2;
    FRIENDSHIP_LEVEL_2 = 3;
    FRIENDSHIP_LEVEL_3 = 4;
    FRIENDSHIP_LEVEL_4 = 5;
}

// ref: Holoholo.Rpc.GenericClickTelemetryIds
enum GenericClickTelemetryIds {
    UNDEFINED_GENERIC_EVENT = 0;
    SPEED_WARNING_SHOW = 1;
    SPEED_WARNING_PASSENGER = 2;
}

// ref: Holoholo.Rpc.GymBadgeType
enum GymBadgeType {
    GYM_BADGE_UNSET = 0;
    GYM_BADGE_VANILLA = 1;
    GYM_BADGE_BRONZE = 2;
    GYM_BADGE_SILVER = 3;
    GYM_BADGE_GOLD = 4;
}

// ref: Holoholo.Rpc.HoloActivityType
enum HoloActivityType {
    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;
    ACTIVITY_CATCH_FIRST_CATCH_STREAK_BONUS = 24;
    ACTIVITY_SEARCH_FORT_FIRST_OF_THE_DAY = 25;
    ACTIVITY_SEARCH_FORT_STREAK_BONUS = 26;
    ACTIVITY_DEFEAT_RAID_POKEMON = 27;
    ACTIVITY_FEED_BERRY = 28;
    ACTIVITY_SEARCH_GYM = 29;
    ACTIVITY_NEW_POKESTOP = 30;
    ACTIVITY_GYM_BATTLE_LOSS = 31;
    ACTIVITY_CATCH_AR_PLUS_BONUS = 32;
    ACTIVITY_CATCH_QUEST_POKEMON_ENCOUNTER = 33;
    ACTIVITY_FRIENDSHIP_LEVEL_UP_0 = 35;
    ACTIVITY_FRIENDSHIP_LEVEL_UP_1 = 36;
    ACTIVITY_FRIENDSHIP_LEVEL_UP_2 = 37;
    ACTIVITY_FRIENDSHIP_LEVEL_UP_3 = 38;
    ACTIVITY_FRIENDSHIP_LEVEL_UP_4 = 39;
    ACTIVITY_SEND_GIFT = 40;
    ACTIVITY_SHARE_EX_RAID_PASS = 41;
    ACTIVITY_RAID_LEVEL_1_ADDITIONAL_XP = 42;
    ACTIVITY_RAID_LEVEL_2_ADDITIONAL_XP = 43;
    ACTIVITY_RAID_LEVEL_3_ADDITIONAL_XP = 44;
    ACTIVITY_RAID_LEVEL_4_ADDITIONAL_XP = 45;
    ACTIVITY_RAID_LEVEL_5_ADDITIONAL_XP = 46;
    ACTIVITY_HATCH_EGG_SHADOW = 47;
    ACTIVITY_HATCH_EGG_GIFT = 48;
    ACTIVITY_REMOTE_DEFEAT_RAID_POKEMON = 49;
    ACTIVITY_REMOTE_RAID_LEVEL_1_ADDITIONAL_XP = 50;
    ACTIVITY_REMOTE_RAID_LEVEL_2_ADDITIONAL_XP = 51;
    ACTIVITY_REMOTE_RAID_LEVEL_3_ADDITIONAL_XP = 52;
    ACTIVITY_REMOTE_RAID_LEVEL_4_ADDITIONAL_XP = 53;
    ACTIVITY_REMOTE_RAID_LEVEL_5_ADDITIONAL_XP = 54;
}

// ref: Holoholo.Rpc.HoloBadgeType
enum HoloBadgeType {
    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;
    BADGE_UNOWN = 38;
    BADGE_POKEDEX_ENTRIES_GEN2 = 39;
    BADGE_RAID_BATTLE_WON = 40;
    BADGE_LEGENDARY_BATTLE_WON = 41;
    BADGE_BERRIES_FED = 42;
    BADGE_HOURS_DEFENDED = 43;
    BADGE_PLACE_HOLDER = 44;
    BADGE_POKEDEX_ENTRIES_GEN3 = 45;
    BADGE_CHALLENGE_QUESTS = 46;
    BADGE_MEW_ENCOUNTER = 47;
    BADGE_MAX_LEVEL_FRIENDS = 48;
    BADGE_TRADING = 49;
    BADGE_TRADING_DISTANCE = 50;
    BADGE_POKEDEX_ENTRIES_GEN4 = 51;
    BADGE_GREAT_LEAGUE = 52;
    BADGE_ULTRA_LEAGUE = 53;
    BADGE_MASTER_LEAGUE = 54;
    BADGE_PHOTOBOMB = 55;
    BADGE_POKEDEX_ENTRIES_GEN5 = 56;
    BADGE_POKEMON_PURIFIED = 57;
    BADGE_ROCKET_GRUNTS_DEFEATED = 58;
    BADGE_ROCKET_GIOVANNI_DEFEATED = 59;
    BADGE_BUDDY_BEST = 60;
    BADGE_POKEDEX_ENTRIES_GEN6 = 61;
    BADGE_POKEDEX_ENTRIES_GEN7 = 62;
    BADGE_POKEDEX_ENTRIES_GEN8 = 63;
    BADGE_WAYFARER = 68;
    BADGE_EVENT_MIN = 2000;
    BADGE_CHICAGO_FEST_JULY_2017 = 2001;
    BADGE_PIKACHU_OUTBREAK_YOKOHAMA_2017 = 2002;
    BADGE_SAFARI_ZONE_EUROPE_2017 = 2003;
    BADGE_SAFARI_ZONE_EUROPE_2017_10_07 = 2004;
    BADGE_SAFARI_ZONE_EUROPE_2017_10_14 = 2005;
    BADGE_CHICAGO_FEST_JULY_2018_SAT_NORTH = 2006;
    BADGE_CHICAGO_FEST_JULY_2018_SAT_SOUTH = 2007;
    BADGE_CHICAGO_FEST_JULY_2018_SUN_NORTH = 2008;
    BADGE_CHICAGO_FEST_JULY_2018_SUN_SOUTH = 2009;
    BADGE_APAC_PARTNER_JULY_2018_0 = 2010;
    BADGE_APAC_PARTNER_JULY_2018_1 = 2011;
    BADGE_APAC_PARTNER_JULY_2018_2 = 2012;
    BADGE_APAC_PARTNER_JULY_2018_3 = 2013;
    BADGE_APAC_PARTNER_JULY_2018_4 = 2014;
    BADGE_APAC_PARTNER_JULY_2018_5 = 2015;
    BADGE_APAC_PARTNER_JULY_2018_6 = 2016;
    BADGE_APAC_PARTNER_JULY_2018_7 = 2017;
    BADGE_APAC_PARTNER_JULY_2018_8 = 2018;
    BADGE_APAC_PARTNER_JULY_2018_9 = 2019;
    BADGE_YOKOSUKA_29_AUG_2018_MIKASA = 2020;
    BADGE_YOKOSUKA_29_AUG_2018_VERNY = 2021;
    BADGE_YOKOSUKA_29_AUG_2018_KURIHAMA = 2022;
    BADGE_YOKOSUKA_30_AUG_2018_MIKASA = 2023;
    BADGE_YOKOSUKA_30_AUG_2018_VERNY = 2024;
    BADGE_YOKOSUKA_30_AUG_2018_KURIHAMA = 2025;
    BADGE_YOKOSUKA_31_AUG_2018_MIKASA = 2026;
    BADGE_YOKOSUKA_31_AUG_2018_VERNY = 2027;
    BADGE_YOKOSUKA_31_AUG_2018_KURIHAMA = 2028;
    BADGE_YOKOSUKA_1_SEP_2018_MIKASA = 2029;
    BADGE_YOKOSUKA_1_SEP_2018_VERNY = 2030;
    BADGE_YOKOSUKA_1_SEP_2018_KURIHAMA = 2031;
    BADGE_YOKOSUKA_2_SEP_2018_MIKASA = 2032;
    BADGE_YOKOSUKA_2_SEP_2018_VERNY = 2033;
    BADGE_YOKOSUKA_2_SEP_2018_KURIHAMA = 2034;
    BADGE_TOP_BANANA_1 = 2035;
    BADGE_TOP_BANANA_2 = 2036;
    BADGE_TOP_BANANA_3 = 2037;
    BADGE_PARTNER_EVENT_2019_0 = 2038;
    BADGE_PARTNER_EVENT_2019_1 = 2039;
    BADGE_PARTNER_EVENT_2019_2 = 2040;
    BADGE_PARTNER_EVENT_2019_3 = 2041;
    BADGE_PARTNER_EVENT_2019_4 = 2042;
    BADGE_PARTNER_EVENT_2019_5 = 2043;
    BADGE_PARTNER_EVENT_2019_6 = 2044;
    BADGE_PARTNER_EVENT_2019_7 = 2045;
    BADGE_PARTNER_EVENT_2019_8 = 2046;
    BADGE_PARTNER_EVENT_2019_9 = 2047;
    BADGE_SENTOSA_18_APR_2019 = 2048;
    BADGE_SENTOSA_19_APR_2019 = 2049;
    BADGE_SENTOSA_20_APR_2019 = 2050;
    BADGE_SENTOSA_21_APR_2019 = 2051;
    BADGE_SENTOSA_22_APR_2019 = 2052;
    BADGE_CITY_EXPLORER_PASS_00 = 2053;
    BADGE_CITY_EXPLORER_PASS_01 = 2054;
    BADGE_CITY_EXPLORER_PASS_02 = 2055;
    BADGE_CITY_EXPLORER_PASS_03 = 2056;
    BADGE_CITY_EXPLORER_PASS_04 = 2057;
    BADGE_CITY_EXPLORER_PASS_05 = 2058;
    BADGE_CITY_EXPLORER_PASS_06 = 2059;
    BADGE_CITY_EXPLORER_PASS_07 = 2060;
    BADGE_CITY_EXPLORER_PASS_08 = 2061;
    BADGE_CITY_EXPLORER_PASS_09 = 2062;
    BADGE_CITY_EXPLORER_PASS_10 = 2063;
    BADGE_CITY_EXPLORER_PASS_11 = 2064;
    BADGE_CITY_EXPLORER_PASS_12 = 2065;
    BADGE_CITY_EXPLORER_PASS_13 = 2066;
    BADGE_CITY_EXPLORER_PASS_14 = 2067;
    BADGE_CITY_EXPLORER_PASS_15 = 2068;
    BADGE_CITY_EXPLORER_PASS_16 = 2069;
    BADGE_CITY_EXPLORER_PASS_17 = 2070;
    BADGE_CITY_EXPLORER_PASS_18 = 2071;
    BADGE_CITY_EXPLORER_PASS_19 = 2072;
    BADGE_CITY_EXPLORER_PASS_20 = 2073;
    BADGE_CITY_EXPLORER_PASS_21 = 2074;
    BADGE_CITY_EXPLORER_PASS_22 = 2075;
    BADGE_CITY_EXPLORER_PASS_23 = 2076;
    BADGE_CITY_EXPLORER_PASS_24 = 2077;
    BADGE_CITY_EXPLORER_PASS_25 = 2078;
    BADGE_CITY_EXPLORER_PASS_26 = 2079;
    BADGE_CITY_EXPLORER_PASS_27 = 2080;
    BADGE_CITY_EXPLORER_PASS_28 = 2081;
    BADGE_CITY_EXPLORER_PASS_29 = 2082;
    BADGE_CITY_EXPLORER_PASS_30 = 2083;
    BADGE_CITY_EXPLORER_PASS_31 = 2084;
    BADGE_CITY_EXPLORER_PASS_32 = 2085;
    BADGE_CITY_EXPLORER_PASS_33 = 2086;
    BADGE_CITY_EXPLORER_PASS_34 = 2087;
    BADGE_CITY_EXPLORER_PASS_35 = 2088;
    BADGE_CITY_EXPLORER_PASS_36 = 2089;
    BADGE_CITY_EXPLORER_PASS_37 = 2090;
    BADGE_CITY_EXPLORER_PASS_38 = 2091;
    BADGE_CITY_EXPLORER_PASS_39 = 2092;
    BADGE_CITY_EXPLORER_PASS_40 = 2093;
    BADGE_DYNAMIC_EVENT_MIN = 5000;
    BADGE_GOFEST_2019_AMERICAS_DAY_00_NORTH_GENERAL = 5001;
    BADGE_GOFEST_2019_AMERICAS_DAY_00_NORTH_EARLYACCESS = 5002;
    BADGE_GOFEST_2019_AMERICAS_DAY_00_SOUTH_GENERAL = 5003;
    BADGE_GOFEST_2019_AMERICAS_DAY_00_SOUTH_EARLYACCESS = 5004;
    BADGE_GOFEST_2019_AMERICAS_DAY_01_NORTH_GENERAL = 5005;
    BADGE_GOFEST_2019_AMERICAS_DAY_01_NORTH_EARLYACCESS = 5006;
    BADGE_GOFEST_2019_AMERICAS_DAY_01_SOUTH_GENERAL = 5007;
    BADGE_GOFEST_2019_AMERICAS_DAY_01_SOUTH_EARLYACCESS = 5008;
    BADGE_GOFEST_2019_AMERICAS_DAY_02_NORTH_GENERAL = 5009;
    BADGE_GOFEST_2019_AMERICAS_DAY_02_NORTH_EARLYACCESS = 5010;
    BADGE_GOFEST_2019_AMERICAS_DAY_02_SOUTH_GENERAL = 5011;
    BADGE_GOFEST_2019_AMERICAS_DAY_02_SOUTH_EARLYACCESS = 5012;
    BADGE_GOFEST_2019_AMERICAS_DAY_03_NORTH_GENERAL = 5013;
    BADGE_GOFEST_2019_AMERICAS_DAY_03_NORTH_EARLYACCESS = 5014;
    BADGE_GOFEST_2019_AMERICAS_DAY_03_SOUTH_GENERAL = 5015;
    BADGE_GOFEST_2019_AMERICAS_DAY_03_SOUTH_EARLYACCESS = 5016;
    BADGE_GOFEST_2019_AMERICAS_DAY_04_NORTH_GENERAL = 5017;
    BADGE_GOFEST_2019_AMERICAS_DAY_04_NORTH_EARLYACCESS = 5018;
    BADGE_GOFEST_2019_AMERICAS_DAY_04_SOUTH_GENERAL = 5019;
    BADGE_GOFEST_2019_AMERICAS_DAY_04_SOUTH_EARLYACCESS = 5020;
    BADGE_GOFEST_2019_EMEA_DAY_00_GENERAL = 5021;
    BADGE_GOFEST_2019_EMEA_DAY_00_EARLYACCESS = 5022;
    BADGE_GOFEST_2019_EMEA_DAY_01_GENERAL = 5023;
    BADGE_GOFEST_2019_EMEA_DAY_01_EARLYACCESS = 5024;
    BADGE_GOFEST_2019_EMEA_DAY_02_GENERAL = 5025;
    BADGE_GOFEST_2019_EMEA_DAY_02_EARLYACCESS = 5026;
    BADGE_GOFEST_2019_EMEA_DAY_03_GENERAL = 5027;
    BADGE_GOFEST_2019_EMEA_DAY_03_EARLYACCESS = 5028;
    BADGE_GOFEST_2019_EMEA_DAY_04_GENERAL = 5029;
    BADGE_GOFEST_2019_EMEA_DAY_04_EARLYACCESS = 5030;
    BADGE_GOFEST_2019_APAC_DAY_00_GENERAL = 5031;
    BADGE_GOFEST_2019_APAC_DAY_01_GENERAL = 5032;
    BADGE_GOFEST_2019_APAC_DAY_02_GENERAL = 5033;
    BADGE_GOFEST_2019_APAC_DAY_03_GENERAL = 5034;
    BADGE_GOFEST_2019_APAC_DAY_04_GENERAL = 5035;
    BADGE_GOFEST_2019_APAC_DAY_05_GENERAL = 5036;
    BADGE_GOFEST_2019_APAC_DAY_06_GENERAL = 5037;
    BADGE_GOFEST_2019_APAC_DAY_07_GENERAL = 5038;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_00_GENERAL = 5039;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_00_EARLYACCESS = 5040;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_01_GENERAL = 5041;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_01_EARLYACCESS = 5042;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_02_GENERAL = 5043;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_02_EARLYACCESS = 5044;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_03_GENERAL = 5045;
    BADGE_SAFARIZONE_2019_MONTREAL_DAY_03_EARLYACCESS = 5046;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_00_GENERAL = 5047;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_00_EARLYACCESS = 5048;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_01_GENERAL = 5049;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_01_EARLYACCESS = 5050;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_02_GENERAL = 5051;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_02_EARLYACCESS = 5052;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_03_GENERAL = 5053;
    BADGE_SAFARIZONE_2020_STLOUIS_DAY_03_EARLYACCESS = 5054;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_00_GENERAL = 5055;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_00_EARLYACCESS = 5056;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_01_GENERAL = 5057;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_01_EARLYACCESS = 5058;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_02_GENERAL = 5059;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_02_EARLYACCESS = 5060;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_03_GENERAL = 5061;
    BADGE_SAFARIZONE_2020_LIVERPOOL_DAY_03_EARLYACCESS = 5062;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_00_GENERAL = 5063;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_00_EARLYACCESS = 5064;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_01_GENERAL = 5065;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_01_EARLYACCESS = 5066;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_02_GENERAL = 5067;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_02_EARLYACCESS = 5068;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_03_GENERAL = 5069;
    BADGE_SAFARIZONE_2020_PHILADELPHIA_DAY_03_EARLYACCESS = 5070;
    BADGE_GLOBAL_TICKETED_EVENT = 5100;
    BADGE_EVENT_0001 = 5201;
    BADGE_EVENT_0002 = 5202;
    BADGE_EVENT_0003 = 5203;
    BADGE_EVENT_0004 = 5204;
    BADGE_EVENT_0005 = 5205;
    BADGE_EVENT_0006 = 5206;
    BADGE_EVENT_0007 = 5207;
    BADGE_EVENT_0008 = 5208;
    BADGE_EVENT_0009 = 5209;
    BADGE_EVENT_0010 = 5210;
}

// ref: Holoholo.Rpc.HoloholoClientTelemetryIds
enum HoloholoClientTelemetryIds {
    UNDEFINED = 0;
    BOOT_TIME = 1;
    FRAME_RATE = 2;
    GENERIC_CLICK = 3;
    MAP_EVENT = 4;
    SPIN_POKESTOP = 5;
    PROFILE_PAGE = 6;
    SHOPPING_PAGE = 7;
    ENCOUNTER_POKEMON = 8;
    CATCH_POKEMON = 9;
    DEPLOY_POKEMON = 10;
    FEED_POKEMON = 11;
    EVOLVE_POKEMON = 12;
    RELEASE_POKEMON = 13;
    NICKNAME_POKEMON = 14;
    NEWS_PAGE = 15;
    ITEM = 16;
    BATTLE_PARTY = 17;
    PASSCODE_REDEEM = 18;
    LINK_LOGIN = 19;
    RAID = 20;
    PUSH_NOTIFICATION = 21;
    AVATAR_CUSTOMIZATION = 22;
    READ_POINT_OF_INTEREST_DESCRIPTION = 23;
    WEB = 24;
    CHANGE_AR = 25;
    WEATHER_DETAIL_CLICK = 26;
    USER_ISSUE_WEATHER_REPORT = 27;
    POKEMON_INVENTORY = 28;
    SOCIAL = 29;
    CHECK_ENCOUNTER_TRAY_INFO = 30;
    POKEMON_GO_PLUS = 31;
    RPC_TIMING = 32;
    SOCIAL_GIFT_COUNT = 33;
    ASSET_BUNDLE_DOWNLOAD = 34;
    ASSET_POI_DOWNLOAD = 35;
    ASSET_STREAM_DOWNLOAD = 36;
    ASSET_STREAM_CACHE_CULLED = 37;
    RPC_SOCKET_TIMING = 38;
    PERMISSIONS_FLOW = 39;
    DEVICE_SERVICE_TOGGLE = 40;
    BOOT_TELEMETRY = 41;
    AR_PHOTO_SESSION_TELEMETRY = 42;
    LEAVE_POINT_OF_INTEREST = 43;
    VIEW_POINT_OF_INTEREST_IMAGE = 44;
    COMBAT_HUB_ENTRANCE_TELEMETRY = 45;
    DEVICE_SPECIFICATIONS_TELEMETRY = 46;
    SCREEN_RESOLUTION_TELEMETRY = 47;
}

// ref: Holoholo.Rpc.HoloIapItemCategory
enum HoloIapItemCategory {
    IAP_CATEGORY_NONE = 0;
    IAP_CATEGORY_BUNDLE = 1;
    IAP_CATEGORY_ITEMS = 2;
    IAP_CATEGORY_UPGRADES = 3;
    IAP_CATEGORY_POKECOINS = 4;
    IAP_CATEGORY_AVATAR = 5;
    IAP_CATEGORY_AVATAR_STORE_LINK = 6;
    IAP_CATEGORY_TEAM_CHANGE = 7;
    IAP_CATEGORY_GLOBAL_EVENT_TICKET = 10;
    IAP_CATEGORY_VS_SEEKER = 11;
}

// ref: Holoholo.Rpc.HoloItemCategory
enum HoloItemCategory {
    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;
    ITEM_CATEGORY_EVOLUTION_REQUIREMENT = 12;
    ITEM_CATEGORY_MOVE_REROLL = 13;
    ITEM_CATEGORY_CANDY = 14;
    ITEM_CATEGORY_RAID_TICKET = 15;
    ITEM_CATEGORY_STARDUST_BOOST = 16;
    ITEM_CATEGORY_FRIEND_GIFT_BOX = 17;
    ITEM_CATEGORY_TEAM_CHANGE = 18;
    ITEM_CATEGORY_VS_SEEKER = 20;
    ITEM_CATEGORY_INCIDENT_TICKET = 21;
    ITEM_CATEGORY_GLOBAL_EVENT_TICKET = 22;
    ITEM_CATEGORY_BUDDY_EXCLUSIVE_FOOD = 23;
}

// ref: Holoholo.Rpc.HoloItemEffect
enum HoloItemEffect {
    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;
    ITEM_EFFECT_CANDY_AWARD = 1015;
    ITEM_EFFECT_FULL_MOTIVATION = 1016;
}

// ref: Holoholo.Rpc.HoloItemType
enum HoloItemType {
    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;
    ITEM_TYPE_EVOLUTION_REQUIREMENT = 13;
    ITEM_TYPE_MOVE_REROLL = 14;
    ITEM_TYPE_CANDY = 15;
    ITEM_TYPE_RAID_TICKET = 16;
    ITEM_TYPE_STARDUST_BOOST = 17;
    ITEM_TYPE_FRIEND_GIFT_BOX = 18;
    ITEM_TYPE_TEAM_CHANGE = 19;
    ITEM_TYPE_VS_SEEKER_BATTLE_NOW = 21;
    ITEM_TYPE_INCIDENT_TICKET = 22;
    ITEM_TYPE_GLOBAL_EVENT_TICKET = 23;
}

// ref: Holoholo.Rpc.HoloPokemonClass
enum HoloPokemonClass {
    POKEMON_CLASS_NORMAL = 0;
    POKEMON_CLASS_LEGENDARY = 1;
    POKEMON_CLASS_MYTHIC = 2;
}

// ref: Holoholo.Rpc.HoloPokemonEggType
enum HoloPokemonEggType {
    EGG_TYPE_UNSET = 0;
    EGG_TYPE_SHADOW = 1;
}

// ref: Holoholo.Rpc.HoloPokemonFamilyId
enum HoloPokemonFamilyId {
    FAMILY_UNSET = 0;
    V0001_FAMILY_BULBASAUR = 1;
    V0004_FAMILY_CHARMANDER = 4;
    V0007_FAMILY_SQUIRTLE = 7;
    V0010_FAMILY_CATERPIE = 10;
    V0013_FAMILY_WEEDLE = 13;
    V0016_FAMILY_PIDGEY = 16;
    V0019_FAMILY_RATTATA = 19;
    V0021_FAMILY_SPEAROW = 21;
    V0023_FAMILY_EKANS = 23;
    V0025_FAMILY_PIKACHU = 25;
    V0027_FAMILY_SANDSHREW = 27;
    V0029_FAMILY_NIDORAN = 29;
    V0032_FAMILY_NIDORAN = 32;
    V0035_FAMILY_CLEFAIRY = 35;
    V0037_FAMILY_VULPIX = 37;
    V0039_FAMILY_JIGGLYPUFF = 39;
    V0041_FAMILY_ZUBAT = 41;
    V0043_FAMILY_ODDISH = 43;
    V0046_FAMILY_PARAS = 46;
    V0048_FAMILY_VENONAT = 48;
    V0050_FAMILY_DIGLETT = 50;
    V0052_FAMILY_MEOWTH = 52;
    V0054_FAMILY_PSYDUCK = 54;
    V0056_FAMILY_MANKEY = 56;
    V0058_FAMILY_GROWLITHE = 58;
    V0060_FAMILY_POLIWAG = 60;
    V0063_FAMILY_ABRA = 63;
    V0066_FAMILY_MACHOP = 66;
    V0069_FAMILY_BELLSPROUT = 69;
    V0072_FAMILY_TENTACOOL = 72;
    V0074_FAMILY_GEODUDE = 74;
    V0077_FAMILY_PONYTA = 77;
    V0079_FAMILY_SLOWPOKE = 79;
    V0081_FAMILY_MAGNEMITE = 81;
    V0083_FAMILY_FARFETCHD = 83;
    V0084_FAMILY_DODUO = 84;
    V0086_FAMILY_SEEL = 86;
    V0088_FAMILY_GRIMER = 88;
    V0090_FAMILY_SHELLDER = 90;
    V0092_FAMILY_GASTLY = 92;
    V0095_FAMILY_ONIX = 95;
    V0096_FAMILY_DROWZEE = 96;
    V0098_FAMILY_KRABBY = 98;
    V0100_FAMILY_VOLTORB = 100;
    V0102_FAMILY_EXEGGCUTE = 102;
    V0104_FAMILY_CUBONE = 104;
    V0106_FAMILY_HITMONLEE = 106;
    V0107_FAMILY_HITMONCHAN = 107;
    V0108_FAMILY_LICKITUNG = 108;
    V0109_FAMILY_KOFFING = 109;
    V0111_FAMILY_RHYHORN = 111;
    V0113_FAMILY_CHANSEY = 113;
    V0114_FAMILY_TANGELA = 114;
    V0115_FAMILY_KANGASKHAN = 115;
    V0116_FAMILY_HORSEA = 116;
    V0118_FAMILY_GOLDEEN = 118;
    V0120_FAMILY_STARYU = 120;
    V0122_FAMILY_MR_MIME = 122;
    V0123_FAMILY_SCYTHER = 123;
    V0124_FAMILY_JYNX = 124;
    V0125_FAMILY_ELECTABUZZ = 125;
    V0126_FAMILY_MAGMAR = 126;
    V0127_FAMILY_PINSIR = 127;
    V0128_FAMILY_TAUROS = 128;
    V0129_FAMILY_MAGIKARP = 129;
    V0131_FAMILY_LAPRAS = 131;
    V0132_FAMILY_DITTO = 132;
    V0133_FAMILY_EEVEE = 133;
    V0137_FAMILY_PORYGON = 137;
    V0138_FAMILY_OMANYTE = 138;
    V0140_FAMILY_KABUTO = 140;
    V0142_FAMILY_AERODACTYL = 142;
    V0143_FAMILY_SNORLAX = 143;
    V0144_FAMILY_ARTICUNO = 144;
    V0145_FAMILY_ZAPDOS = 145;
    V0146_FAMILY_MOLTRES = 146;
    V0147_FAMILY_DRATINI = 147;
    V0150_FAMILY_MEWTWO = 150;
    V0151_FAMILY_MEW = 151;
    V0152_FAMILY_CHIKORITA = 152;
    V0155_FAMILY_CYNDAQUIL = 155;
    V0158_FAMILY_TOTODILE = 158;
    V0161_FAMILY_SENTRET = 161;
    V0163_FAMILY_HOOTHOOT = 163;
    V0165_FAMILY_LEDYBA = 165;
    V0167_FAMILY_SPINARAK = 167;
    V0170_FAMILY_CHINCHOU = 170;
    V0175_FAMILY_TOGEPI = 175;
    V0177_FAMILY_NATU = 177;
    V0179_FAMILY_MAREEP = 179;
    V0183_FAMILY_MARILL = 183;
    V0185_FAMILY_SUDOWOODO = 185;
    V0187_FAMILY_HOPPIP = 187;
    V0190_FAMILY_AIPOM = 190;
    V0191_FAMILY_SUNKERN = 191;
    V0193_FAMILY_YANMA = 193;
    V0194_FAMILY_WOOPER = 194;
    V0198_FAMILY_MURKROW = 198;
    V0200_FAMILY_MISDREAVUS = 200;
    V0201_FAMILY_UNOWN = 201;
    V0202_FAMILY_WOBBUFFET = 202;
    V0203_FAMILY_GIRAFARIG = 203;
    V0204_FAMILY_PINECO = 204;
    V0206_FAMILY_DUNSPARCE = 206;
    V0207_FAMILY_GLIGAR = 207;
    V0209_FAMILY_SNUBBULL = 209;
    V0211_FAMILY_QWILFISH = 211;
    V0213_FAMILY_SHUCKLE = 213;
    V0214_FAMILY_HERACROSS = 214;
    V0215_FAMILY_SNEASEL = 215;
    V0216_FAMILY_TEDDIURSA = 216;
    V0218_FAMILY_SLUGMA = 218;
    V0220_FAMILY_SWINUB = 220;
    V0222_FAMILY_CORSOLA = 222;
    V0223_FAMILY_REMORAID = 223;
    V0225_FAMILY_DELIBIRD = 225;
    V0226_FAMILY_MANTINE = 226;
    V0227_FAMILY_SKARMORY = 227;
    V0228_FAMILY_HOUNDOUR = 228;
    V0231_FAMILY_PHANPY = 231;
    V0234_FAMILY_STANTLER = 234;
    V0235_FAMILY_SMEARGLE = 235;
    V0236_FAMILY_TYROGUE = 236;
    V0241_FAMILY_MILTANK = 241;
    V0243_FAMILY_RAIKOU = 243;
    V0244_FAMILY_ENTEI = 244;
    V0245_FAMILY_SUICUNE = 245;
    V0246_FAMILY_LARVITAR = 246;
    V0249_FAMILY_LUGIA = 249;
    V0250_FAMILY_HO_OH = 250;
    V0251_FAMILY_CELEBI = 251;
    V0252_FAMILY_TREECKO = 252;
    V0255_FAMILY_TORCHIC = 255;
    V0258_FAMILY_MUDKIP = 258;
    V0261_FAMILY_POOCHYENA = 261;
    V0263_FAMILY_ZIGZAGOON = 263;
    V0265_FAMILY_WURMPLE = 265;
    V0270_FAMILY_LOTAD = 270;
    V0273_FAMILY_SEEDOT = 273;
    V0276_FAMILY_TAILLOW = 276;
    V0278_FAMILY_WINGULL = 278;
    V0280_FAMILY_RALTS = 280;
    V0283_FAMILY_SURSKIT = 283;
    V0285_FAMILY_SHROOMISH = 285;
    V0287_FAMILY_SLAKOTH = 287;
    V0290_FAMILY_NINCADA = 290;
    V0293_FAMILY_WHISMUR = 293;
    V0296_FAMILY_MAKUHITA = 296;
    V0299_FAMILY_NOSEPASS = 299;
    V0300_FAMILY_SKITTY = 300;
    V0302_FAMILY_SABLEYE = 302;
    V0303_FAMILY_MAWILE = 303;
    V0304_FAMILY_ARON = 304;
    V0307_FAMILY_MEDITITE = 307;
    V0309_FAMILY_ELECTRIKE = 309;
    V0311_FAMILY_PLUSLE = 311;
    V0312_FAMILY_MINUN = 312;
    V0313_FAMILY_VOLBEAT = 313;
    V0314_FAMILY_ILLUMISE = 314;
    V0315_FAMILY_ROSELIA = 315;
    V0316_FAMILY_GULPIN = 316;
    V0318_FAMILY_CARVANHA = 318;
    V0320_FAMILY_WAILMER = 320;
    V0322_FAMILY_NUMEL = 322;
    V0324_FAMILY_TORKOAL = 324;
    V0325_FAMILY_SPOINK = 325;
    V0327_FAMILY_SPINDA = 327;
    V0328_FAMILY_TRAPINCH = 328;
    V0331_FAMILY_CACNEA = 331;
    V0333_FAMILY_SWABLU = 333;
    V0335_FAMILY_ZANGOOSE = 335;
    V0336_FAMILY_SEVIPER = 336;
    V0337_FAMILY_LUNATONE = 337;
    V0338_FAMILY_SOLROCK = 338;
    V0339_FAMILY_BARBOACH = 339;
    V0341_FAMILY_CORPHISH = 341;
    V0343_FAMILY_BALTOY = 343;
    V0345_FAMILY_LILEEP = 345;
    V0347_FAMILY_ANORITH = 347;
    V0349_FAMILY_FEEBAS = 349;
    V0351_FAMILY_CASTFORM = 351;
    V0352_FAMILY_KECLEON = 352;
    V0353_FAMILY_SHUPPET = 353;
    V0355_FAMILY_DUSKULL = 355;
    V0357_FAMILY_TROPIUS = 357;
    V0358_FAMILY_CHIMECHO = 358;
    V0359_FAMILY_ABSOL = 359;
    V0361_FAMILY_SNORUNT = 361;
    V0363_FAMILY_SPHEAL = 363;
    V0366_FAMILY_CLAMPERL = 366;
    V0369_FAMILY_RELICANTH = 369;
    V0370_FAMILY_LUVDISC = 370;
    V0371_FAMILY_BAGON = 371;
    V0374_FAMILY_BELDUM = 374;
    V0377_FAMILY_REGIROCK = 377;
    V0378_FAMILY_REGICE = 378;
    V0379_FAMILY_REGISTEEL = 379;
    V0380_FAMILY_LATIAS = 380;
    V0381_FAMILY_LATIOS = 381;
    V0382_FAMILY_KYOGRE = 382;
    V0383_FAMILY_GROUDON = 383;
    V0384_FAMILY_RAYQUAZA = 384;
    V0385_FAMILY_JIRACHI = 385;
    V0386_FAMILY_DEOXYS = 386;
    V0387_FAMILY_TURTWIG = 387;
    V0390_FAMILY_CHIMCHAR = 390;
    V0393_FAMILY_PIPLUP = 393;
    V0396_FAMILY_STARLY = 396;
    V0399_FAMILY_BIDOOF = 399;
    V0401_FAMILY_KRICKETOT = 401;
    V0403_FAMILY_SHINX = 403;
    V0408_FAMILY_CRANIDOS = 408;
    V0410_FAMILY_SHIELDON = 410;
    V0412_FAMILY_BURMY = 412;
    V0415_FAMILY_COMBEE = 415;
    V0417_FAMILY_PACHIRISU = 417;
    V0418_FAMILY_BUIZEL = 418;
    V0420_FAMILY_CHERUBI = 420;
    V0422_FAMILY_SHELLOS = 422;
    V0425_FAMILY_DRIFLOON = 425;
    V0427_FAMILY_BUNEARY = 427;
    V0431_FAMILY_GLAMEOW = 431;
    V0434_FAMILY_STUNKY = 434;
    V0436_FAMILY_BRONZOR = 436;
    V0441_FAMILY_CHATOT = 441;
    V0442_FAMILY_SPIRITOMB = 442;
    V0443_FAMILY_GIBLE = 443;
    V0448_FAMILY_LUCARIO = 448;
    V0449_FAMILY_HIPPOPOTAS = 449;
    V0451_FAMILY_SKORUPI = 451;
    V0453_FAMILY_CROAGUNK = 453;
    V0455_FAMILY_CARNIVINE = 455;
    V0456_FAMILY_FINNEON = 456;
    V0459_FAMILY_SNOVER = 459;
    V0479_FAMILY_ROTOM = 479;
    V0480_FAMILY_UXIE = 480;
    V0481_FAMILY_MESPRIT = 481;
    V0482_FAMILY_AZELF = 482;
    V0483_FAMILY_DIALGA = 483;
    V0484_FAMILY_PALKIA = 484;
    V0485_FAMILY_HEATRAN = 485;
    V0486_FAMILY_REGIGIGAS = 486;
    V0487_FAMILY_GIRATINA = 487;
    V0488_FAMILY_CRESSELIA = 488;
    V0489_FAMILY_PHIONE = 489;
    V0490_FAMILY_MANAPHY = 490;
    V0491_FAMILY_DARKRAI = 491;
    V0492_FAMILY_SHAYMIN = 492;
    V0493_FAMILY_ARCEUS = 493;
    V0494_FAMILY_VICTINI = 494;
    V0495_FAMILY_SNIVY = 495;
    V0498_FAMILY_TEPIG = 498;
    V0501_FAMILY_OSHAWOTT = 501;
    V0504_FAMILY_PATRAT = 504;
    V0506_FAMILY_LILLIPUP = 506;
    V0509_FAMILY_PURRLOIN = 509;
    V0511_FAMILY_PANSAGE = 511;
    V0513_FAMILY_PANSEAR = 513;
    V0515_FAMILY_PANPOUR = 515;
    V0517_FAMILY_MUNNA = 517;
    V0519_FAMILY_PIDOVE = 519;
    V0522_FAMILY_BLITZLE = 522;
    V0524_FAMILY_ROGGENROLA = 524;
    V0527_FAMILY_WOOBAT = 527;
    V0529_FAMILY_DRILBUR = 529;
    V0531_FAMILY_AUDINO = 531;
    V0532_FAMILY_TIMBURR = 532;
    V0535_FAMILY_TYMPOLE = 535;
    V0538_FAMILY_THROH = 538;
    V0539_FAMILY_SAWK = 539;
    V0540_FAMILY_SEWADDLE = 540;
    V0543_FAMILY_VENIPEDE = 543;
    V0546_FAMILY_COTTONEE = 546;
    V0548_FAMILY_PETILIL = 548;
    V0550_FAMILY_BASCULIN = 550;
    V0551_FAMILY_SANDILE = 551;
    V0554_FAMILY_DARUMAKA = 554;
    V0556_FAMILY_MARACTUS = 556;
    V0557_FAMILY_DWEBBLE = 557;
    V0559_FAMILY_SCRAGGY = 559;
    V0561_FAMILY_SIGILYPH = 561;
    V0562_FAMILY_YAMASK = 562;
    V0564_FAMILY_TIRTOUGA = 564;
    V0566_FAMILY_ARCHEN = 566;
    V0568_FAMILY_TRUBBISH = 568;
    V0570_FAMILY_ZORUA = 570;
    V0572_FAMILY_MINCCINO = 572;
    V0574_FAMILY_GOTHITA = 574;
    V0577_FAMILY_SOLOSIS = 577;
    V0580_FAMILY_DUCKLETT = 580;
    V0582_FAMILY_VANILLITE = 582;
    V0585_FAMILY_DEERLING = 585;
    V0587_FAMILY_EMOLGA = 587;
    V0588_FAMILY_KARRABLAST = 588;
    V0590_FAMILY_FOONGUS = 590;
    V0592_FAMILY_FRILLISH = 592;
    V0594_FAMILY_ALOMOMOLA = 594;
    V0595_FAMILY_JOLTIK = 595;
    V0597_FAMILY_FERROSEED = 597;
    V0599_FAMILY_KLINK = 599;
    V0602_FAMILY_TYNAMO = 602;
    V0605_FAMILY_ELGYEM = 605;
    V0607_FAMILY_LITWICK = 607;
    V0610_FAMILY_AXEW = 610;
    V0613_FAMILY_CUBCHOO = 613;
    V0615_FAMILY_CRYOGONAL = 615;
    V0616_FAMILY_SHELMET = 616;
    V0618_FAMILY_STUNFISK = 618;
    V0619_FAMILY_MIENFOO = 619;
    V0621_FAMILY_DRUDDIGON = 621;
    V0622_FAMILY_GOLETT = 622;
    V0624_FAMILY_PAWNIARD = 624;
    V0626_FAMILY_BOUFFALANT = 626;
    V0627_FAMILY_RUFFLET = 627;
    V0629_FAMILY_VULLABY = 629;
    V0631_FAMILY_HEATMOR = 631;
    V0632_FAMILY_DURANT = 632;
    V0633_FAMILY_DEINO = 633;
    V0636_FAMILY_LARVESTA = 636;
    V0638_FAMILY_COBALION = 638;
    V0639_FAMILY_TERRAKION = 639;
    V0640_FAMILY_VIRIZION = 640;
    V0641_FAMILY_TORNADUS = 641;
    V0642_FAMILY_THUNDURUS = 642;
    V0643_FAMILY_RESHIRAM = 643;
    V0644_FAMILY_ZEKROM = 644;
    V0645_FAMILY_LANDORUS = 645;
    V0646_FAMILY_KYUREM = 646;
    V0647_FAMILY_KELDEO = 647;
    V0648_FAMILY_MELOETTA = 648;
    V0649_FAMILY_GENESECT = 649;
    V0808_FAMILY_MELTAN = 808;
}

// ref: Holoholo.Rpc.HoloPokemonId
enum HoloPokemonId {
    POKEMON_UNSET = 0;
    V0001_POKEMON_BULBASAUR = 1;
    V0002_POKEMON_IVYSAUR = 2;
    V0003_POKEMON_VENUSAUR = 3;
    V0004_POKEMON_CHARMANDER = 4;
    V0005_POKEMON_CHARMELEON = 5;
    V0006_POKEMON_CHARIZARD = 6;
    V0007_POKEMON_SQUIRTLE = 7;
    V0008_POKEMON_WARTORTLE = 8;
    V0009_POKEMON_BLASTOISE = 9;
    V0010_POKEMON_CATERPIE = 10;
    V0011_POKEMON_METAPOD = 11;
    V0012_POKEMON_BUTTERFREE = 12;
    V0013_POKEMON_WEEDLE = 13;
    V0014_POKEMON_KAKUNA = 14;
    V0015_POKEMON_BEEDRILL = 15;
    V0016_POKEMON_PIDGEY = 16;
    V0017_POKEMON_PIDGEOTTO = 17;
    V0018_POKEMON_PIDGEOT = 18;
    V0019_POKEMON_RATTATA = 19;
    V0020_POKEMON_RATICATE = 20;
    V0021_POKEMON_SPEAROW = 21;
    V0022_POKEMON_FEAROW = 22;
    V0023_POKEMON_EKANS = 23;
    V0024_POKEMON_ARBOK = 24;
    V0025_POKEMON_PIKACHU = 25;
    V0026_POKEMON_RAICHU = 26;
    V0027_POKEMON_SANDSHREW = 27;
    V0028_POKEMON_SANDSLASH = 28;
    V0029_POKEMON_NIDORAN = 29;
    V0030_POKEMON_NIDORINA = 30;
    V0031_POKEMON_NIDOQUEEN = 31;
    V0032_POKEMON_NIDORAN = 32;
    V0033_POKEMON_NIDORINO = 33;
    V0034_POKEMON_NIDOKING = 34;
    V0035_POKEMON_CLEFAIRY = 35;
    V0036_POKEMON_CLEFABLE = 36;
    V0037_POKEMON_VULPIX = 37;
    V0038_POKEMON_NINETALES = 38;
    V0039_POKEMON_JIGGLYPUFF = 39;
    V0040_POKEMON_WIGGLYTUFF = 40;
    V0041_POKEMON_ZUBAT = 41;
    V0042_POKEMON_GOLBAT = 42;
    V0043_POKEMON_ODDISH = 43;
    V0044_POKEMON_GLOOM = 44;
    V0045_POKEMON_VILEPLUME = 45;
    V0046_POKEMON_PARAS = 46;
    V0047_POKEMON_PARASECT = 47;
    V0048_POKEMON_VENONAT = 48;
    V0049_POKEMON_VENOMOTH = 49;
    V0050_POKEMON_DIGLETT = 50;
    V0051_POKEMON_DUGTRIO = 51;
    V0052_POKEMON_MEOWTH = 52;
    V0053_POKEMON_PERSIAN = 53;
    V0054_POKEMON_PSYDUCK = 54;
    V0055_POKEMON_GOLDUCK = 55;
    V0056_POKEMON_MANKEY = 56;
    V0057_POKEMON_PRIMEAPE = 57;
    V0058_POKEMON_GROWLITHE = 58;
    V0059_POKEMON_ARCANINE = 59;
    V0060_POKEMON_POLIWAG = 60;
    V0061_POKEMON_POLIWHIRL = 61;
    V0062_POKEMON_POLIWRATH = 62;
    V0063_POKEMON_ABRA = 63;
    V0064_POKEMON_KADABRA = 64;
    V0065_POKEMON_ALAKAZAM = 65;
    V0066_POKEMON_MACHOP = 66;
    V0067_POKEMON_MACHOKE = 67;
    V0068_POKEMON_MACHAMP = 68;
    V0069_POKEMON_BELLSPROUT = 69;
    V0070_POKEMON_WEEPINBELL = 70;
    V0071_POKEMON_VICTREEBEL = 71;
    V0072_POKEMON_TENTACOOL = 72;
    V0073_POKEMON_TENTACRUEL = 73;
    V0074_POKEMON_GEODUDE = 74;
    V0075_POKEMON_GRAVELER = 75;
    V0076_POKEMON_GOLEM = 76;
    V0077_POKEMON_PONYTA = 77;
    V0078_POKEMON_RAPIDASH = 78;
    V0079_POKEMON_SLOWPOKE = 79;
    V0080_POKEMON_SLOWBRO = 80;
    V0081_POKEMON_MAGNEMITE = 81;
    V0082_POKEMON_MAGNETON = 82;
    V0083_POKEMON_FARFETCHD = 83;
    V0084_POKEMON_DODUO = 84;
    V0085_POKEMON_DODRIO = 85;
    V0086_POKEMON_SEEL = 86;
    V0087_POKEMON_DEWGONG = 87;
    V0088_POKEMON_GRIMER = 88;
    V0089_POKEMON_MUK = 89;
    V0090_POKEMON_SHELLDER = 90;
    V0091_POKEMON_CLOYSTER = 91;
    V0092_POKEMON_GASTLY = 92;
    V0093_POKEMON_HAUNTER = 93;
    V0094_POKEMON_GENGAR = 94;
    V0095_POKEMON_ONIX = 95;
    V0096_POKEMON_DROWZEE = 96;
    V0097_POKEMON_HYPNO = 97;
    V0098_POKEMON_KRABBY = 98;
    V0099_POKEMON_KINGLER = 99;
    V0100_POKEMON_VOLTORB = 100;
    V0101_POKEMON_ELECTRODE = 101;
    V0102_POKEMON_EXEGGCUTE = 102;
    V0103_POKEMON_EXEGGUTOR = 103;
    V0104_POKEMON_CUBONE = 104;
    V0105_POKEMON_MAROWAK = 105;
    V0106_POKEMON_HITMONLEE = 106;
    V0107_POKEMON_HITMONCHAN = 107;
    V0108_POKEMON_LICKITUNG = 108;
    V0109_POKEMON_KOFFING = 109;
    V0110_POKEMON_WEEZING = 110;
    V0111_POKEMON_RHYHORN = 111;
    V0112_POKEMON_RHYDON = 112;
    V0113_POKEMON_CHANSEY = 113;
    V0114_POKEMON_TANGELA = 114;
    V0115_POKEMON_KANGASKHAN = 115;
    V0116_POKEMON_HORSEA = 116;
    V0117_POKEMON_SEADRA = 117;
    V0118_POKEMON_GOLDEEN = 118;
    V0119_POKEMON_SEAKING = 119;
    V0120_POKEMON_STARYU = 120;
    V0121_POKEMON_STARMIE = 121;
    V0122_POKEMON_MR_MIME = 122;
    V0123_POKEMON_SCYTHER = 123;
    V0124_POKEMON_JYNX = 124;
    V0125_POKEMON_ELECTABUZZ = 125;
    V0126_POKEMON_MAGMAR = 126;
    V0127_POKEMON_PINSIR = 127;
    V0128_POKEMON_TAUROS = 128;
    V0129_POKEMON_MAGIKARP = 129;
    V0130_POKEMON_GYARADOS = 130;
    V0131_POKEMON_LAPRAS = 131;
    V0132_POKEMON_DITTO = 132;
    V0133_POKEMON_EEVEE = 133;
    V0134_POKEMON_VAPOREON = 134;
    V0135_POKEMON_JOLTEON = 135;
    V0136_POKEMON_FLAREON = 136;
    V0137_POKEMON_PORYGON = 137;
    V0138_POKEMON_OMANYTE = 138;
    V0139_POKEMON_OMASTAR = 139;
    V0140_POKEMON_KABUTO = 140;
    V0141_POKEMON_KABUTOPS = 141;
    V0142_POKEMON_AERODACTYL = 142;
    V0143_POKEMON_SNORLAX = 143;
    V0144_POKEMON_ARTICUNO = 144;
    V0145_POKEMON_ZAPDOS = 145;
    V0146_POKEMON_MOLTRES = 146;
    V0147_POKEMON_DRATINI = 147;
    V0148_POKEMON_DRAGONAIR = 148;
    V0149_POKEMON_DRAGONITE = 149;
    V0150_POKEMON_MEWTWO = 150;
    V0151_POKEMON_MEW = 151;
    V0152_POKEMON_CHIKORITA = 152;
    V0153_POKEMON_BAYLEEF = 153;
    V0154_POKEMON_MEGANIUM = 154;
    V0155_POKEMON_CYNDAQUIL = 155;
    V0156_POKEMON_QUILAVA = 156;
    V0157_POKEMON_TYPHLOSION = 157;
    V0158_POKEMON_TOTODILE = 158;
    V0159_POKEMON_CROCONAW = 159;
    V0160_POKEMON_FERALIGATR = 160;
    V0161_POKEMON_SENTRET = 161;
    V0162_POKEMON_FURRET = 162;
    V0163_POKEMON_HOOTHOOT = 163;
    V0164_POKEMON_NOCTOWL = 164;
    V0165_POKEMON_LEDYBA = 165;
    V0166_POKEMON_LEDIAN = 166;
    V0167_POKEMON_SPINARAK = 167;
    V0168_POKEMON_ARIADOS = 168;
    V0169_POKEMON_CROBAT = 169;
    V0170_POKEMON_CHINCHOU = 170;
    V0171_POKEMON_LANTURN = 171;
    V0172_POKEMON_PICHU = 172;
    V0173_POKEMON_CLEFFA = 173;
    V0174_POKEMON_IGGLYBUFF = 174;
    V0175_POKEMON_TOGEPI = 175;
    V0176_POKEMON_TOGETIC = 176;
    V0177_POKEMON_NATU = 177;
    V0178_POKEMON_XATU = 178;
    V0179_POKEMON_MAREEP = 179;
    V0180_POKEMON_FLAAFFY = 180;
    V0181_POKEMON_AMPHAROS = 181;
    V0182_POKEMON_BELLOSSOM = 182;
    V0183_POKEMON_MARILL = 183;
    V0184_POKEMON_AZUMARILL = 184;
    V0185_POKEMON_SUDOWOODO = 185;
    V0186_POKEMON_POLITOED = 186;
    V0187_POKEMON_HOPPIP = 187;
    V0188_POKEMON_SKIPLOOM = 188;
    V0189_POKEMON_JUMPLUFF = 189;
    V0190_POKEMON_AIPOM = 190;
    V0191_POKEMON_SUNKERN = 191;
    V0192_POKEMON_SUNFLORA = 192;
    V0193_POKEMON_YANMA = 193;
    V0194_POKEMON_WOOPER = 194;
    V0195_POKEMON_QUAGSIRE = 195;
    V0196_POKEMON_ESPEON = 196;
    V0197_POKEMON_UMBREON = 197;
    V0198_POKEMON_MURKROW = 198;
    V0199_POKEMON_SLOWKING = 199;
    V0200_POKEMON_MISDREAVUS = 200;
    V0201_POKEMON_UNOWN = 201;
    V0202_POKEMON_WOBBUFFET = 202;
    V0203_POKEMON_GIRAFARIG = 203;
    V0204_POKEMON_PINECO = 204;
    V0205_POKEMON_FORRETRESS = 205;
    V0206_POKEMON_DUNSPARCE = 206;
    V0207_POKEMON_GLIGAR = 207;
    V0208_POKEMON_STEELIX = 208;
    V0209_POKEMON_SNUBBULL = 209;
    V0210_POKEMON_GRANBULL = 210;
    V0211_POKEMON_QWILFISH = 211;
    V0212_POKEMON_SCIZOR = 212;
    V0213_POKEMON_SHUCKLE = 213;
    V0214_POKEMON_HERACROSS = 214;
    V0215_POKEMON_SNEASEL = 215;
    V0216_POKEMON_TEDDIURSA = 216;
    V0217_POKEMON_URSARING = 217;
    V0218_POKEMON_SLUGMA = 218;
    V0219_POKEMON_MAGCARGO = 219;
    V0220_POKEMON_SWINUB = 220;
    V0221_POKEMON_PILOSWINE = 221;
    V0222_POKEMON_CORSOLA = 222;
    V0223_POKEMON_REMORAID = 223;
    V0224_POKEMON_OCTILLERY = 224;
    V0225_POKEMON_DELIBIRD = 225;
    V0226_POKEMON_MANTINE = 226;
    V0227_POKEMON_SKARMORY = 227;
    V0228_POKEMON_HOUNDOUR = 228;
    V0229_POKEMON_HOUNDOOM = 229;
    V0230_POKEMON_KINGDRA = 230;
    V0231_POKEMON_PHANPY = 231;
    V0232_POKEMON_DONPHAN = 232;
    V0233_POKEMON_PORYGON2 = 233;
    V0234_POKEMON_STANTLER = 234;
    V0235_POKEMON_SMEARGLE = 235;
    V0236_POKEMON_TYROGUE = 236;
    V0237_POKEMON_HITMONTOP = 237;
    V0238_POKEMON_SMOOCHUM = 238;
    V0239_POKEMON_ELEKID = 239;
    V0240_POKEMON_MAGBY = 240;
    V0241_POKEMON_MILTANK = 241;
    V0242_POKEMON_BLISSEY = 242;
    V0243_POKEMON_RAIKOU = 243;
    V0244_POKEMON_ENTEI = 244;
    V0245_POKEMON_SUICUNE = 245;
    V0246_POKEMON_LARVITAR = 246;
    V0247_POKEMON_PUPITAR = 247;
    V0248_POKEMON_TYRANITAR = 248;
    V0249_POKEMON_LUGIA = 249;
    V0250_POKEMON_HO_OH = 250;
    V0251_POKEMON_CELEBI = 251;
    V0252_POKEMON_TREECKO = 252;
    V0253_POKEMON_GROVYLE = 253;
    V0254_POKEMON_SCEPTILE = 254;
    V0255_POKEMON_TORCHIC = 255;
    V0256_POKEMON_COMBUSKEN = 256;
    V0257_POKEMON_BLAZIKEN = 257;
    V0258_POKEMON_MUDKIP = 258;
    V0259_POKEMON_MARSHTOMP = 259;
    V0260_POKEMON_SWAMPERT = 260;
    V0261_POKEMON_POOCHYENA = 261;
    V0262_POKEMON_MIGHTYENA = 262;
    V0263_POKEMON_ZIGZAGOON = 263;
    V0264_POKEMON_LINOONE = 264;
    V0265_POKEMON_WURMPLE = 265;
    V0266_POKEMON_SILCOON = 266;
    V0267_POKEMON_BEAUTIFLY = 267;
    V0268_POKEMON_CASCOON = 268;
    V0269_POKEMON_DUSTOX = 269;
    V0270_POKEMON_LOTAD = 270;
    V0271_POKEMON_LOMBRE = 271;
    V0272_POKEMON_LUDICOLO = 272;
    V0273_POKEMON_SEEDOT = 273;
    V0274_POKEMON_NUZLEAF = 274;
    V0275_POKEMON_SHIFTRY = 275;
    V0276_POKEMON_TAILLOW = 276;
    V0277_POKEMON_SWELLOW = 277;
    V0278_POKEMON_WINGULL = 278;
    V0279_POKEMON_PELIPPER = 279;
    V0280_POKEMON_RALTS = 280;
    V0281_POKEMON_KIRLIA = 281;
    V0282_POKEMON_GARDEVOIR = 282;
    V0283_POKEMON_SURSKIT = 283;
    V0284_POKEMON_MASQUERAIN = 284;
    V0285_POKEMON_SHROOMISH = 285;
    V0286_POKEMON_BRELOOM = 286;
    V0287_POKEMON_SLAKOTH = 287;
    V0288_POKEMON_VIGOROTH = 288;
    V0289_POKEMON_SLAKING = 289;
    V0290_POKEMON_NINCADA = 290;
    V0291_POKEMON_NINJASK = 291;
    V0292_POKEMON_SHEDINJA = 292;
    V0293_POKEMON_WHISMUR = 293;
    V0294_POKEMON_LOUDRED = 294;
    V0295_POKEMON_EXPLOUD = 295;
    V0296_POKEMON_MAKUHITA = 296;
    V0297_POKEMON_HARIYAMA = 297;
    V0298_POKEMON_AZURILL = 298;
    V0299_POKEMON_NOSEPASS = 299;
    V0300_POKEMON_SKITTY = 300;
    V0301_POKEMON_DELCATTY = 301;
    V0302_POKEMON_SABLEYE = 302;
    V0303_POKEMON_MAWILE = 303;
    V0304_POKEMON_ARON = 304;
    V0305_POKEMON_LAIRON = 305;
    V0306_POKEMON_AGGRON = 306;
    V0307_POKEMON_MEDITITE = 307;
    V0308_POKEMON_MEDICHAM = 308;
    V0309_POKEMON_ELECTRIKE = 309;
    V0310_POKEMON_MANECTRIC = 310;
    V0311_POKEMON_PLUSLE = 311;
    V0312_POKEMON_MINUN = 312;
    V0313_POKEMON_VOLBEAT = 313;
    V0314_POKEMON_ILLUMISE = 314;
    V0315_POKEMON_ROSELIA = 315;
    V0316_POKEMON_GULPIN = 316;
    V0317_POKEMON_SWALOT = 317;
    V0318_POKEMON_CARVANHA = 318;
    V0319_POKEMON_SHARPEDO = 319;
    V0320_POKEMON_WAILMER = 320;
    V0321_POKEMON_WAILORD = 321;
    V0322_POKEMON_NUMEL = 322;
    V0323_POKEMON_CAMERUPT = 323;
    V0324_POKEMON_TORKOAL = 324;
    V0325_POKEMON_SPOINK = 325;
    V0326_POKEMON_GRUMPIG = 326;
    V0327_POKEMON_SPINDA = 327;
    V0328_POKEMON_TRAPINCH = 328;
    V0329_POKEMON_VIBRAVA = 329;
    V0330_POKEMON_FLYGON = 330;
    V0331_POKEMON_CACNEA = 331;
    V0332_POKEMON_CACTURNE = 332;
    V0333_POKEMON_SWABLU = 333;
    V0334_POKEMON_ALTARIA = 334;
    V0335_POKEMON_ZANGOOSE = 335;
    V0336_POKEMON_SEVIPER = 336;
    V0337_POKEMON_LUNATONE = 337;
    V0338_POKEMON_SOLROCK = 338;
    V0339_POKEMON_BARBOACH = 339;
    V0340_POKEMON_WHISCASH = 340;
    V0341_POKEMON_CORPHISH = 341;
    V0342_POKEMON_CRAWDAUNT = 342;
    V0343_POKEMON_BALTOY = 343;
    V0344_POKEMON_CLAYDOL = 344;
    V0345_POKEMON_LILEEP = 345;
    V0346_POKEMON_CRADILY = 346;
    V0347_POKEMON_ANORITH = 347;
    V0348_POKEMON_ARMALDO = 348;
    V0349_POKEMON_FEEBAS = 349;
    V0350_POKEMON_MILOTIC = 350;
    V0351_POKEMON_CASTFORM = 351;
    V0352_POKEMON_KECLEON = 352;
    V0353_POKEMON_SHUPPET = 353;
    V0354_POKEMON_BANETTE = 354;
    V0355_POKEMON_DUSKULL = 355;
    V0356_POKEMON_DUSCLOPS = 356;
    V0357_POKEMON_TROPIUS = 357;
    V0358_POKEMON_CHIMECHO = 358;
    V0359_POKEMON_ABSOL = 359;
    V0360_POKEMON_WYNAUT = 360;
    V0361_POKEMON_SNORUNT = 361;
    V0362_POKEMON_GLALIE = 362;
    V0363_POKEMON_SPHEAL = 363;
    V0364_POKEMON_SEALEO = 364;
    V0365_POKEMON_WALREIN = 365;
    V0366_POKEMON_CLAMPERL = 366;
    V0367_POKEMON_HUNTAIL = 367;
    V0368_POKEMON_GOREBYSS = 368;
    V0369_POKEMON_RELICANTH = 369;
    V0370_POKEMON_LUVDISC = 370;
    V0371_POKEMON_BAGON = 371;
    V0372_POKEMON_SHELGON = 372;
    V0373_POKEMON_SALAMENCE = 373;
    V0374_POKEMON_BELDUM = 374;
    V0375_POKEMON_METANG = 375;
    V0376_POKEMON_METAGROSS = 376;
    V0377_POKEMON_REGIROCK = 377;
    V0378_POKEMON_REGICE = 378;
    V0379_POKEMON_REGISTEEL = 379;
    V0380_POKEMON_LATIAS = 380;
    V0381_POKEMON_LATIOS = 381;
    V0382_POKEMON_KYOGRE = 382;
    V0383_POKEMON_GROUDON = 383;
    V0384_POKEMON_RAYQUAZA = 384;
    V0385_POKEMON_JIRACHI = 385;
    V0386_POKEMON_DEOXYS = 386;
    V0387_POKEMON_TURTWIG = 387;
    V0388_POKEMON_GROTLE = 388;
    V0389_POKEMON_TORTERRA = 389;
    V0390_POKEMON_CHIMCHAR = 390;
    V0391_POKEMON_MONFERNO = 391;
    V0392_POKEMON_INFERNAPE = 392;
    V0393_POKEMON_PIPLUP = 393;
    V0394_POKEMON_PRINPLUP = 394;
    V0395_POKEMON_EMPOLEON = 395;
    V0396_POKEMON_STARLY = 396;
    V0397_POKEMON_STARAVIA = 397;
    V0398_POKEMON_STARAPTOR = 398;
    V0399_POKEMON_BIDOOF = 399;
    V0400_POKEMON_BIBAREL = 400;
    V0401_POKEMON_KRICKETOT = 401;
    V0402_POKEMON_KRICKETUNE = 402;
    V0403_POKEMON_SHINX = 403;
    V0404_POKEMON_LUXIO = 404;
    V0405_POKEMON_LUXRAY = 405;
    V0406_POKEMON_BUDEW = 406;
    V0407_POKEMON_ROSERADE = 407;
    V0408_POKEMON_CRANIDOS = 408;
    V0409_POKEMON_RAMPARDOS = 409;
    V0410_POKEMON_SHIELDON = 410;
    V0411_POKEMON_BASTIODON = 411;
    V0412_POKEMON_BURMY = 412;
    V0413_POKEMON_WORMADAM = 413;
    V0414_POKEMON_MOTHIM = 414;
    V0415_POKEMON_COMBEE = 415;
    V0416_POKEMON_VESPIQUEN = 416;
    V0417_POKEMON_PACHIRISU = 417;
    V0418_POKEMON_BUIZEL = 418;
    V0419_POKEMON_FLOATZEL = 419;
    V0420_POKEMON_CHERUBI = 420;
    V0421_POKEMON_CHERRIM = 421;
    V0422_POKEMON_SHELLOS = 422;
    V0423_POKEMON_GASTRODON = 423;
    V0424_POKEMON_AMBIPOM = 424;
    V0425_POKEMON_DRIFLOON = 425;
    V0426_POKEMON_DRIFBLIM = 426;
    V0427_POKEMON_BUNEARY = 427;
    V0428_POKEMON_LOPUNNY = 428;
    V0429_POKEMON_MISMAGIUS = 429;
    V0430_POKEMON_HONCHKROW = 430;
    V0431_POKEMON_GLAMEOW = 431;
    V0432_POKEMON_PURUGLY = 432;
    V0433_POKEMON_CHINGLING = 433;
    V0434_POKEMON_STUNKY = 434;
    V0435_POKEMON_SKUNTANK = 435;
    V0436_POKEMON_BRONZOR = 436;
    V0437_POKEMON_BRONZONG = 437;
    V0438_POKEMON_BONSLY = 438;
    V0439_POKEMON_MIME_JR = 439;
    V0440_POKEMON_HAPPINY = 440;
    V0441_POKEMON_CHATOT = 441;
    V0442_POKEMON_SPIRITOMB = 442;
    V0443_POKEMON_GIBLE = 443;
    V0444_POKEMON_GABITE = 444;
    V0445_POKEMON_GARCHOMP = 445;
    V0446_POKEMON_MUNCHLAX = 446;
    V0447_POKEMON_RIOLU = 447;
    V0448_POKEMON_LUCARIO = 448;
    V0449_POKEMON_HIPPOPOTAS = 449;
    V0450_POKEMON_HIPPOWDON = 450;
    V0451_POKEMON_SKORUPI = 451;
    V0452_POKEMON_DRAPION = 452;
    V0453_POKEMON_CROAGUNK = 453;
    V0454_POKEMON_TOXICROAK = 454;
    V0455_POKEMON_CARNIVINE = 455;
    V0456_POKEMON_FINNEON = 456;
    V0457_POKEMON_LUMINEON = 457;
    V0458_POKEMON_MANTYKE = 458;
    V0459_POKEMON_SNOVER = 459;
    V0460_POKEMON_ABOMASNOW = 460;
    V0461_POKEMON_WEAVILE = 461;
    V0462_POKEMON_MAGNEZONE = 462;
    V0463_POKEMON_LICKILICKY = 463;
    V0464_POKEMON_RHYPERIOR = 464;
    V0465_POKEMON_TANGROWTH = 465;
    V0466_POKEMON_ELECTIVIRE = 466;
    V0467_POKEMON_MAGMORTAR = 467;
    V0468_POKEMON_TOGEKISS = 468;
    V0469_POKEMON_YANMEGA = 469;
    V0470_POKEMON_LEAFEON = 470;
    V0471_POKEMON_GLACEON = 471;
    V0472_POKEMON_GLISCOR = 472;
    V0473_POKEMON_MAMOSWINE = 473;
    V0474_POKEMON_PORYGON_Z = 474;
    V0475_POKEMON_GALLADE = 475;
    V0476_POKEMON_PROBOPASS = 476;
    V0477_POKEMON_DUSKNOIR = 477;
    V0478_POKEMON_FROSLASS = 478;
    V0479_POKEMON_ROTOM = 479;
    V0480_POKEMON_UXIE = 480;
    V0481_POKEMON_MESPRIT = 481;
    V0482_POKEMON_AZELF = 482;
    V0483_POKEMON_DIALGA = 483;
    V0484_POKEMON_PALKIA = 484;
    V0485_POKEMON_HEATRAN = 485;
    V0486_POKEMON_REGIGIGAS = 486;
    V0487_POKEMON_GIRATINA = 487;
    V0488_POKEMON_CRESSELIA = 488;
    V0489_POKEMON_PHIONE = 489;
    V0490_POKEMON_MANAPHY = 490;
    V0491_POKEMON_DARKRAI = 491;
    V0492_POKEMON_SHAYMIN = 492;
    V0493_POKEMON_ARCEUS = 493;
    V0494_POKEMON_VICTINI = 494;
    V0495_POKEMON_SNIVY = 495;
    V0496_POKEMON_SERVINE = 496;
    V0497_POKEMON_SERPERIOR = 497;
    V0498_POKEMON_TEPIG = 498;
    V0499_POKEMON_PIGNITE = 499;
    V0500_POKEMON_EMBOAR = 500;
    V0501_POKEMON_OSHAWOTT = 501;
    V0502_POKEMON_DEWOTT = 502;
    V0503_POKEMON_SAMUROTT = 503;
    V0504_POKEMON_PATRAT = 504;
    V0505_POKEMON_WATCHOG = 505;
    V0506_POKEMON_LILLIPUP = 506;
    V0507_POKEMON_HERDIER = 507;
    V0508_POKEMON_STOUTLAND = 508;
    V0509_POKEMON_PURRLOIN = 509;
    V0510_POKEMON_LIEPARD = 510;
    V0511_POKEMON_PANSAGE = 511;
    V0512_POKEMON_SIMISAGE = 512;
    V0513_POKEMON_PANSEAR = 513;
    V0514_POKEMON_SIMISEAR = 514;
    V0515_POKEMON_PANPOUR = 515;
    V0516_POKEMON_SIMIPOUR = 516;
    V0517_POKEMON_MUNNA = 517;
    V0518_POKEMON_MUSHARNA = 518;
    V0519_POKEMON_PIDOVE = 519;
    V0520_POKEMON_TRANQUILL = 520;
    V0521_POKEMON_UNFEZANT = 521;
    V0522_POKEMON_BLITZLE = 522;
    V0523_POKEMON_ZEBSTRIKA = 523;
    V0524_POKEMON_ROGGENROLA = 524;
    V0525_POKEMON_BOLDORE = 525;
    V0526_POKEMON_GIGALITH = 526;
    V0527_POKEMON_WOOBAT = 527;
    V0528_POKEMON_SWOOBAT = 528;
    V0529_POKEMON_DRILBUR = 529;
    V0530_POKEMON_EXCADRILL = 530;
    V0531_POKEMON_AUDINO = 531;
    V0532_POKEMON_TIMBURR = 532;
    V0533_POKEMON_GURDURR = 533;
    V0534_POKEMON_CONKELDURR = 534;
    V0535_POKEMON_TYMPOLE = 535;
    V0536_POKEMON_PALPITOAD = 536;
    V0537_POKEMON_SEISMITOAD = 537;
    V0538_POKEMON_THROH = 538;
    V0539_POKEMON_SAWK = 539;
    V0540_POKEMON_SEWADDLE = 540;
    V0541_POKEMON_SWADLOON = 541;
    V0542_POKEMON_LEAVANNY = 542;
    V0543_POKEMON_VENIPEDE = 543;
    V0544_POKEMON_WHIRLIPEDE = 544;
    V0545_POKEMON_SCOLIPEDE = 545;
    V0546_POKEMON_COTTONEE = 546;
    V0547_POKEMON_WHIMSICOTT = 547;
    V0548_POKEMON_PETILIL = 548;
    V0549_POKEMON_LILLIGANT = 549;
    V0550_POKEMON_BASCULIN = 550;
    V0551_POKEMON_SANDILE = 551;
    V0552_POKEMON_KROKOROK = 552;
    V0553_POKEMON_KROOKODILE = 553;
    V0554_POKEMON_DARUMAKA = 554;
    V0555_POKEMON_DARMANITAN = 555;
    V0556_POKEMON_MARACTUS = 556;
    V0557_POKEMON_DWEBBLE = 557;
    V0558_POKEMON_CRUSTLE = 558;
    V0559_POKEMON_SCRAGGY = 559;
    V0560_POKEMON_SCRAFTY = 560;
    V0561_POKEMON_SIGILYPH = 561;
    V0562_POKEMON_YAMASK = 562;
    V0563_POKEMON_COFAGRIGUS = 563;
    V0564_POKEMON_TIRTOUGA = 564;
    V0565_POKEMON_CARRACOSTA = 565;
    V0566_POKEMON_ARCHEN = 566;
    V0567_POKEMON_ARCHEOPS = 567;
    V0568_POKEMON_TRUBBISH = 568;
    V0569_POKEMON_GARBODOR = 569;
    V0570_POKEMON_ZORUA = 570;
    V0571_POKEMON_ZOROARK = 571;
    V0572_POKEMON_MINCCINO = 572;
    V0573_POKEMON_CINCCINO = 573;
    V0574_POKEMON_GOTHITA = 574;
    V0575_POKEMON_GOTHORITA = 575;
    V0576_POKEMON_GOTHITELLE = 576;
    V0577_POKEMON_SOLOSIS = 577;
    V0578_POKEMON_DUOSION = 578;
    V0579_POKEMON_REUNICLUS = 579;
    V0580_POKEMON_DUCKLETT = 580;
    V0581_POKEMON_SWANNA = 581;
    V0582_POKEMON_VANILLITE = 582;
    V0583_POKEMON_VANILLISH = 583;
    V0584_POKEMON_VANILLUXE = 584;
    V0585_POKEMON_DEERLING = 585;
    V0586_POKEMON_SAWSBUCK = 586;
    V0587_POKEMON_EMOLGA = 587;
    V0588_POKEMON_KARRABLAST = 588;
    V0589_POKEMON_ESCAVALIER = 589;
    V0590_POKEMON_FOONGUS = 590;
    V0591_POKEMON_AMOONGUSS = 591;
    V0592_POKEMON_FRILLISH = 592;
    V0593_POKEMON_JELLICENT = 593;
    V0594_POKEMON_ALOMOMOLA = 594;
    V0595_POKEMON_JOLTIK = 595;
    V0596_POKEMON_GALVANTULA = 596;
    V0597_POKEMON_FERROSEED = 597;
    V0598_POKEMON_FERROTHORN = 598;
    V0599_POKEMON_KLINK = 599;
    V0600_POKEMON_KLANG = 600;
    V0601_POKEMON_KLINKLANG = 601;
    V0602_POKEMON_TYNAMO = 602;
    V0603_POKEMON_EELEKTRIK = 603;
    V0604_POKEMON_EELEKTROSS = 604;
    V0605_POKEMON_ELGYEM = 605;
    V0606_POKEMON_BEHEEYEM = 606;
    V0607_POKEMON_LITWICK = 607;
    V0608_POKEMON_LAMPENT = 608;
    V0609_POKEMON_CHANDELURE = 609;
    V0610_POKEMON_AXEW = 610;
    V0611_POKEMON_FRAXURE = 611;
    V0612_POKEMON_HAXORUS = 612;
    V0613_POKEMON_CUBCHOO = 613;
    V0614_POKEMON_BEARTIC = 614;
    V0615_POKEMON_CRYOGONAL = 615;
    V0616_POKEMON_SHELMET = 616;
    V0617_POKEMON_ACCELGOR = 617;
    V0618_POKEMON_STUNFISK = 618;
    V0619_POKEMON_MIENFOO = 619;
    V0620_POKEMON_MIENSHAO = 620;
    V0621_POKEMON_DRUDDIGON = 621;
    V0622_POKEMON_GOLETT = 622;
    V0623_POKEMON_GOLURK = 623;
    V0624_POKEMON_PAWNIARD = 624;
    V0625_POKEMON_BISHARP = 625;
    V0626_POKEMON_BOUFFALANT = 626;
    V0627_POKEMON_RUFFLET = 627;
    V0628_POKEMON_BRAVIARY = 628;
    V0629_POKEMON_VULLABY = 629;
    V0630_POKEMON_MANDIBUZZ = 630;
    V0631_POKEMON_HEATMOR = 631;
    V0632_POKEMON_DURANT = 632;
    V0633_POKEMON_DEINO = 633;
    V0634_POKEMON_ZWEILOUS = 634;
    V0635_POKEMON_HYDREIGON = 635;
    V0636_POKEMON_LARVESTA = 636;
    V0637_POKEMON_VOLCARONA = 637;
    V0638_POKEMON_COBALION = 638;
    V0639_POKEMON_TERRAKION = 639;
    V0640_POKEMON_VIRIZION = 640;
    V0641_POKEMON_TORNADUS = 641;
    V0642_POKEMON_THUNDURUS = 642;
    V0643_POKEMON_RESHIRAM = 643;
    V0644_POKEMON_ZEKROM = 644;
    V0645_POKEMON_LANDORUS = 645;
    V0646_POKEMON_KYUREM = 646;
    V0647_POKEMON_KELDEO = 647;
    V0648_POKEMON_MELOETTA = 648;
    V0649_POKEMON_GENESECT = 649;
    V0808_POKEMON_MELTAN = 808;
    V0809_POKEMON_MELMETAL = 809;
}

// ref: Holoholo.Rpc.HoloPokemonMove
enum HoloPokemonMove {
    MOVE_UNSET = 0;
    V0001_MOVE_THUNDER_SHOCK = 1;
    V0002_MOVE_QUICK_ATTACK = 2;
    V0003_MOVE_SCRATCH = 3;
    V0004_MOVE_EMBER = 4;
    V0005_MOVE_VINE_WHIP = 5;
    V0006_MOVE_TACKLE = 6;
    V0007_MOVE_RAZOR_LEAF = 7;
    V0008_MOVE_TAKE_DOWN = 8;
    V0009_MOVE_WATER_GUN = 9;
    V0010_MOVE_BITE = 10;
    V0011_MOVE_POUND = 11;
    V0012_MOVE_DOUBLE_SLAP = 12;
    V0013_MOVE_WRAP = 13;
    V0014_MOVE_HYPER_BEAM = 14;
    V0015_MOVE_LICK = 15;
    V0016_MOVE_DARK_PULSE = 16;
    V0017_MOVE_SMOG = 17;
    V0018_MOVE_SLUDGE = 18;
    V0019_MOVE_METAL_CLAW = 19;
    V0020_MOVE_VICE_GRIP = 20;
    V0021_MOVE_FLAME_WHEEL = 21;
    V0022_MOVE_MEGAHORN = 22;
    V0023_MOVE_WING_ATTACK = 23;
    V0024_MOVE_FLAMETHROWER = 24;
    V0025_MOVE_SUCKER_PUNCH = 25;
    V0026_MOVE_DIG = 26;
    V0027_MOVE_LOW_KICK = 27;
    V0028_MOVE_CROSS_CHOP = 28;
    V0029_MOVE_PSYCHO_CUT = 29;
    V0030_MOVE_PSYBEAM = 30;
    V0031_MOVE_EARTHQUAKE = 31;
    V0032_MOVE_STONE_EDGE = 32;
    V0033_MOVE_ICE_PUNCH = 33;
    V0034_MOVE_HEART_STAMP = 34;
    V0035_MOVE_DISCHARGE = 35;
    V0036_MOVE_FLASH_CANNON = 36;
    V0037_MOVE_PECK = 37;
    V0038_MOVE_DRILL_PECK = 38;
    V0039_MOVE_ICE_BEAM = 39;
    V0040_MOVE_BLIZZARD = 40;
    V0041_MOVE_AIR_SLASH = 41;
    V0042_MOVE_HEAT_WAVE = 42;
    V0043_MOVE_TWINEEDLE = 43;
    V0044_MOVE_POISON_JAB = 44;
    V0045_MOVE_AERIAL_ACE = 45;
    V0046_MOVE_DRILL_RUN = 46;
    V0047_MOVE_PETAL_BLIZZARD = 47;
    V0048_MOVE_MEGA_DRAIN = 48;
    V0049_MOVE_BUG_BUZZ = 49;
    V0050_MOVE_POISON_FANG = 50;
    V0051_MOVE_NIGHT_SLASH = 51;
    V0052_MOVE_SLASH = 52;
    V0053_MOVE_BUBBLE_BEAM = 53;
    V0054_MOVE_SUBMISSION = 54;
    V0055_MOVE_KARATE_CHOP = 55;
    V0056_MOVE_LOW_SWEEP = 56;
    V0057_MOVE_AQUA_JET = 57;
    V0058_MOVE_AQUA_TAIL = 58;
    V0059_MOVE_SEED_BOMB = 59;
    V0060_MOVE_PSYSHOCK = 60;
    V0061_MOVE_ROCK_THROW = 61;
    V0062_MOVE_ANCIENT_POWER = 62;
    V0063_MOVE_ROCK_TOMB = 63;
    V0064_MOVE_ROCK_SLIDE = 64;
    V0065_MOVE_POWER_GEM = 65;
    V0066_MOVE_SHADOW_SNEAK = 66;
    V0067_MOVE_SHADOW_PUNCH = 67;
    V0068_MOVE_SHADOW_CLAW = 68;
    V0069_MOVE_OMINOUS_WIND = 69;
    V0070_MOVE_SHADOW_BALL = 70;
    V0071_MOVE_BULLET_PUNCH = 71;
    V0072_MOVE_MAGNET_BOMB = 72;
    V0073_MOVE_STEEL_WING = 73;
    V0074_MOVE_IRON_HEAD = 74;
    V0075_MOVE_PARABOLIC_CHARGE = 75;
    V0076_MOVE_SPARK = 76;
    V0077_MOVE_THUNDER_PUNCH = 77;
    V0078_MOVE_THUNDER = 78;
    V0079_MOVE_THUNDERBOLT = 79;
    V0080_MOVE_TWISTER = 80;
    V0081_MOVE_DRAGON_BREATH = 81;
    V0082_MOVE_DRAGON_PULSE = 82;
    V0083_MOVE_DRAGON_CLAW = 83;
    V0084_MOVE_DISARMING_VOICE = 84;
    V0085_MOVE_DRAINING_KISS = 85;
    V0086_MOVE_DAZZLING_GLEAM = 86;
    V0087_MOVE_MOONBLAST = 87;
    V0088_MOVE_PLAY_ROUGH = 88;
    V0089_MOVE_CROSS_POISON = 89;
    V0090_MOVE_SLUDGE_BOMB = 90;
    V0091_MOVE_SLUDGE_WAVE = 91;
    V0092_MOVE_GUNK_SHOT = 92;
    V0093_MOVE_MUD_SHOT = 93;
    V0094_MOVE_BONE_CLUB = 94;
    V0095_MOVE_BULLDOZE = 95;
    V0096_MOVE_MUD_BOMB = 96;
    V0097_MOVE_FURY_CUTTER = 97;
    V0098_MOVE_BUG_BITE = 98;
    V0099_MOVE_SIGNAL_BEAM = 99;
    V0100_MOVE_X_SCISSOR = 100;
    V0101_MOVE_FLAME_CHARGE = 101;
    V0102_MOVE_FLAME_BURST = 102;
    V0103_MOVE_FIRE_BLAST = 103;
    V0104_MOVE_BRINE = 104;
    V0105_MOVE_WATER_PULSE = 105;
    V0106_MOVE_SCALD = 106;
    V0107_MOVE_HYDRO_PUMP = 107;
    V0108_MOVE_PSYCHIC = 108;
    V0109_MOVE_PSYSTRIKE = 109;
    V0110_MOVE_ICE_SHARD = 110;
    V0111_MOVE_ICY_WIND = 111;
    V0112_MOVE_FROST_BREATH = 112;
    V0113_MOVE_ABSORB = 113;
    V0114_MOVE_GIGA_DRAIN = 114;
    V0115_MOVE_FIRE_PUNCH = 115;
    V0116_MOVE_SOLAR_BEAM = 116;
    V0117_MOVE_LEAF_BLADE = 117;
    V0118_MOVE_POWER_WHIP = 118;
    V0119_MOVE_SPLASH = 119;
    V0120_MOVE_ACID = 120;
    V0121_MOVE_AIR_CUTTER = 121;
    V0122_MOVE_HURRICANE = 122;
    V0123_MOVE_BRICK_BREAK = 123;
    V0124_MOVE_CUT = 124;
    V0125_MOVE_SWIFT = 125;
    V0126_MOVE_HORN_ATTACK = 126;
    V0127_MOVE_STOMP = 127;
    V0128_MOVE_HEADBUTT = 128;
    V0129_MOVE_HYPER_FANG = 129;
    V0130_MOVE_SLAM = 130;
    V0131_MOVE_BODY_SLAM = 131;
    V0132_MOVE_REST = 132;
    V0133_MOVE_STRUGGLE = 133;
    V0134_MOVE_SCALD_BLASTOISE = 134;
    V0135_MOVE_HYDRO_PUMP_BLASTOISE = 135;
    V0136_MOVE_WRAP_GREEN = 136;
    V0137_MOVE_WRAP_PINK = 137;
    V0200_MOVE_FURY_CUTTER_FAST = 200;
    V0201_MOVE_BUG_BITE_FAST = 201;
    V0202_MOVE_BITE_FAST = 202;
    V0203_MOVE_SUCKER_PUNCH_FAST = 203;
    V0204_MOVE_DRAGON_BREATH_FAST = 204;
    V0205_MOVE_THUNDER_SHOCK_FAST = 205;
    V0206_MOVE_SPARK_FAST = 206;
    V0207_MOVE_LOW_KICK_FAST = 207;
    V0208_MOVE_KARATE_CHOP_FAST = 208;
    V0209_MOVE_EMBER_FAST = 209;
    V0210_MOVE_WING_ATTACK_FAST = 210;
    V0211_MOVE_PECK_FAST = 211;
    V0212_MOVE_LICK_FAST = 212;
    V0213_MOVE_SHADOW_CLAW_FAST = 213;
    V0214_MOVE_VINE_WHIP_FAST = 214;
    V0215_MOVE_RAZOR_LEAF_FAST = 215;
    V0216_MOVE_MUD_SHOT_FAST = 216;
    V0217_MOVE_ICE_SHARD_FAST = 217;
    V0218_MOVE_FROST_BREATH_FAST = 218;
    V0219_MOVE_QUICK_ATTACK_FAST = 219;
    V0220_MOVE_SCRATCH_FAST = 220;
    V0221_MOVE_TACKLE_FAST = 221;
    V0222_MOVE_POUND_FAST = 222;
    V0223_MOVE_CUT_FAST = 223;
    V0224_MOVE_POISON_JAB_FAST = 224;
    V0225_MOVE_ACID_FAST = 225;
    V0226_MOVE_PSYCHO_CUT_FAST = 226;
    V0227_MOVE_ROCK_THROW_FAST = 227;
    V0228_MOVE_METAL_CLAW_FAST = 228;
    V0229_MOVE_BULLET_PUNCH_FAST = 229;
    V0230_MOVE_WATER_GUN_FAST = 230;
    V0231_MOVE_SPLASH_FAST = 231;
    V0232_MOVE_WATER_GUN_FAST_BLASTOISE = 232;
    V0233_MOVE_MUD_SLAP_FAST = 233;
    V0234_MOVE_ZEN_HEADBUTT_FAST = 234;
    V0235_MOVE_CONFUSION_FAST = 235;
    V0236_MOVE_POISON_STING_FAST = 236;
    V0237_MOVE_BUBBLE_FAST = 237;
    V0238_MOVE_FEINT_ATTACK_FAST = 238;
    V0239_MOVE_STEEL_WING_FAST = 239;
    V0240_MOVE_FIRE_FANG_FAST = 240;
    V0241_MOVE_ROCK_SMASH_FAST = 241;
    V0242_MOVE_TRANSFORM_FAST = 242;
    V0243_MOVE_COUNTER_FAST = 243;
    V0244_MOVE_POWDER_SNOW_FAST = 244;
    V0245_MOVE_CLOSE_COMBAT = 245;
    V0246_MOVE_DYNAMIC_PUNCH = 246;
    V0247_MOVE_FOCUS_BLAST = 247;
    V0248_MOVE_AURORA_BEAM = 248;
    V0249_MOVE_CHARGE_BEAM_FAST = 249;
    V0250_MOVE_VOLT_SWITCH_FAST = 250;
    V0251_MOVE_WILD_CHARGE = 251;
    V0252_MOVE_ZAP_CANNON = 252;
    V0253_MOVE_DRAGON_TAIL_FAST = 253;
    V0254_MOVE_AVALANCHE = 254;
    V0255_MOVE_AIR_SLASH_FAST = 255;
    V0256_MOVE_BRAVE_BIRD = 256;
    V0257_MOVE_SKY_ATTACK = 257;
    V0258_MOVE_SAND_TOMB = 258;
    V0259_MOVE_ROCK_BLAST = 259;
    V0260_MOVE_INFESTATION_FAST = 260;
    V0261_MOVE_STRUGGLE_BUG_FAST = 261;
    V0262_MOVE_SILVER_WIND = 262;
    V0263_MOVE_ASTONISH_FAST = 263;
    V0264_MOVE_HEX_FAST = 264;
    V0265_MOVE_NIGHT_SHADE = 265;
    V0266_MOVE_IRON_TAIL_FAST = 266;
    V0267_MOVE_GYRO_BALL = 267;
    V0268_MOVE_HEAVY_SLAM = 268;
    V0269_MOVE_FIRE_SPIN_FAST = 269;
    V0270_MOVE_OVERHEAT = 270;
    V0271_MOVE_BULLET_SEED_FAST = 271;
    V0272_MOVE_GRASS_KNOT = 272;
    V0273_MOVE_ENERGY_BALL = 273;
    V0274_MOVE_EXTRASENSORY_FAST = 274;
    V0275_MOVE_FUTURESIGHT = 275;
    V0276_MOVE_MIRROR_COAT = 276;
    V0277_MOVE_OUTRAGE = 277;
    V0278_MOVE_SNARL_FAST = 278;
    V0279_MOVE_CRUNCH = 279;
    V0280_MOVE_FOUL_PLAY = 280;
    V0281_MOVE_HIDDEN_POWER_FAST = 281;
    V0282_MOVE_TAKE_DOWN_FAST = 282;
    V0283_MOVE_WATERFALL_FAST = 283;
    V0284_MOVE_SURF = 284;
    V0285_MOVE_DRACO_METEOR = 285;
    V0286_MOVE_DOOM_DESIRE = 286;
    V0287_MOVE_YAWN_FAST = 287;
    V0288_MOVE_PSYCHO_BOOST = 288;
    V0289_MOVE_ORIGIN_PULSE = 289;
    V0290_MOVE_PRECIPICE_BLADES = 290;
    V0291_MOVE_PRESENT_FAST = 291;
    V0292_MOVE_WEATHER_BALL_FIRE = 292;
    V0293_MOVE_WEATHER_BALL_ICE = 293;
    V0294_MOVE_WEATHER_BALL_ROCK = 294;
    V0295_MOVE_WEATHER_BALL_WATER = 295;
    V0296_MOVE_FRENZY_PLANT = 296;
    V0297_MOVE_SMACK_DOWN_FAST = 297;
    V0298_MOVE_BLAST_BURN = 298;
    V0299_MOVE_HYDRO_CANNON = 299;
    V0300_MOVE_LAST_RESORT = 300;
    V0301_MOVE_METEOR_MASH = 301;
    V0302_MOVE_SKULL_BASH = 302;
    V0303_MOVE_ACID_SPRAY = 303;
    V0304_MOVE_EARTH_POWER = 304;
    V0305_MOVE_CRABHAMMER = 305;
    V0306_MOVE_LUNGE = 306;
    V0307_MOVE_CRUSH_CLAW = 307;
    V0308_MOVE_OCTAZOOKA = 308;
    V0309_MOVE_MIRROR_SHOT = 309;
    V0310_MOVE_SUPER_POWER = 310;
    V0311_MOVE_FELL_STINGER = 311;
    V0312_MOVE_LEAF_TORNADO = 312;
    V0313_MOVE_LEECH_LIFE = 313;
    V0314_MOVE_DRAIN_PUNCH = 314;
    V0315_MOVE_SHADOW_BONE = 315;
    V0316_MOVE_MUDDY_WATER = 316;
    V0317_MOVE_BLAZE_KICK = 317;
    V0318_MOVE_RAZOR_SHELL = 318;
    V0319_MOVE_POWER_UP_PUNCH = 319;
    V0320_MOVE_CHARM_FAST = 320;
    V0321_MOVE_GIGA_IMPACT = 321;
    V0322_MOVE_FRUSTRATION = 322;
    V0323_MOVE_RETURN = 323;
    V0324_MOVE_SYNCHRONOISE = 324;
    V0325_MOVE_LOCK_ON_FAST = 325;
    V0326_MOVE_THUNDER_FANG_FAST = 326;
    V0327_MOVE_ICE_FANG_FAST = 327;
    V0328_MOVE_HORN_DRILL = 328;
    V0329_MOVE_FISSURE = 329;
    V0330_MOVE_SACRED_SWORD = 330;
    V0331_MOVE_FLYING_PRESS = 331;
    V0332_MOVE_AURA_SPHERE = 332;
    V0333_MOVE_PAYBACK = 333;
    V0334_MOVE_ROCK_WRECKER = 334;
    V0335_MOVE_AEROBLAST = 335;
    V0336_MOVE_TECHNO_BLAST_NORMAL = 336;
    V0337_MOVE_TECHNO_BLAST_BURN = 337;
    V0338_MOVE_TECHNO_BLAST_CHILL = 338;
    V0339_MOVE_TECHNO_BLAST_WATER = 339;
    V0340_MOVE_TECHNO_BLAST_SHOCK = 340;
}

// ref: Holoholo.Rpc.HoloPokemonMovementType
enum HoloPokemonMovementType {
    POKEMON_ENC_MOVEMENT_STATIC = 0;
    POKEMON_ENC_MOVEMENT_JUMP = 1;
    POKEMON_ENC_MOVEMENT_VERTICAL = 2;
    POKEMON_ENC_MOVEMENT_PSYCHIC = 3;
    POKEMON_ENC_MOVEMENT_ELECTRIC = 4;
    POKEMON_ENC_MOVEMENT_FLYING = 5;
    POKEMON_ENC_MOVEMENT_HOVERING = 6;
}

// ref: Holoholo.Rpc.HoloPokemonNature
enum HoloPokemonNature {
    NATURE_UNKNOWN = 0;
    V0001_POKEMON_NATURE_STOIC = 1;
    V0002_POKEMON_NATURE_ASSASSIN = 2;
    V0003_POKEMON_NATURE_GUARDIAN = 3;
    V0004_POKEMON_NATURE_RAIDER = 4;
    V0005_POKEMON_NATURE_PROTECTOR = 5;
    V0006_POKEMON_NATURE_SENTRY = 6;
    V0007_POKEMON_NATURE_CHAMPION = 7;
}

// ref: Holoholo.Rpc.HoloPokemonType
enum HoloPokemonType {
    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;
}

// ref: Holoholo.Rpc.IncidentDisplayType
enum IncidentDisplayType {
    NONE = 0;
    INVASION_GRUNT = 1;
    INVASION_LEADER = 2;
    INVASION_GIOVANNI = 3;
}

// ref: Holoholo.Rpc.InvasionTelemetryIds
enum InvasionTelemetryIds {
    UNDEFINED_INVASION_EVENT = 0;
    INVASION_NPC_TAP = 1;
    INVASION_BATTLE_STARTED = 2;
    INVASION_BATTLE_FINISHED = 3;
    INVASION_ENCOUNTER_STARTED = 4;
    INVASION_ENCOUNTER_FINISHED = 5;
    INVASION_POKEMON_PURIFIED = 6;
    INVASION_AFTER_POI_EXITED = 7;
    INVASION_RADAR_VIEW_OPENED = 8;
    INVASION_RADAR_VIEW_CLOSED = 9;
    INVASION_RADAR_VIEW_EMPTY = 10;
    INVASION_DECOY_FOUND = 11;
    INVASION_GIOVANNI_FOUND = 12;
}

// ref: Holoholo.Rpc.InventoryUpgradeType
enum InventoryUpgradeType {
    UPGRADE_UNSET = 0;
    INCREASE_ITEM_STORAGE = 1;
    INCREASE_POKEMON_STORAGE = 2;
}

// ref: Holoholo.Rpc.Item
enum Item {
    ITEM_UNKNOWN = 0;
    ITEM_POKE_BALL = 1;
    ITEM_GREAT_BALL = 2;
    ITEM_ULTRA_BALL = 3;
    ITEM_MASTER_BALL = 4;
    ITEM_PREMIER_BALL = 5;
    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_INCENSE_BELUGA_BOX = 405;
    ITEM_TROY_DISK = 501;
    ITEM_TROY_DISK_GLACIAL = 502;
    ITEM_TROY_DISK_MOSSY = 503;
    ITEM_TROY_DISK_MAGNETIC = 504;
    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_GOLDEN_RAZZ_BERRY = 706;
    ITEM_GOLDEN_NANAB_BERRY = 707;
    ITEM_GOLDEN_PINAP_BERRY = 708;
    ITEM_POFFIN = 709;
    ITEM_SPECIAL_CAMERA = 801;
    ITEM_INCUBATOR_BASIC_UNLIMITED = 901;
    ITEM_INCUBATOR_BASIC = 902;
    ITEM_INCUBATOR_SUPER = 903;
    ITEM_POKEMON_STORAGE_UPGRADE = 1001;
    ITEM_ITEM_STORAGE_UPGRADE = 1002;
    ITEM_SUN_STONE = 1101;
    ITEM_KINGS_ROCK = 1102;
    ITEM_METAL_COAT = 1103;
    ITEM_DRAGON_SCALE = 1104;
    ITEM_UP_GRADE = 1105;
    ITEM_GEN4_EVOLUTION_STONE = 1106;
    ITEM_GEN5_EVOLUTION_STONE = 1107;
    ITEM_MOVE_REROLL_FAST_ATTACK = 1201;
    ITEM_MOVE_REROLL_SPECIAL_ATTACK = 1202;
    ITEM_MOVE_REROLL_ELITE_FAST_ATTACK = 1203;
    ITEM_MOVE_REROLL_ELITE_SPECIAL_ATTACK = 1204;
    ITEM_RARE_CANDY = 1301;
    ITEM_FREE_RAID_TICKET = 1401;
    ITEM_PAID_RAID_TICKET = 1402;
    ITEM_LEGENDARY_RAID_TICKET = 1403;
    ITEM_STAR_PIECE = 1404;
    ITEM_FRIEND_GIFT_BOX = 1405;
    ITEM_TEAM_CHANGE = 1406;
    ITEM_REMOTE_RAID_TICKET = 1408;
    ITEM_LEADER_MAP_FRAGMENT = 1501;
    ITEM_LEADER_MAP = 1502;
    ITEM_GIOVANNI_MAP = 1503;
    ITEM_GLOBAL_EVENT_TICKET = 1600;
}

// ref: Holoholo.Rpc.ItemUseTelemetryIds
enum ItemUseTelemetryIds {
    UNDEFINED_ITEM_EVENT = 0;
    USE_ITEM = 1;
    RECYCLE_ITEM = 2;
    UPDATE_ITEM_EQUIPPED = 3;
}

// ref: Holoholo.Rpc.LoginActionTelemetryIds
enum LoginActionTelemetryIds {
    UNDEFINED_LOGIN_ACTION = 0;
    CLICK_AGE_GATE = 1;
    CLICK_NEW_PLAYER = 2;
    CLICK_EXISTING_PLAYER = 3;
    CLICK_GOOGLE = 4;
    COMPLETE_GOOGLE = 5;
    CANCEL_GOOGLE = 6;
    CLICK_FACEBOOK = 7;
    COMPLETE_FACEBOOK = 8;
    CANCEL_FACEBOOK = 9;
    CLICK_PTC = 10;
    EXIT_PTC = 11;
    CLICK_PTC_REGISTER = 12;
    CLICK_PTC_SIGN_IN = 13;
    CANCEL_PTC_SIGN_IN = 14;
    COMPLETE_PTC_SIGN_IN = 15;
    CLICK_SUPERAWESOME = 16;
    EXIT_SUPERAWESOME = 17;
    CLICK_SUPERAWESOME_REGISTER = 18;
    CLICK_SUPERAWESOME_FORGOT_PASSWORD = 19;
    CLICK_SUPERAWESOME_SIGN_IN = 20;
    CANCEL_SUPERAWESOME_SIGN_IN = 21;
    COMPLETE_SUPERAWESOME_SIGN_IN = 22;
    EXIT_NEW_PLAYER = 23;
    EXIT_EXISTING_PLAYER = 24;
    LOGIN_STARTED = 25;
    CLICK_APPLE = 26;
    COMPLETE_APPLE = 27;
    CANCEL_APPLE = 28;
}

// ref: Holoholo.Rpc.MapEventsTelemetryIds
enum MapEventsTelemetryIds {
    UNDEFINED_MAP_EVENT = 0;
    ITEM_BAG = 1;
    MAIN_MENU = 2;
    POKEDEX = 3;
    PROFILE = 4;
    SETTINGS = 5;
    SHOP_FROM_MAP = 6;
    GYM = 7;
    POKESTOP = 8;
    RESEARCH = 9;
    COMPASS = 10;
    NEARBY = 11;
}

// ref: Holoholo.Rpc.Method
enum Method {
    METHOD_UNSET = 0;
    GET_PLAYER = 2;
    GET_HOLOHOLO_INVENTORY = 4;
    DOWNLOAD_SETTINGS = 5;
    DOWNLOAD_ITEM_TEMPLATES = 6;
    DOWNLOAD_REMOTE_CONFIG_VERSION = 7;
    REGISTER_BACKGROUND_DEVICE = 8;
    GET_PLAYER_DAY = 9;
    ACKNOWLEDGE_PUNISHMENT = 10;
    GET_SERVER_TIME = 11;
    GET_LOCAL_TIME = 12;
    FORT_SEARCH = 101;
    ENCOUNTER = 102;
    CATCH_POKEMON = 103;
    FORT_DETAILS = 104;
    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;
    GET_PLAYER_PROFILE = 121;
    EVOLVE_POKEMON = 125;
    GET_HATCHED_EGGS = 126;
    ENCOUNTER_TUTORIAL_COMPLETE = 127;
    LEVEL_UP_REWARDS = 128;
    CHECK_AWARDED_BADGES = 129;
    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;
    UPGRADE_POKEMON = 147;
    SET_FAVORITE_POKEMON = 148;
    NICKNAME_POKEMON = 149;
    EQUIP_BADGE = 150;
    SET_CONTACT_SETTINGS = 151;
    SET_BUDDY_POKEMON = 152;
    GET_BUDDY_WALKED = 153;
    USE_ITEM_ENCOUNTER = 154;
    GYM_DEPLOY = 155;
    GYM_GET_INFO = 156;
    GYM_START_SESSION = 157;
    GYM_BATTLE_ATTACK = 158;
    JOIN_LOBBY = 159;
    LEAVE_LOBBY = 160;
    SET_LOBBY_VISIBILITY = 161;
    SET_LOBBY_POKEMON = 162;
    GET_RAID_DETAILS = 163;
    GYM_FEED_POKEMON = 164;
    START_RAID_BATTLE = 165;
    ATTACK_RAID = 166;
    AWARD_POKECOIN = 167;
    USE_ITEM_STARDUST_BOOST = 168;
    REASSIGN_PLAYER = 169;
    REDEEM_POI_PASSCODE = 170;
    GET_ASSET_DIGEST = 300;
    GET_DOWNLOAD_URLS = 301;
    GET_ASSET_VERSION = 302;
    CLAIM_CODENAME = 403;
    SET_AVATAR = 404;
    SET_PLAYER_TEAM = 405;
    MARK_TUTORIAL_COMPLETE = 406;
    UPDATE_PERFORMANCE_METRICS = 407;
    CHECK_CHALLENGE = 600;
    VERIFY_CHALLENGE = 601;
    ECHO = 666;
    SFIDA_REGISTRATION = 800;
    SFIDA_ACTION_LOG = 801;
    SFIDA_CERTIFICATION = 802;
    SFIDA_UPDATE = 803;
    SFIDA_ACTION = 804;
    SFIDA_DOWSER = 805;
    SFIDA_CAPTURE = 806;
    LIST_AVATAR_CUSTOMIZATIONS = 807;
    SET_AVATAR_ITEM_AS_VIEWED = 808;
    GET_INBOX = 809;
    LIST_GYM_BADGES = 811;
    GET_GYM_BADGE_DETAILS = 812;
    USE_ITEM_MOVE_REROLL = 813;
    USE_ITEM_RARE_CANDY = 814;
    AWARD_FREE_RAID_TICKET = 815;
    FETCH_ALL_NEWS = 816;
    MARK_READ_NEWS_ARTICLE = 817;
    GET_PLAYER_DISPLAY_INFO = 818;
    BELUGA_TRANSACTION_START = 819;
    BELUGA_TRANSACTION_COMPLETE = 820;
    GET_NEW_QUESTS = 900;
    GET_QUEST_DETAILS = 901;
    COMPLETE_QUEST = 902;
    REMOVE_QUEST = 903;
    QUEST_ENCOUNTER = 904;
    COMPLETE_QUEST_STAMP_CARD = 905;
    SEND_GIFT = 950;
    OPEN_GIFT = 951;
    GIFT_DETAILS = 952;
    DELETE_GIFT = 953;
    SAVE_PLAYER_SNAPSHOT = 954;
    GET_FRIENDSHIP_MILESTONE_REWARDS = 955;
    CHECK_SEND_GIFT = 956;
    SET_FRIEND_NICKNAME = 957;
    DELETE_GIFT_FROM_INVENTORY = 958;
    SAVE_SOCIAL_PLAYER_SETTINGS = 959;
    SHARE_EX_RAID_PASS = 960;
    CHECK_SHARE_EX_RAID_PASS = 961;
    DECLINE_SHARED_EX_RAID_PASS = 962;
    OPEN_TRADING = 970;
    UPDATE_TRADING = 971;
    CONFIRM_TRADING = 972;
    CANCEL_TRADING = 973;
    GET_TRADING = 974;
    GET_FITNESS_REWARDS = 980;
    GET_COMBAT_PLAYER_PROFILE = 990;
    GENERATE_COMBAT_CHALLENGE_ID = 991;
    CREATE_COMBAT_CHALLENGE = 992;
    OPEN_COMBAT_CHALLENGE = 993;
    GET_COMBAT_CHALLENGE = 994;
    ACCEPT_COMBAT_CHALLENGE = 995;
    DECLINE_COMBAT_CHALLENGE = 996;
    CANCEL_COMBAT_CHALLENGE = 997;
    SUBMIT_COMBAT_CHALLENGE_POKEMONS = 998;
    SAVE_COMBAT_PLAYER_PREFERENCES = 999;
    OPEN_COMBAT_SESSION = 1000;
    UPDATE_COMBAT = 1001;
    QUIT_COMBAT = 1002;
    GET_COMBAT_RESULTS = 1003;
    UNLOCK_SPECIAL_MOVE = 1004;
    GET_NPC_COMBAT_REWARDS = 1005;
    COMBAT_FRIEND_REQUEST = 1006;
    OPEN_NPC_COMBAT_SESSION = 1007;
    START_TUTORIAL_ACTION = 1008;
    GET_TUTORIAL_EGG_ACTION = 1009;
    SEND_PROBE = 1020;
    PROBE_DATA = 1021;
    COMBAT_DATA = 1022;
    COMBAT_CHALLENGE_DATA = 1023;
    CHECK_PHOTOBOMB = 1101;
    CONFIRM_PHOTOBOMB = 1102;
    GET_PHOTOBOMB = 1103;
    ENCOUNTER_PHOTOBOMB = 1104;
    GET_SIGNED_GMAP_URL_DEPRECATED = 1105;
    CHANGE_TEAM = 1106;
    GET_WEB_TOKEN = 1107;
    COMPLETE_SNAPSHOT_SESSION = 1110;
    START_INCIDENT = 1200;
    INVASION_COMPLETE_DIALOGUE = 1201;
    INVASION_OPEN_COMBAT_SESSION = 1202;
    INVASION_BATTLE_UPDATE = 1203;
    INVASION_ENCOUNTER = 1204;
    PURIFY_POKEMON = 1205;
    VS_SEEKER_START_MATCHMAKING = 1300;
    CANCEL_MATCHMAKING = 1301;
    GET_MATCHMAKING_STATUS = 1302;
    COMPLETE_VS_SEEKER_AND_RESTART_CHARGING = 1303;
    GET_VS_SEEKER_STATUS = 1304;
    COMPLETE_COMBAT_COMPETITIVE_SEASON_ACTION = 1305;
    CLAIM_VS_SEEKER_REWARDS = 1306;
    VS_SEEKER_REWARD_ENCOUNTER = 1307;
    ACTIVATE_VS_SEEKER = 1308;
    GET_BUDDY_MAP = 1350;
    GET_BUDDY_STATS = 1351;
    FEED_BUDDY = 1352;
    OPEN_BUDDY_GIFT = 1353;
    PET_BUDDY = 1354;
    GET_BUDDY_HISTORY = 1355;
    CREATE_BUDDY_MUTLIPLAYER_SESSION = 1456;
    JOIN_BUDDY_MULTIPLAYER_SESSION = 1457;
    LEAVE_BUDDY_MULTIPLAYER_SESSION = 1458;
    GET_TODAY_VIEW = 1501;
    REMOTE_GIFT_PING = 1503;
    SEND_RAID_INVITATION = 1504;
}

// ref: Holoholo.Rpc.NewsPageTelemetryIds
enum NewsPageTelemetryIds {
    UNDEFINED_NEWS_EVENT = 0;
    NEWS_VIEWED = 1;
    NEWS_DISMISSED = 2;
    NEWS_LINK_CLICKED = 3;
    NEWS_UPDATED_APP = 4;
}

// ref: Holoholo.Rpc.NotificationCategory
enum NotificationCategory {
    unset__notification_category = 0;
    GYM_REMOVAL = 1;
    POKEMON_HUNGRY = 2;
    POKEMON_WON = 3;
    EXCLUSIVE_RAID_INVITE = 4;
    EXCLUSIVE_RAID_CANCELLATION = 5;
    GIFTBOX_INCOMING = 6;
    GIFTBOX_DELIVERED = 7;
    FRIENDSHIP_MILESTONE_REWARD = 8;
    GYM_BATTLE_FRIENDSHIP_INCREMENT = 9;
    SHARED_EXCLUSIVE_RAID_INVITE = 10;
    BGMODE_EGG_HATCH = 11;
    BGMODE_BUDDY_CANDY = 12;
    BGMODE_WEEKLY_FITNESS_REPORT = 13;
    COMBAT_CHALLENGE_OPENED = 14;
    BGMODE_OFF_SESSION_DISTANCE = 15;
    BGMODE_POI_PROXIMITY = 16;
    LUCKY_FRIEND = 17;
    BGMODE_NAMED_BUDDY_CANDY = 18;
    APP_BADGE_ONLY = 19;
    COMBAT_VS_SEEKER_CHARGED = 20;
    COMBAT_COMPETITIVE_SEASON_END = 21;
    BUDDY_HUNGRY = 22;
    BUDDY_FOUND_GIFT = 24;
    BUDDY_AFFECTION_LEVEL_MILESTONE = 25;
    BUDDY_AFFECTION_WALKING = 26;
    BUDDY_AFFECTION_CARE = 27;
    BUDDY_AFFECTION_BATTLE = 28;
    BUDDY_AFFECTION_PHOTO = 29;
    BUDDY_AFFECTION_POI = 30;
    BGMODE_BUDDY_FOUND_GIFT = 31;
    BUDDY_ATTRACTIVE_POI = 32;
    BGMODE_BUDDY_ATTRACTIVE_POI = 33;
    BUDDY_AFFECTION_ATTRACTIVE_POI = 36;
    POI_PASSCODE_REDEEMED = 37;
    NO_EGGS_INCUBATING = 38;
    RETENTION_UNOPENED_GIFTS = 39;
    RETENTION_STARPIECE = 40;
    RETENTION_INCENSE = 41;
    RETENTION_LUCKY_EGG = 42;
    RETENTION_ADVSYNC_REWARDS = 43;
    RETENTION_EGGS_NOT_INCUBATING = 44;
    RETENTION_POWER_WALK = 45;
    RETENTION_FUN_WITH_FRIENDS = 46;
    BUDDY_REMOTE_GIFT = 47;
    BGMODE_BUDDY_REMOTE_GIFT = 48;
}

// ref: Holoholo.Rpc.OnboardingArStatus
enum OnboardingArStatus {
    UNSET = 0;
    OFF = 1;
    AR_STANDARD = 2;
    AR_PLUS = 3;
}

// ref: Holoholo.Rpc.OnboardingEventIds
enum OnboardingEventIds {
    TOS_ACCEPTED = 0;
    PRIVACY_ACCEPTED = 1;
    CONVERSATION = 2;
    ENCOUNTER_ENTER = 3;
    ENCOUNTER_LEAVE = 4;
    AVATAR_SELECTION = 5;
    AVATAR_GENDER = 6;
    AVATAR_GENDER_CHOSEN = 7;
    AVATAR_HEAD_CHOSEN = 8;
    AVATAR_BODY_CHOSEN = 9;
    AVATAR_TRY_AGAIN = 10;
    AVATAR_ACCEPTED = 11;
    NAME_ENTRY = 12;
    NAME_UNAVAILABLE = 13;
    NAME_ACCEPTED = 14;
    POKEDEX_TUTORIAL_STARTED = 15;
    POKEDEX_TUTORIAL_INFO_PANEL_EXIT_PRESSED = 16;
    POKEDEX_EXIT_PRESSED = 17;
    EGG_TUTORIAL_STARTED = 18;
    EGG_TUTORIAL_PRESS = 19;
    EGG_TUTORIAL_FINISHED = 20;
    POKESTOP_LETSGO = 21;
    WILD_POKEMON_ENCOUNTER_ENTERED = 22;
    WILD_POKEMON_CAUGHT = 23;
    AR_STANDARD_ENABLED = 24;
    AR_STANDARD_REJECTED = 25;
    AR_PLUS_ENABLED = 26;
    AR_PLUS_REJECTED = 27;
}

// ref: Holoholo.Rpc.OnboardingPathIds
enum OnboardingPathIds {
    V1 = 0;
    V2 = 1;
}

// ref: Holoholo.Rpc.PermissionContextTelemetryIds
enum PermissionContextTelemetryIds {
    UNDEFINED_PERMISSION_CONTEXT = 0;
    EGG_HATCH = 1;
    BUDDY_CANDY_FOUND = 2;
    PLAYER_PROFILE_CLICKED = 3;
    SMART_WATCH_INSTALLED = 4;
    SFIDA_SESSION_STARTED = 5;
    SETTINGS_TOGGLE = 6;
    NEARBY_PANEL_OPENED = 7;
}

// ref: Holoholo.Rpc.PermissionFlowStepTelemetryIds
enum PermissionFlowStepTelemetryIds {
    UNDEFINED_PERMISSION_FLOW_STEP = 0;
    INITIAL_PROMPT = 1;
    FITNESS_PERMISSION = 2;
    LOCATION_PERMISSION = 3;
    ACTIVITY_PERMISSIONS = 4;
}

// ref: Holoholo.Rpc.Platform
enum Platform {
    PLATFORM_UNSET = 0;
    PLATFORM_IOS = 1;
    PLATFORM_ANDROID = 2;
    PLATFORM_OSX = 3;
    PLATFORM_WINDOWS = 4;
    PLATFORM_APPLE_WATCH = 5;
}

// ref: Holoholo.Rpc.PlayerAvatarType
enum PlayerAvatarType {
    PLAYER_AVATAR_MALE = 0;
    PLAYER_AVATAR_FEMALE = 1;
}

// ref: Holoholo.Rpc.PokemonBadge
enum PokemonBadge {
    POKEMON_BADGE_UNSET = 0;
    POKEMON_BADGE_BEST_BUDDY = 1;
}

// ref: Holoholo.Rpc.PokemonCreateContext
enum PokemonCreateContext {
    CREATE_CONTEXT_WILD = 0;
    CREATE_CONTEXT_EGG = 1;
    CREATE_CONTEXT_EVOLVE = 2;
}

// ref: Holoholo.Rpc.PokemonGoPlusIds
enum PokemonGoPlusIds {
    UNDEFINED_POKEMON_GO_PLUS_EVENT = 0;
    CANNOT_CONNECT_TO_PGP = 1;
    REGISTERING_PGP_FAILED = 2;
    REGISTERING_RETRY = 3;
    CONNECTION_SUCCESS = 4;
    PGP_DISCONNECTED_BY_USER = 5;
    PGP_DISCONNECTED_BY_TIMEOUT = 6;
    PGP_DISCONNECTED_BY_ERROR = 7;
    PGP_LOW_BATTERY = 8;
    BLUETOOTH_SENT_ERROR = 9;
    PGP_SEEN_BY_DEVICE = 10;
    POKEMON_CAUGHT = 11;
    POKEMON_NOT_CAUGHT = 12;
    POKEMON_NOT_CAUGHT_DUE_ERROR = 13;
    POKESTOP_SPUN = 14;
    POKESTOP_NOT_SPUN_DUE_ERROR = 15;
}

// ref: Holoholo.Rpc.PokemonInventoryTelemetryIds
enum PokemonInventoryTelemetryIds {
    UNDEFINED_POKEMON_INVENTORY_EVENT = 0;
    OPEN = 1;
    SORTING_CHANGE = 2;
    FILTER = 3;
}

// ref: Holoholo.Rpc.ProfilePageTelemetryIds
enum ProfilePageTelemetryIds {
    UNDEFINED_PROFILE_PAGE = 0;
    SHOP_FROM_PROFILE = 1;
    LOG = 2;
    SET_BUDDY = 3;
    CUSTOMIZE_AVATAR = 4;
}

// ref: Holoholo.Rpc.PushNotificationTelemetryIds
enum PushNotificationTelemetryIds {
    UNDEFINED_PUSH_NOTIFICATION_EVENT = 0;
    OPEN_APP = 1;
}

// ref: Holoholo.Rpc.QuestType
enum QuestType {
    QUEST_UNSET = 0;
    QUEST_FIRST_CATCH_OF_THE_DAY = 1;
    QUEST_FIRST_POKESTOP_OF_THE_DAY = 2;
    QUEST_MULTI_PART = 3;
    QUEST_CATCH_POKEMON = 4;
    QUEST_SPIN_POKESTOP = 5;
    QUEST_HATCH_EGG = 6;
    QUEST_COMPLETE_GYM_BATTLE = 7;
    QUEST_COMPLETE_RAID_BATTLE = 8;
    QUEST_COMPLETE_QUEST = 9;
    QUEST_TRANSFER_POKEMON = 10;
    QUEST_FAVORITE_POKEMON = 11;
    QUEST_AUTOCOMPLETE = 12;
    QUEST_USE_BERRY_IN_ENCOUNTER = 13;
    QUEST_UPGRADE_POKEMON = 14;
    QUEST_EVOLVE_POKEMON = 15;
    QUEST_LAND_THROW = 16;
    QUEST_GET_BUDDY_CANDY = 17;
    QUEST_BADGE_RANK = 18;
    QUEST_PLAYER_LEVEL = 19;
    QUEST_JOIN_RAID = 20;
    QUEST_COMPLETE_BATTLE = 21;
    QUEST_ADD_FRIEND = 22;
    QUEST_TRADE_POKEMON = 23;
    QUEST_SEND_GIFT = 24;
    QUEST_EVOLVE_INTO_POKEMON = 25;
    QUEST_COMPLETE_COMBAT = 27;
    QUEST_TAKE_SNAPSHOT = 28;
    QUEST_BATTLE_TEAM_ROCKET = 29;
    QUEST_PURIFY_POKEMON = 30;
    QUEST_FIND_TEAM_ROCKET = 31;
    QUEST_FIRST_GRUNT_OF_THE_DAY = 32;
    QUEST_BUDDY_FEED = 33;
    QUEST_BUDDY_EARN_AFFECTION_POINTS = 34;
    QUEST_BUDDY_PET = 35;
    QUEST_BUDDY_LEVEL = 36;
    QUEST_BUDDY_WALK = 37;
    QUEST_BUDDY_YATTA = 38;
    QUEST_USE_INCENSE = 39;
}

// ref: Holoholo.Rpc.RaidLevel
enum RaidLevel {
    RAID_LEVEL_UNSET = 0;
    RAID_LEVEL_1 = 1;
    RAID_LEVEL_2 = 2;
    RAID_LEVEL_3 = 3;
    RAID_LEVEL_4 = 4;
    RAID_LEVEL_5 = 5;
}

// ref: Holoholo.Rpc.RaidTelemetryIds
enum RaidTelemetryIds {
    UNDEFINED_RAID_EVENT = 0;
    APPROACH_ENTER = 1;
    APPROACH_CLICK_SPINNER = 2;
    APPROACH_JOIN = 3;
    APPROACH_TICKET_CONFIRMATION = 4;
    APPROACH_CLICK_TUTORIAL = 5;
    APPROACH_CLICK_SHOP = 6;
    APPROACH_CLICK_INSPECT = 7;
    LOBBY_ENTER = 8;
    LOBBY_CLICK_INVENTORY = 9;
    LOBBY_CLICK_EXIT = 10;
    LOBBY_TAP_AVATAR = 11;
    LOBBY_CLICK_REJOIN_BATTLE = 12;
    LOBBY_CLICK_LOBBY_PUBLIC = 13;
}

// ref: Holoholo.Rpc.RemoteRaidInviteAcceptSource
enum RemoteRaidInviteAcceptSource {
    UNDEFINED_REMOTE_RAID_INVITE_ACCEPT_SOURCE = 0;
    REMOTE_RAID_IN_APP = 1;
    REMOTE_RAID_PUSH_NOTIFICATION = 2;
}

// ref: Holoholo.Rpc.RemoteRaidJoinSource
enum RemoteRaidJoinSource {
    UNDEFINED_REMOTE_RAID_JOIN_SOURCE = 0;
    REMOTE_RAID_USED_MAP = 1;
    REMOTE_RAID_NEARBY_GUI = 2;
    REMOTE_RAID_INVITED_BY_FRIEND = 3;
}

// ref: Holoholo.Rpc.RemoteRaidTelemetryIds
enum RemoteRaidTelemetryIds {
    UNDEFINED_REMOTE_RAID_EVENT = 0;
    REMOTE_RAID_LOBBY_ENTER = 1;
    REMOTE_RAID_INVITE_SENT = 2;
    REMOTE_RAID_INVITE_ACCEPTED = 3;
    REMOTE_RAID_INVITE_REJECTED = 4;
}

// ref: Holoholo.Rpc.ShareExRaidPassResult
enum ShareExRaidPassResult {
    SHARE_EX_RAID_PASS_UNSET = 0;
    SHARE_EX_RAID_PASS_SUCCESS = 1;
    ERROR_FRIEND_ALREADY_INVITED_TO_SAME_RAID = 2;
    ERROR_EX_RAID_PASS_ALREADY_SHARED = 3;
    ERROR_FRIEND_ALREADY_HAS_SHARED_EX_PASS_IN_INVENTORY = 4;
    ERROR_TOO_LOW_FRIENDSHIP_LEVEL = 5;
    ERROR_FRIEND_NOT_FOUND = 6;
    ERROR_EX_RAID_ALREADY_STARTED = 7;
    ERROR_EX_RAID_INVALID = 8;
    ERROR_EX_RAID_PASS_NOT_FOUND = 9;
    ERROR_UNKNOWN = 10;
    ERROR_FRIEND_NOT_ELIGIBLE = 11;
}

// ref: Holoholo.Rpc.ShoppingPageScrollIds
enum ShoppingPageScrollIds {
    UNDEFINED_SHOPPING_PAGE_SCROLL_TYPE = 0;
    LAST_SCROLL = 1;
    MAX_SCROLL = 2;
}

// ref: Holoholo.Rpc.ShoppingPageTelemetryIds
enum ShoppingPageTelemetryIds {
    UNDEFINED_SHOPPING_PAGE_EVENT = 0;
    CLICK_CUSTOMIZE_AVATAR = 1;
    QUICK_SHOP_MORE = 2;
    QUICK_SHOP_EXCHANGE = 3;
    CLICK_SHOP = 4;
    QUIT_SHOP = 5;
    CLICK_SKU = 6;
    QUIT_SKU = 7;
    CLICK_SKU_EXCHANGE = 8;
    CLICK_SHOP_AVATAR = 9;
    QUIT_SHOP_AVATAR = 10;
    CLICK_AVATAR_TYPE = 11;
    QUIT_AVATAR_TYPE = 12;
    CLICK_AVATAR_ITEM = 13;
    QUIT_AVATAR_ITEM = 14;
    CONFIRM_AVATAR_ITEM = 15;
    CLICK_AVATAR_ITEM_COLOR = 16;
    QUIT_AVATAR_ITEM_COLOR = 17;
    CONFIRM_AVATAR_ITEM_COLOR = 18;
}

// ref: Holoholo.Rpc.ShoppingPageTelemetrySource
enum ShoppingPageTelemetrySource {
    UNDEFINED_SHOPPING_PAGE_SOURCE = 0;
    SOURCE_MAIN_MENU = 1;
    SOURCE_POKEMON_BAG_FULL = 2;
    SOURCE_INCUBATOR_SELECTOR = 3;
    SOURCE_POKESTOP_DISK_INTERACTION = 4;
    SOURCE_OPEN_GIFT_BAG_FULL = 5;
    SOURCE_QUICK_SHOP_BAG_FULL_ENCOUNTER = 6;
    SOURCE_QUICK_SHOP_BAG_FULL_RAID = 7;
    SOURCE_QUICK_SHOP_MORE = 8;
    SOURCE_AVATAR_ITEM = 9;
    SOURCE_POKEMON_ENCOUNTER = 10;
    SOURCE_PLAYER_PROFILE_PAGE = 11;
    SOURCE_STORE_FRONT = 12;
    SOURCE_AVATAR_CUSTOMIZATION_AWARD = 13;
    SOURCE_FIRST_TIME_USER_FLOW = 14;
    SOURCE_BADGE_DETAIL_AVATAR_REWARD = 15;
    SOURCE_QUICK_SHOP_BUDDY_INTERACTION_POFFIN = 100;
    SOURCE_QUICK_SHOP_BUDDY_QUICK_FEED_POFFIN = 101;
}

// ref: Holoholo.Rpc.SocialTelemetryIds
enum SocialTelemetryIds {
    UNDEFINED_SOCIAL = 0;
    FRIEND_TAB = 1;
    NOTIFICATION_TAB = 2;
    FRIEND_PROFILE = 3;
    OPEN_FRIEND_SHIP_LEVEL_DETAIL = 4;
    CLOSE_OPEN_GIFT_CONFIRMATION = 5;
    FRIEND_LIST_SORT_CHANGED = 6;
    FRIEND_LIST_CLOSED = 7;
}

// ref: Holoholo.Rpc.SouvenirTypeId
enum SouvenirTypeId {
    SOUVENIR_UNSET = 0;
    SOUVENIR_LONE_EARRING = 1;
    SOUVENIR_SMALL_BOUQUET = 2;
    SOUVENIR_SKIPPING_STONE = 3;
    SOUVENIR_BEACH_GLASS = 4;
    SOUVENIR_TROPICAL_SHELL = 5;
    SOUVENIR_MUSHROOM = 6;
    SOUVENIR_CHALKY_STONE = 7;
    SOUVENIR_PINECONE = 8;
    SOUVENIR_TROPICAL_FLOWER = 9;
    SOUVENIR_FLOWER_FRUITS = 10;
    SOUVENIR_CACTUS_FLOWER = 11;
    SOUVENIR_STRETCHY_SPRING = 12;
    SOUVENIR_MARBLE = 13;
    SOUVENIR_TORN_TICKET = 14;
    SOUVENIR_PRETTY_LEAF = 15;
}

// ref: Holoholo.Rpc.Store
enum Store {
    STORE_UNSET = 0;
    STORE_APPLE = 1;
    STORE_GOOGLE = 2;
    STORE_SAMSUNG = 3;
}

// ref: Holoholo.Rpc.Team
enum Team {
    UNSET = 0;
    TEAM_BLUE = 1;
    TEAM_RED = 2;
    TEAM_YELLOW = 3;
}

// ref: Holoholo.Rpc.TutorialCompletion
enum TutorialCompletion {
    LEGAL_SCREEN = 0;
    AVATAR_SELECTION = 1;
    ACCOUNT_CREATION = 2;
    POKEMON_CAPTURE = 3;
    NAME_SELECTION = 4;
    POKEMON_BERRY = 5;
    USE_ITEM = 6;
    FIRST_TIME_EXPERIENCE_COMPLETE = 7;
    POKESTOP_TUTORIAL = 8;
    GYM_TUTORIAL = 9;
    CHALLENGE_QUEST_TUTORIAL = 10;
    PRIVACY_POLICY_CONFIRMATION = 11;
    TRADING_TUTORIAL = 12;
    POI_SUBMISSION_TUTORIAL = 13;
    V1_START_TUTORIAL = 14;
    V2_START_TUTORIAL = 15;
    V2_CUSTOMIZED_AVATAR = 16;
    V2_CAUGHT_FIRST_WILD = 17;
    V2_FINISHED_TUTORIAL_CATCHES = 18;
    V2_NAME_SELECTION = 19;
    V2_EGG_GIVEN = 20;
    V2_START_EGG_TUTORIAL = 21;
    V2_COMPLETED_EGG_TUTORIAL = 22;
    AR_PHOTO_TUTORIAL = 23;
    STARTER_POKEMON_CAPTURED = 24;
    AR_PHOTO_FIRST_TIME_DIALOG = 25;
    AR_CLASSIC_PHOTO_TUTORIAL = 26;
    AR_PLUS_PHOTO_TUTORIAL = 27;
    INVASION_INTRODUCTION_DIALOG = 29;
    INVASION_ENCOUNTER_DIALOG = 30;
    INVASION_SHADOW_POKEMON_DIALOG = 31;
    INVASION_MAP_FRAGMENT_DIALOG = 33;
    INVASION_MAP_RECEIVED_DIALOG = 34;
    INVASION_MAP_2_RECEIVED_DIALOG = 35;
    BUDDY_WELCOME_PROMPT = 36;
    BUDDY_AR_PLUS_TUTORIAL = 37;
    BUDDY_FEED_TUTORIAL = 38;
    BUDDY_ON_MAP_PROMPT = 39;
    BATTLE_LEAGUE_HELP_TUTORIAL = 40;
    ARMP_TOS_CONFIRMATION = 41;
    BUDDY_REMOTE_GIFT_TUTORIAL = 42;
}

// ref: Holoholo.Rpc.VariableName
enum VariableName {
    unset__variable_name = 0;
    CODE_NAME = 1;
    TEAM = 2;
    LEVEL = 3;
    EXPERIENCE = 4;
    POKECOIN_BALANCE = 5;
    STARDUST_BALANCE = 6;
    EMAIL = 7;
    LOGIN_METHOD = 8;
    GYM_ID = 1000;
    GYM_NAME = 1001;
    POKEMON_DISPLAY = 1002;
    POKEDEX_ENTRY_NUMBER = 1003;
    POKEMON_ID = 1004;
    POKEMON_NICKNAME = 1005;
    GYM_BADGE_EARNED_POINTS = 1006;
    GYM_BADGE_PROGRESS = 1007;
    GYM_BADGE_RANK = 1008;
    GYM_BADGE_IMAGE_URL = 1009;
    GYM_BADGE_LEVEL_UP = 1010;
    POKECOIN_AWARDED = 1011;
    POKECOIN_AWARDED_TODAY = 1012;
    MAX_DAILY_POKECOIN = 1013;
    BATTLES_WON = 1014;
    BATTLES_LOST = 1015;
    DEPLOYED_MILLIS = 1016;
    RAID_SEED = 1017;
    EXCLUSIVE_RAID_CANCELLATION_INFO = 1018;
    GIFTBOX_DETAILS = 1019;
    FRIEND_AVATAR = 1020;
    FRIEND_TEAM = 1021;
    FRIEND_CODENAME = 1022;
    GIFT_LOOT_ITEMS = 1023;
    GIFT_EGG = 1024;
    FRIENDSHIP_MILESTONE_REWARD_DETAILS = 1025;
    FRIENDSHIP_LEVEL_DISPLAY = 1026;
    BGMODE_BUDDY_POKEMON_NICKNAME = 1027;
    COMBAT_CHALLENGE = 1028;
    COMBAT_CHALLENGER_CODENAME = 1029;
    BGMODE_OFF_SESSION_DISTANCE_KM = 1030;
    POI_NAME = 1031;
    FRIEND_ID = 1032;
    BUDDY_SHOWN_HEART_TYPE = 1033;
    POI_ID = 1034;
    POI_EXPIRATION = 1035;
    BUDDY_LEVEL = 1036;
    NUM_VS_SEEKER_CHARGES = 1037;
    SEASON_NUMBER = 1038;
    POI_PASSCODE_REDEMPTION_RESPONSE = 1039;
    GIFTBOX_COUNT = 1040;
}

// ref: Holoholo.Rpc.VsSeekerRewardTrack
enum VsSeekerRewardTrack {
    FREE = 0;
    PREMIUM = 1;
}

// ref: Holoholo.Rpc.WebTelemetryIds
enum WebTelemetryIds {
    UNDEFINED_WEB_EVENT = 0;
    POINT_OF_INTEREST_DESCRIPTION_WEB_CLICK = 1;
}

// ref: Holoholo.Rpc.AcceptCombatChallengeOutProto
message AcceptCombatChallengeOutProto {
    // ref: Holoholo.Rpc.AcceptCombatChallengeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_CHALLENGE_STATE = 2;
        ERROR_CHALLENGE_NOT_FOUND = 3;
        ERROR_POKEMON_NOT_IN_INVENTORY = 4;
        ERROR_NOT_ELIGIBLE_LEAGUE = 5;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 6;
        ERROR_OPPONENT_NOT_IN_RANGE = 7;
        ERROR_ALREADY_TIMEDOUT = 8;
        ERROR_ALREADY_CANCELLED = 9;
        ERROR_ACCESS_DENIED = 10;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
}

// ref: Holoholo.Rpc.AcceptCombatChallengeProto
message AcceptCombatChallengeProto {
    string challenge_id = 1;
    repeated fixed64 attacking_pokemon_id = 6;
}

// ref: Holoholo.Rpc.AcknowledgePunishmentOutProto
message AcknowledgePunishmentOutProto {
    // ref: Holoholo.Rpc.AcknowledgePunishmentOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.AcknowledgePunishmentProto
message AcknowledgePunishmentProto {
    bool is_warn = 1;
    bool is_suspended = 2;
}

// ref: Holoholo.Rpc.ActionLogEntry
message ActionLogEntry {
    // ref: Holoholo.Rpc.ActionLogEntry/ActionOneofCase
    //oneof Action {
        //none = 0;
        //catch_pokemon = 3;
        //fort_search = 4;
        //buddy_pokemon = 5;
        //raid_rewards = 6;
        //passcode_rewards = 7;
        //complete_quest = 8;
        //complete_quest_stamp_card = 9;
        //complete_quest_pokemon_encounter = 10;
        //beluga_transfer = 11;
        //open_gift = 12;
        //send_gift = 13;
        //trading = 14;
        //share_ex_raid_pass = 15;
        //decline_ex_raid_pass = 16;
        //fitness_rewards = 17;
        //combat = 18;
        //purify_pokemon = 19;
        //invasion_victory = 20;
        //vs_seeker_set = 21;
        //vs_seeker_complete_season = 22;
        //vs_seeker_win_rewards = 23;
    //}

    int64 timestamp_ms = 1;
    bool sfida = 2;
    CatchPokemonLogEntry catch_pokemon = 3;
    FortSearchLogEntry fort_search = 4;
    BuddyPokemonLogEntry buddy_pokemon = 5;
    RaidRewardsLogEntry raid_rewards = 6;
    PasscodeRewardsLogEntry passcode_rewards = 7;
    CompleteQuestLogEntry complete_quest = 8;
    CompleteQuestStampCardLogEntry complete_quest_stamp_card = 9;
    CompleteQuestPokemonEncounterLogEntry complete_quest_pokemon_encounter = 10;
    BelugaDailyTransferLogEntry beluga_transfer = 11;
    OpenGiftLogEntry open_gift = 12;
    SendGiftLogEntry send_gift = 13;
    TradingLogEntry trading = 14;
    ShareExRaidPassLogEntry share_ex_raid_pass = 15;
    DeclineExRaidPassLogEntry decline_ex_raid_pass = 16;
    FitnessRewardsLogEntry fitness_rewards = 17;
    CombatLogEntry combat = 18;
    PurifyPokemonLogEntry purify_pokemon = 19;
    InvasionVictoryLogEntry invasion_victory = 20;
    VsSeekerSetLogEntry vs_seeker_set = 21;
    VsSeekerCompleteSeasonLogEntry vs_seeker_complete_season = 22;
    VsSeekerWinRewardsLogEntry vs_seeker_win_rewards = 23;
}

// ref: Holoholo.Rpc.ActivateVsSeekerOutProto
message ActivateVsSeekerOutProto {
    // ref: Holoholo.Rpc.ActivateVsSeekerOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS_ACTIVATED = 1;
        ERROR_NO_PREMIUM_BATTLE_PASS = 2;
        ERROR_VS_SEEKER_NOT_CHARGED = 3;
        ERROR_VS_SEEKER_ALREADY_ACTIVATED = 4;
        ERROR_EXCEEDED_LIMIT = 5;
        ERROR_TEMPORARILY_UNAVAILABLE = 6;
    }

    Result result = 1;
    VsSeekerAttributesProto vs_seeker = 2;
}

// ref: Holoholo.Rpc.ActivateVsSeekerProto
message ActivateVsSeekerProto {
    VsSeekerRewardTrack reward_track = 1;
}

// ref: Holoholo.Rpc.AddFortModifierOutProto
message AddFortModifierOutProto {
    // ref: Holoholo.Rpc.AddFortModifierOutProto/Types/Result
    enum Result {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        FORT_ALREADY_HAS_MODIFIER = 2;
        TOO_FAR_AWAY = 3;
        NO_ITEM_IN_INVENTORY = 4;
        POI_INACCESSIBLE = 5;
    }

    Result result = 1;
    FortDetailsOutProto fort_details_out_proto = 2;
}

// ref: Holoholo.Rpc.AddFortModifierProto
message AddFortModifierProto {
    Item modifier_type = 1;
    string fort_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

// ref: Holoholo.Rpc.AddFriendQuestProto
message AddFriendQuestProto {
    repeated string added_friend_ids = 1;
}

// ref: Holoholo.Rpc.AdventureSyncV2GmtProto
message AdventureSyncV2GmtProto {
    bool feature_enabled = 1;
}

// ref: Holoholo.Rpc.AnimationOverrideProto
message AnimationOverrideProto {
    // ref: Holoholo.Rpc.AnimationOverrideProto/Types/PokemonAnim
    enum PokemonAnim {
        NONE = 0;
        IDLE_01 = 1;
        IDLE_02 = 2;
        LAND = 3;
        ATTACK_01 = 4;
        ATTACK_02 = 5;
        DAMAGED = 6;
        STUNNED = 7;
        LOOP = 8;
    }

    PokemonAnim animation = 1;
    bool blacklist = 2;
    float anim_min = 3;
    float anim_max = 4;
}

// ref: Holoholo.Rpc.AppliedItemProto
message AppliedItemProto {
    Item item = 1;
    HoloItemType item_type = 2;
    int64 expiration_ms = 3;
    int64 applied_ms = 4;
}

// ref: Holoholo.Rpc.AppliedItemsProto
message AppliedItemsProto {
    repeated AppliedItemProto item = 4;
}

// ref: Holoholo.Rpc.ARBuddyMultiplayerSessionTelemetry
message ARBuddyMultiplayerSessionTelemetry {
    bool camera_permission_granted = 1;
    int64 host_time_to_publish_first_map = 2;
    int32 host_number_of_maps_published = 3;
    bool host_mapping_successful = 4;
    bool lobby_connection_successful = 5;
    int64 time_from_start_of_session_to_sync = 6;
    bool sync_successful = 7;
    int64 session_length = 8;
    int32 crash_count = 9;
    int64 duration_spent_in_lobby = 10;
    int64 time_from_invite_to_lobby = 11;
    int64 time_from_lobby_to_session = 12;
    int64 length_of_ar_session = 13;
    int32 players_connected = 14;
    int32 players_dropped = 15;
    int32 num_photos_taken = 16;
    bool is_host = 17;
}

// ref: Holoholo.Rpc.ArdkConfigSettingsProto
message ArdkConfigSettingsProto {
    // ref: Holoholo.Rpc.ArdkConfigSettingsProto/Types/ArContext
    enum ArContext {
        UNSET = 0;
        AR_ENCOUNTER = 1;
        AR_SNAPSHOT = 2;
        SINGLEPLAYER_BUDDY = 3;
        MULTIPLAYER_BUDDY = 4;
    }

    string orb_vocab_url = 1;
    string monodpeth_model_url = 2;
    repeated string monodepth_devices = 3;
    repeated ArContext monodepth_contexts = 4;
    string ios_monodepth_model_url = 5;
    string android_monodepth_model_url = 6;
}

// ref: Holoholo.Rpc.ArMappingSettingsProto
message ArMappingSettingsProto {
    int32 min_hours_between_prompt = 1;
    int32 max_video_time_seconds = 2;
    int32 preview_video_bitrate_kbps = 3;
    int32 preview_video_deadline_ms = 4;
    int32 research_video_bitrate_kbps = 5;
    int32 research_video_deadline_ms = 6;
    int32 min_video_time_seconds = 7;
    int32 preview_frame_rate_fps = 8;
    int32 preview_frames_to_jump = 9;
    int32 max_upload_chunk_rejected_count = 10;
    int32 ardk_desired_accuracy_mm = 11;
    int32 ardk_update_distance_mm = 12;
}

// ref: Holoholo.Rpc.ArMappingTelemetryProto
message ArMappingTelemetryProto {
    // ref: Holoholo.Rpc.ArMappingTelemetryProto/Types/ArMappingEntryPoint
    enum ArMappingEntryPoint {
        UNKNOWN_ENTRY = 0;
        POI_EDIT_MENU = 1;
        POI_EDIT_TITLE = 2;
        POI_EDIT_DESCRIPTION = 3;
        POI_ADD_PHOTO = 4;
        POI_EDIT_LOCATION = 5;
        POI_NOMINATION = 6;
    }

    // ref: Holoholo.Rpc.ArMappingTelemetryProto/Types/ArMappingEventId
    enum ArMappingEventId {
        UNKNOWN = 0;
        ENTER_STATE = 1;
        OPT_IN_ACCEPT = 2;
        OPT_IN_DENY = 3;
        OPT_IN_SETTINGS = 4;
        OPT_OUT_SETTINGS = 5;
        EXIT_FROM_RECORDING = 6;
        START_RECORDING = 7;
        STOP_RECORDING = 8;
        CANCEL_ENCODING = 9;
        UPLOAD_NOW = 10;
        UPLOAD_LATER = 11;
        CANCEL_UPLOAD = 12;
        START_UPLOAD_SETTINGS = 13;
        UPLOAD_SUCCESS = 14;
        OPT_IN_LEARN_MORE = 15;
    }

    ArMappingEventId ar_mapping_telemetry_id = 1;
    ArMappingEntryPoint source = 2;
    float recording_length_seconds = 3;
    float time_elapsed_seconds = 4;
    float percent_encoded = 5;
    int64 data_size_bytes = 6;
}

// ref: Holoholo.Rpc.ArPhotoGlobalSettings
message ArPhotoGlobalSettings {
    int32 min_player_level = 1;
}

// ref: Holoholo.Rpc.ArPhotoSessionProto
message ArPhotoSessionProto {
    // ref: Holoholo.Rpc.ArPhotoSessionProto/Types/ArContext
    enum ArContext {
        NONE = 0;
        AR_ENCOUNTER = 1;
        AR_SNAPSHOT = 2;
        SINGLEPLAYER_BUDDY = 3;
        MULTIPLAYER_BUDDY = 4;
    }

    // ref: Holoholo.Rpc.ArPhotoSessionProto/Types/ArType
    enum ArType {
        UNSET = 0;
        PLUS = 1;
        CLASSIC = 2;
    }

    // ref: Holoholo.Rpc.ArPhotoSessionProto/Types/Step
    enum Step {
        UNKNOWN = 0;
        CAMERA_PERMISSION_GRANTED = 1;
        ARPLUS_PLANE_FOUND = 2;
        ARPLUS_POKEMON_PLACED = 3;
        PHOTO_TAKEN = 4;
        PHOTO_SHARED = 5;
    }

    ArType ar_type = 1;
    Step furthest_step_completed = 2;
    int32 num_photos_taken = 3;
    int32 num_photos_shared = 4;
    int32 num_photos_taken_occlusions = 5;
    int32 num_occlusions_enabled = 6;
    int32 num_occlusions_disabled = 7;
    ArContext ar_context = 8;
    int64 session_length = 9;
    int64 session_length_occlusions = 10;
    int32 num_photos_shared_occlusions = 11;
    string model_url = 12;
}

// ref: Holoholo.Rpc.ARPlusEncounterValuesProto
message ARPlusEncounterValuesProto {
    float proximity = 1;
    float awareness = 2;
    bool pokemon_frightened = 3;
}

// ref: Holoholo.Rpc.AssetBundleDownloadTelemetry
message AssetBundleDownloadTelemetry {
    AssetTelemetryIds asset_event_id = 1;
    string bundle_name = 2;
    uint32 size = 3;
}

// ref: Holoholo.Rpc.AssetDigestEntryProto
message AssetDigestEntryProto {
    string asset_id = 1;
    string bundle_name = 2;
    int64 version = 3;
    fixed32 checksum = 4;
    int32 size = 5;
    bytes key = 6;
}

// ref: Holoholo.Rpc.AssetDigestOutProto
message AssetDigestOutProto {
    // ref: Holoholo.Rpc.AssetDigestOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        PAGE = 2;
        RETRY = 3;
    }

    repeated AssetDigestEntryProto digest = 1;
    uint64 timestamp = 2;
    Result result = 3;
    int32 page_offset = 4;
}

// ref: Holoholo.Rpc.AssetDigestRequestProto
message AssetDigestRequestProto {
    Platform platform = 1;
    string device_manufacturer = 2;
    string device_model = 3;
    string locale = 4;
    uint32 app_version = 5;
    bool paginate = 6;
    int32 page_offset = 7;
    uint64 page_timestamp = 8;
}

// ref: Holoholo.Rpc.AssetPoiDownloadTelemetry
message AssetPoiDownloadTelemetry {
    AssetTelemetryIds asset_event_id = 1;
    string fort_id = 2;
    uint32 size = 3;
}

// ref: Holoholo.Rpc.AssetStreamCacheCulledTelemetry
message AssetStreamCacheCulledTelemetry {
    AssetTelemetryIds asset_event_id = 1;
    uint32 space_released = 2;
}

// ref: Holoholo.Rpc.AssetStreamDownloadTelemetry
message AssetStreamDownloadTelemetry {
    AssetTelemetryIds asset_event_id = 1;
    string url = 2;
    uint32 size = 3;
}

// ref: Holoholo.Rpc.AssetVersionOutProto
message AssetVersionOutProto {
    // ref: Holoholo.Rpc.AssetVersionOutProto/Types/Result
    enum Result {
        UNSET = 0;
        ERROR = 1;
        VALID = 2;
        EXPIRED = 3;
    }

    // ref: Holoholo.Rpc.AssetVersionOutProto/Types/AssetVersionResponseProto
    message AssetVersionResponseProto {
        Result result = 1;
        AssetDigestEntryProto digest = 2;
        string url = 3;
    }

    repeated AssetVersionResponseProto response = 1;
}

// ref: Holoholo.Rpc.AssetVersionProto
message AssetVersionProto {
    // ref: Holoholo.Rpc.AssetVersionProto/Types/AssetVersionRequestProto
    message AssetVersionRequestProto {
        string asset_id = 1;
        fixed32 checksum = 2;
    }

    uint32 app_version = 1;
    repeated AssetVersionRequestProto request = 2;
}

// ref: Holoholo.Rpc.AttackGymOutProto
message AttackGymOutProto {
    // ref: Holoholo.Rpc.AttackGymOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_ATTACK_ACTIONS = 2;
        ERROR_NOT_IN_RANGE = 3;
    }

    Result result = 1;
    BattleLogProto battle_log = 2;
    string battle_id = 3;
    PokemonInfo active_defender = 4;
    PokemonInfo active_attacker = 5;
    BattleUpdateProto battle_update = 6;
}

// ref: Holoholo.Rpc.AttackGymProto
message AttackGymProto {
    string gym_id = 1;
    string battle_id = 2;
    repeated BattleActionProto attacker_actions = 3;
    BattleActionProto last_retrieved_action = 4;
    double player_lat_degrees = 5;
    double player_lng_degrees = 6;
}

// ref: Holoholo.Rpc.AttackRaidBattleOutProto
message AttackRaidBattleOutProto {
    // ref: Holoholo.Rpc.AttackRaidBattleOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_GYM_NOT_FOUND = 2;
        ERROR_BATTLE_NOT_FOUND = 3;
        ERROR_INVALID_ATTACK_ACTIONS = 4;
        ERROR_NOT_PART_OF_BATTLE = 5;
        ERROR_BATTLE_ID_NOT_RAID = 6;
    }

    Result result = 1;
    BattleUpdateProto battle_update = 2;
}

// ref: Holoholo.Rpc.AttackRaidBattleProto
message AttackRaidBattleProto {
    string gym_id = 1;
    string battle_id = 2;
    repeated BattleActionProto attacker_actions = 3;
    BattleActionProto last_retrieved_action = 4;
    int64 timestamp_ms = 5;
}

// ref: Holoholo.Rpc.AvatarCustomizationProto
message AvatarCustomizationProto {
    // ref: Holoholo.Rpc.AvatarCustomizationProto/Types/AvatarCustomizationPromoType
    enum AvatarCustomizationPromoType {
        UNSET_PROMO_TYPE = 0;
        SALE = 1;
        FEATURED = 2;
    }

    // ref: Holoholo.Rpc.AvatarCustomizationProto/Types/AvatarCustomizationUnlockType
    enum AvatarCustomizationUnlockType {
        UNSET_UNLOCK_TYPE = 0;
        DEFAULT = 1;
        MEDAL_REWARD = 2;
        IAP_CLOTHING = 3;
        LEVEL_REWARD = 4;
        COMBAT_RANK_REWARD = 5;
    }

    // ref: Holoholo.Rpc.AvatarCustomizationProto/Types/Slot
    enum Slot {
        UNSET_SLOT = 0;
        HAIR = 1;
        SHIRT = 2;
        PANTS = 3;
        HAT = 4;
        SHOES = 5;
        EYES = 6;
        BACKPACK = 7;
        GLOVES = 8;
        SOCKS = 9;
        BELT = 10;
        GLASSES = 11;
        NECKLACE = 12;
        SKIN = 13;
        POSE = 14;
    }

    bool enabled = 1;
    PlayerAvatarType avatar_type = 2;
    repeated Slot slot = 3;
    string bundle_name = 4;
    string asset_name = 5;
    string group_name = 6;
    int32 sort_order = 7;
    AvatarCustomizationUnlockType unlock_type = 8;
    repeated AvatarCustomizationPromoType promo_type = 9;
    HoloBadgeType unlock_badge_type = 10;
    string iap_sku = 11;
    int32 unlock_badge_level = 12;
    string icon_name = 13;
    int32 unlock_player_level = 14;
    string set_name = 15;
    bool set_prime_item = 16;
    repeated string incompatible_bundle_names = 17;
}

// ref: Holoholo.Rpc.AvatarCustomizationTelemetry
message AvatarCustomizationTelemetry {
    AvatarCustomizationTelemetryIds avatar_customization_click_id = 1;
    string asset_name = 2;
    string sku = 3;
    bool has_enough_coins = 4;
    string group_name = 5;
    string color_choice_id = 6;
}

// ref: Holoholo.Rpc.AvatarGlobalSettingsProto
message AvatarGlobalSettingsProto {
    bool enable_pose = 1;
}

// ref: Holoholo.Rpc.AvatarGroupOrderSettingsProto
message AvatarGroupOrderSettingsProto {
    // ref: Holoholo.Rpc.AvatarGroupOrderSettingsProto/Types/AvatarGroupOrderProto
    message AvatarGroupOrderProto {
        string name = 1;
        int32 order = 2;
    }

    repeated AvatarGroupOrderProto group = 1;
}

// ref: Holoholo.Rpc.AvatarItemProto
message AvatarItemProto {
    string avatar_template_id = 1;
    int64 new_timestamp_ms = 2;
    bool viewed = 3;
}

// ref: Holoholo.Rpc.AwardedGymBadge
message AwardedGymBadge {
    string fort_id = 1;
    GymBadgeType gym_badge_type = 2;
    uint32 score = 3;
    GymBadgeStats gym_badge_stats = 4;
    uint64 last_update_timestamp_ms = 5;
    string name = 6;
    string image_url = 7;
    string description = 8;
    double latitude = 9;
    double longitude = 10;
    uint64 last_check_timestamp_ms = 11;
    uint32 earned_points = 12;
    float progress = 13;
    bool level_up = 14;
    PlayerRaidInfoProto raids = 15;
}

// ref: Holoholo.Rpc.AwardFreeRaidTicketOutProto
message AwardFreeRaidTicketOutProto {
    // ref: Holoholo.Rpc.AwardFreeRaidTicketOutProto/Types/Result
    enum Result {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_DOES_NOT_MEET_MIN_LEVEL = 2;
        ERROR_DAILY_TICKET_ALREADY_AWARDED = 3;
        ERROR_PLAYER_OUT_OF_RANGE = 4;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.AwardFreeRaidTicketProto
message AwardFreeRaidTicketProto {
    string gym_id = 1;
    double player_lat_degrees = 2;
    double player_lng_degrees = 3;
}

// ref: Holoholo.Rpc.AwardItemProto
message AwardItemProto {
    Item item = 1;
    int32 item_count = 2;
    int32 bonus_count = 3;
}

// ref: Holoholo.Rpc.BackgroundModeGlobalSettingsProto
message BackgroundModeGlobalSettingsProto {
    uint32 min_player_level_fitness = 1;
    int64 service_prompt_timestamp_ms = 2;
}

// ref: Holoholo.Rpc.BackgroundModeSettingsProto
message BackgroundModeSettingsProto {
    double weekly_fitness_goal_level1_distance_km = 1;
    double weekly_fitness_goal_level2_distance_km = 2;
    double weekly_fitness_goal_level3_distance_km = 3;
    double weekly_fitness_goal_level4_distance_km = 4;
}

// ref: Holoholo.Rpc.BackgroundToken
message BackgroundToken {
    bytes token = 1;
    int64 expiration_time = 2;
    bytes iv = 3;
}

// ref: Holoholo.Rpc.BadgeCaptureReward
message BadgeCaptureReward {
    float capture_reward_multiplier = 1;
    repeated string avatar_template_ids = 2;
}

// ref: Holoholo.Rpc.BadgeSettingsProto
message BadgeSettingsProto {
    HoloBadgeType badge_type = 1;
    int32 badge_ranks = 2;
    repeated int32 targets = 3;
    repeated BadgeCaptureReward capture_reward = 4;
    bool event_badge = 5;
    EventBadgeSettingsProto event_badge_settings = 6;
    string combat_league_template_id = 7;
}

// ref: Holoholo.Rpc.BattleActionProto
message BattleActionProto {
    // ref: Holoholo.Rpc.BattleActionProto/Types/ActionType
    enum ActionType {
        UNSET = 0;
        ATTACK = 1;
        DODGE = 2;
        SPECIAL_ATTACK = 3;
        SWAP_POKEMON = 4;
        FAINT = 5;
        PLAYER_JOIN = 6;
        PLAYER_QUIT = 7;
        VICTORY = 8;
        DEFEAT = 9;
        TIMED_OUT = 10;
        SPECIAL_ATTACK_2 = 11;
    }

    ActionType type = 1;
    int64 action_start_ms = 2;
    int32 duration_ms = 3;
    int32 energy_delta = 5;
    int32 attacker_index = 6;
    int32 target_index = 7;
    fixed64 active_pokemon_id = 8;
    BattleParticipantProto joined_player = 9;
    BattleResultsProto battle_results = 10;
    int64 damage_window_start_ms = 11;
    int64 damage_window_end_ms = 12;
    BattleParticipantProto quit_player = 13;
    fixed64 target_pokemon_id = 14;
    LeveledUpFriendsProto leveled_up_friends = 15;
}

// ref: Holoholo.Rpc.BattleAttributesProto
message BattleAttributesProto {
    float sta_percent = 1;
    float atk_percent = 2;
    float def_percent = 3;
    float duration_s = 4;
}

// ref: Holoholo.Rpc.BattleHubBadgeSettings
message BattleHubBadgeSettings {
    repeated HoloBadgeType combat_hub_displayed_badges = 1;
}

// ref: Holoholo.Rpc.BattleHubOrderSettings
message BattleHubOrderSettings {
    // ref: Holoholo.Rpc.BattleHubOrderSettings/Types/SectionGroup
    message SectionGroup {
        repeated BattleHubSection section = 1;
    }

    // ref: Holoholo.Rpc.BattleHubOrderSettings/Types/SectionSettings
    message SectionSettings {
        BattleHubSection main_section = 1;
        repeated BattleHubSubsection subsection = 2;
    }

    repeated SectionSettings section = 1;
    repeated SectionGroup section_group = 2;
}

// ref: Holoholo.Rpc.BattleLogProto
message BattleLogProto {
    // ref: Holoholo.Rpc.BattleLogProto/Types/BattleType
    enum BattleType {
        BATTLE_TYPE_UNSET = 0;
        NORMAL = 1;
        TRAINING = 2;
        RAID = 3;
    }

    // ref: Holoholo.Rpc.BattleLogProto/Types/State
    enum State {
        STATE_UNSET = 0;
        ACTIVE = 1;
        VICTORY = 2;
        DEFEATED = 3;
        TIMED_OUT = 4;
    }

    State state = 1;
    BattleType battle_type = 2;
    int64 server_ms = 3;
    repeated BattleActionProto battle_actions = 4;
    int64 battle_start_ms = 5;
    int64 battle_end_ms = 6;
}

// ref: Holoholo.Rpc.BattleParticipantProto
message BattleParticipantProto {
    PokemonInfo active_pokemon = 1;
    PlayerPublicProfileProto trainer_public_profile = 2;
    repeated PokemonInfo reserve_pokemon = 3;
    repeated PokemonInfo defeated_pokemon = 4;
    repeated LobbyPokemonProto lobby_pokemon = 5;
    int32 damage_dealt = 6;
    bool super_effective_charge_move = 7;
    bool weather_boosted = 8;
    FriendshipLevelMilestone highest_friendship_milestone = 9;
    repeated string friend_codename = 10;
    bool is_remote = 11;
    bool is_social_invite = 12;
}

// ref: Holoholo.Rpc.BattlePartyTelemetry
message BattlePartyTelemetry {
    BattlePartyTelemetryIds battle_party_click_id = 1;
    int32 battle_party_count = 2;
    int32 battle_party_number = 3;
}

// ref: Holoholo.Rpc.BattleProto
message BattleProto {
    int64 battle_start_ms = 1;
    int64 battle_end_ms = 2;
    string battle_id = 3;
    BattleParticipantProto defender = 4;
    BattleLogProto battle_log = 5;
    BattleParticipantProto attacker = 6;
    GameplayWeatherProto.WeatherCondition weather_condition = 7;
    FriendshipLevelMilestone highest_friendship_milestone = 8;
}

// ref: Holoholo.Rpc.BattleResultsProto
message BattleResultsProto {
    GymStateProto gym_state = 1;
    repeated BattleParticipantProto attackers = 2;
    repeated int32 player_xp_awarded = 3;
    int64 next_defender_pokemon_id = 4;
    int32 gym_points_delta = 5;
    GymStatusAndDefendersProto gym_status = 6;
    repeated ParticipationProto participation = 7;
    repeated LootProto raid_item_rewards = 8;
    repeated RaidEncounterProto post_raid_encounter = 9;
    repeated AwardedGymBadge gym_badge = 10;
    repeated LootProto default_raid_item_rewards = 11;
}

// ref: Holoholo.Rpc.BattleUpdateProto
message BattleUpdateProto {
    BattleLogProto battle_log = 1;
    string battle_id = 2;
    PokemonInfo active_defender = 3;
    PokemonInfo active_attacker = 4;
    FriendshipLevelMilestone highest_friendship_milestone = 5;
}

// ref: Holoholo.Rpc.BelugaBleCompleteTransferRequestProto
message BelugaBleCompleteTransferRequestProto {
    int64 transaction_id = 1;
    int32 beluga_requested_item_id = 2;
    string nonce = 3;
}

// ref: Holoholo.Rpc.BelugaBleFinalizeTransfer
message BelugaBleFinalizeTransfer {
    BelugaBleTransferCompleteProto beluga_transfer_complete = 1;
    bytes server_signature = 2;
}

// ref: Holoholo.Rpc.BelugaBleTransferCompleteProto
message BelugaBleTransferCompleteProto {
    string nonce = 1;
    string beluga_id = 2;
}

// ref: Holoholo.Rpc.BelugaBleTransferPrepProto
message BelugaBleTransferPrepProto {
    repeated BelugaPokemonProto pokemon_list = 1;
    bool eligble_for_item = 2;
    int64 transaction_id = 3;
    string beluga_id = 4;
    string nonce = 5;
}

// ref: Holoholo.Rpc.BelugaBleTransferProto
message BelugaBleTransferProto {
    BelugaBleTransferPrepProto server_response = 1;
    bytes server_signature = 2;
    repeated string localized_origins = 3;
    string language = 4;
}

// ref: Holoholo.Rpc.BelugaDailyTransferLogEntry
message BelugaDailyTransferLogEntry {
    // ref: Holoholo.Rpc.BelugaDailyTransferLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    bool includes_weekly_bonus = 2;
    LootProto items_awarded = 3;
}

// ref: Holoholo.Rpc.BelugaGlobalSettingsProto
message BelugaGlobalSettingsProto {
    bool enable_beluga_transfer = 1;
    int32 max_num_pokemon_per_transfer = 2;
}

// ref: Holoholo.Rpc.BelugaIncenseBoxProto
message BelugaIncenseBoxProto {
    bool is_usable = 1;
    int64 cool_down_finished_timestamp_ms = 2;
}

// ref: Holoholo.Rpc.BelugaPokemonProto
message BelugaPokemonProto {
    // ref: Holoholo.Rpc.BelugaPokemonProto/Types/PokemonCostume
    enum PokemonCostume {
        UNSET = 0;
        HOLIDAY_2016 = 1;
        ANNIVERSARY = 2;
        ONE_YEAR_ANNIVERSARY = 3;
        HALLOWEEN_2017 = 4;
    }

    // ref: Holoholo.Rpc.BelugaPokemonProto/Types/PokemonForm
    enum PokemonForm {
        FORM_UNSET = 0;
        ALOLA = 1;
    }

    // ref: Holoholo.Rpc.BelugaPokemonProto/Types/PokemonGender
    enum PokemonGender {
        GENDER_UNSET = 0;
        MALE = 1;
        FEMALE = 2;
        GENDERLESS = 3;
    }

    // ref: Holoholo.Rpc.BelugaPokemonProto/Types/Team
    enum Team {
        NONE = 0;
        TEAM_BLUE = 1;
        TEAM_RED = 2;
        TEAM_YELLOW = 3;
    }

    // ref: Holoholo.Rpc.BelugaPokemonProto/Types/TrainerGender
    enum TrainerGender {
        TRAINER_MALE = 0;
        TRAINER_FEMALE = 1;
    }

    string trainer_name = 1;
    TrainerGender trainer_gender = 2;
    Team trainer_team = 3;
    int32 trainer_level = 4;
    int32 pokedex_id = 5;
    int32 cp = 6;
    float pokemon_level = 7;
    int32 max_hp = 8;
    double origin_lat = 9;
    double origin_lng = 10;
    float height = 11;
    float weight = 12;
    int32 individual_attack = 13;
    int32 individual_defense = 14;
    int32 individual_stamina = 15;
    int32 creation_day = 16;
    int32 creation_month = 17;
    int32 creation_year = 18;
    string nickname = 19;
    PokemonGender gender = 20;
    PokemonCostume costume = 21;
    PokemonForm form = 22;
    bool shiny = 23;
    int32 move1 = 24;
    int32 move2 = 25;
}

// ref: Holoholo.Rpc.BelugaPokemonWhitelist
message BelugaPokemonWhitelist {
    int32 max_allowed_pokemon_pokedex_number = 1;
    repeated HoloPokemonId additional_pokemon_allowed = 2;
    repeated PokemonDisplayProto.Form forms_allowed = 3;
    repeated PokemonDisplayProto.Costume costumes_allowed = 4;
}

// ref: Holoholo.Rpc.BelugaTransactionCompleteOutProto
message BelugaTransactionCompleteOutProto {
    // ref: Holoholo.Rpc.BelugaTransactionCompleteOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILED = 2;
        ERROR_INVALID_POKEMON_ID = 3;
        ERROR_POKEMON_DEPLOYED = 4;
        ERROR_POKEMON_NOT_ALLOWED = 5;
        ERROR_POKEMON_IS_BUDDY = 6;
        ERROR_INVALID_TRANSACTION_ID = 7;
        ERROR_MISSING_TRANSACTION_ID = 8;
    }

    Status status = 1;
    int32 candy_awarded = 2;
    LootProto loot_awarded = 3;
    BelugaBleFinalizeTransfer beluga_finalize_response = 4;
    int32 buckets_until_weekly_award = 5;
}

// ref: Holoholo.Rpc.BelugaTransactionCompleteProto
message BelugaTransactionCompleteProto {
    BelugaBleCompleteTransferRequestProto beluga_transfer = 1;
    bytes app_signature = 2;
    bytes firmware_signature = 3;
}

// ref: Holoholo.Rpc.BelugaTransactionStartOutProto
message BelugaTransactionStartOutProto {
    // ref: Holoholo.Rpc.BelugaTransactionStartOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILED = 2;
        ERROR_INVALID_POKEMON_ID = 3;
        ERROR_POKEMON_DEPLOYED = 4;
        ERROR_POKEMON_IS_EGG = 5;
        ERROR_POKEMON_IS_BUDDY = 6;
        ERROR_POKEMON_NOT_ALLOWED = 7;
        ERROR_INVALID_NONCE = 8;
        ERROR_TOO_MANY_POKEMON = 9;
        ERROR_NO_POKEMON_SPECIFIED = 10;
    }

    Status status = 1;
    BelugaBleTransferPrepProto beluga_transfer_prep = 2;
    bytes server_signature = 3;
}

// ref: Holoholo.Rpc.BelugaTransactionStartProto
message BelugaTransactionStartProto {
    repeated int64 pokemon_id = 1;
    string nonce = 2;
    string beluga_id = 3;
}

// ref: Holoholo.Rpc.BootTelemetry
message BootTelemetry {
    float nearest_poi_distance = 1;
    int32 poi_within_one_km_count = 2;
}

// ref: Holoholo.Rpc.BootTime
message BootTime {
    // ref: Holoholo.Rpc.BootTime/Types/BootPhase
    enum BootPhase {
        UNDEFINED = 0;
        TIME_TO_MAP = 1;
        LOGO_SCREEN_TIME = 2;
        MAIN_SCENE_LOAD_TIME = 3;
        WAIT_FOR_AUTH = 4;
        INIT_REMOTE_CONFIG_VERSIONS = 5;
        INIT_BUNDLE_DIGEST = 6;
        INIT_GMT = 7;
        DOWNLOAD_I18N = 8;
        DOWNLOAD_GLOBAL_ASSETS = 9;
        REGISTER_PUSH_NOTIFICATION = 10;
        INITIALIZE_UPSIGHT = 11;
        INITIALIZE_CRITTERCISM = 12;
        LOGIN_VERSION_CHECK = 13;
        LOGIN_GET_PLAYER = 14;
        LOGIN_AUTHENTICATION = 15;
        MODAL_TIME = 16;
        INITIALIZE_ADJUST = 17;
    }

    PlatformMetricData duration = 1;
    BootPhase boot_phase = 2;
}

// ref: Holoholo.Rpc.BuddyActivityCategorySettings
message BuddyActivityCategorySettings {
    BuddyActivityCategory activity_category = 1;
    int32 max_points_per_day = 2;
}

// ref: Holoholo.Rpc.BuddyActivitySettings
message BuddyActivitySettings {
    BuddyActivity activity = 1;
    BuddyActivityCategory activity_category = 2;
    int32 max_times_per_day = 3;
    int32 num_points_per_action = 4;
    int32 num_emotion_points_per_action = 5;
    int64 emotion_cooldown_duration_ms = 6;
}

// ref: Holoholo.Rpc.BuddyDataProto
message BuddyDataProto {
    // ref: Holoholo.Rpc.BuddyDataProto/Types/BuddyStoredStats
    message BuddyStoredStats {
        int64 window = 1;
        map<int32, float> buddy_stats = 2;
    }

    fixed64 buddy_pokemon_id = 1;
    int32 current_points_earned = 2;
    int32 highest_points_earned = 3;
    int64 last_reached_full_ms = 4;
    int64 last_groomed_ms = 5;
    int64 map_expiration_ms = 7;
    float km_candy_pending = 12;
    BuddyGiftProto buddy_gift_picked_up = 15;
    int32 current_emotion_points = 18;
    map<int32, DailyCounterProto> daily_activity_counters = 19;
    map<int32, DailyCounterProto> daily_category_counters = 20;
    BuddyStoredStats stats_today = 21;
    BuddyStoredStats stats_total = 22;
    map<int32, SouvenirProto> souvenirs_collected = 23;
    int32 current_hunger_points = 24;
    int64 interaction_expiration_ms = 25;
    int64 poffin_feeding_expiration_ms = 26;
    float last_affection_or_emotion_awarded_km = 27;
    int64 last_set_timestamp_ms = 28;
    int64 last_unset_timestamp_ms = 29;
    bool ditched = 30;
    PokemonDisplayProto pokemon_display = 31;
    bool hatched_from_egg = 32;
    string nickname = 33;
    int64 captured_s2_cell_id = 34;
    HoloPokemonId pokedex_entry_number = 35;
    int64 creation_timestamp_ms = 36;
    Item pokeball = 37;
    int32 num_days_spent_with_buddy = 38;
    string original_owner_nickname = 39;
    int64 traded_time_ms = 40;
    string attractive_poi_id = 41;
    int64 attractive_poi_time_generated = 42;
    int64 attractive_poi_cooldown_ms = 43;
    bool attractive_poi_visited = 44;
    int64 berry_cooldown_ms = 45;
    map<int32, int64> activity_emotion_last_increment_ms = 46;
    int64 window = 47;
    int64 last_fed_ms = 48;
    int32 last_window_buddy_on_map = 49;
    int32 last_window_fed_poffin = 50;
    int64 yatta_expiration_ms = 51;
    float hunger_points = 52;
}

// ref: Holoholo.Rpc.BuddyEmotionLevelSettings
message BuddyEmotionLevelSettings {
    BuddyEmotionLevel emotion_level = 1;
    int32 min_emotion_points_required = 2;
    BuddyAnimation emotion_animation = 3;
    int64 decay_prevention_duration_ms = 4;
}

// ref: Holoholo.Rpc.BuddyEncounterCameoSettings
message BuddyEncounterCameoSettings {
    float buddy_wild_encounter_cameo_chance_percent = 1;
    float buddy_quest_encounter_cameo_chance_percent = 2;
    float buddy_raid_encounter_cameo_chance_percent = 3;
    float buddy_invasion_encounter_cameo_chance_percent = 4;
    bool buddy_on_map_required = 5;
}

// ref: Holoholo.Rpc.BuddyEncounterHelpTelemetry
message BuddyEncounterHelpTelemetry {
    int32 pokemon_id = 1;
    int32 cp = 2;
    string encounter_type = 3;
    bool ar_classic_enabled = 4;
    bool ar_plus_enabled = 5;
    EncounterType encounter = 6;
}

// ref: Holoholo.Rpc.BuddyFeedingOutProto
message BuddyFeedingOutProto {
    // ref: Holoholo.Rpc.BuddyFeedingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_BUDDY_NOT_VALID = 2;
        FAILED_INSUFFICIENT_RESOURCES = 3;
        FAILED_INVALID_ITEM_REQUIREMENT = 4;
        FAILED_BUDDY_STILL_FULL_FROM_POFFIN = 5;
    }

    Result result = 1;
    BuddyObservedData observed_data = 3;
    BuddyStatsShownHearts.BuddyShownHeartType shown_hearts = 4;
}

// ref: Holoholo.Rpc.BuddyFeedingProto
message BuddyFeedingProto {
    Item item = 1;
    int32 count = 2;
}

// ref: Holoholo.Rpc.BuddyGiftProto
message BuddyGiftProto {
    SouvenirProto souvenir = 1;
    LootProto loot_proto = 2;
}

// ref: Holoholo.Rpc.BuddyGlobalSettingsProto
message BuddyGlobalSettingsProto {
    int32 buddy_v2_min_player_level = 1;
    int32 buddy_multiplayer_min_player_level = 2;
    bool enable_monodepth = 3;
    repeated string monodepth_devices = 4;
    int32 lobby_status_message_duration_ms = 5;
    int32 mapping_instruction_duration_ms = 6;
    int32 group_photo_leader_tracking_interval_ms = 7;
    int32 group_photo_countdown_ms = 8;
    int32 lobby_timeout_ms = 9;
    bool enable_wallaby_telemetry = 10;
    int32 mapping_hint_timeout_ms = 11;
    int32 group_photo_simultaneous_shots = 12;
    bool plfe_auth_tokens_enabled = 13;
    int32 group_photo_shot_interval_ms = 14;
    string arbe_endpoint_url = 15;
    bool buddy_on_map_required_to_open_gifts = 16;
}

// ref: Holoholo.Rpc.BuddyHistoryData
message BuddyHistoryData {
    fixed64 pokemon_id = 1;
    HoloPokemonId pokedex_id = 2;
    PokemonDisplayProto pokemon_display = 3;
    bool hatched_from_egg = 4;
    string nickname = 5;
    int64 captured_s2_cell_id = 6;
    int64 creation_timestamp_ms = 7;
    Item pokeball = 8;
    BuddyStats total_stats = 9;
    int32 current_points_earned = 10;
    int64 last_set_timestamp_ms = 11;
    int64 last_unset_timestamp_ms = 12;
    int32 num_days_spent_with_buddy = 13;
    bool ditched = 14;
    string original_owner_nickname = 15;
    int64 traded_time_ms = 16;
    map<int32, SouvenirProto> souvenirs_collected = 17;
    float km_candy_progress = 18;
}

// ref: Holoholo.Rpc.BuddyHungerSettings
message BuddyHungerSettings {
    int32 num_hunger_points_required_for_full = 1;
    int32 decay_points_per_bucket = 2;
    int64 milliseconds_per_bucket = 3;
    int64 cooldown_duration_ms = 4;
    int64 decay_duration_after_full_ms = 5;
}

// ref: Holoholo.Rpc.BuddyInteractionSettings
message BuddyInteractionSettings {
    repeated Item feed_item_whitelist = 1;
    repeated Item care_item_whitelist = 2;
}

// ref: Holoholo.Rpc.BuddyLevelSettings
message BuddyLevelSettings {
    // ref: Holoholo.Rpc.BuddyLevelSettings/Types/BuddyTrait
    enum BuddyTrait {
        UNSET = 0;
        MAP_DEPLOY = 1;
        ENCOUNTER_CAMEO = 2;
        EMOTION_INDICATOR = 3;
        PICK_UP_CONSUMABLES = 4;
        PICK_UP_SOUVENIRS = 5;
        FIND_ATTRACTIVE_POIS = 6;
        BEST_BUDDY_ASSET = 7;
        CP_BOOST = 8;
    }

    BuddyLevel level = 1;
    int32 min_non_cumulative_points_required = 2;
    repeated BuddyTrait unlocked_traits = 3;
}

// ref: Holoholo.Rpc.BuddyMapEmotionCheckTelemetry
message BuddyMapEmotionCheckTelemetry {
    int32 pokemon_id = 1;
    int32 current_emotion_points = 2;
    int32 current_affection_points = 3;
}

// ref: Holoholo.Rpc.BuddyMapOutProto
message BuddyMapOutProto {
    // ref: Holoholo.Rpc.BuddyMapOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_BUDDY_NOT_VALID = 2;
    }

    Result result = 1;
    int64 expiration_ms = 2;
    int64 applied_ms = 3;
    BuddyObservedData observed_data = 4;
}

// ref: Holoholo.Rpc.BuddyMapProto
message BuddyMapProto {
}

// ref: Holoholo.Rpc.BuddyMultiplayerConnectionFailedProto
message BuddyMultiplayerConnectionFailedProto {
    int32 test_number = 1;
    int64 response_time = 2;
}

// ref: Holoholo.Rpc.BuddyMultiplayerConnectionSucceededProto
message BuddyMultiplayerConnectionSucceededProto {
    int32 test_number = 1;
    int64 response_time = 2;
}

// ref: Holoholo.Rpc.BuddyMultiplayerTimeToGetSessionProto
message BuddyMultiplayerTimeToGetSessionProto {
    int32 test_number = 1;
    int64 time_to_get_session = 2;
}

// ref: Holoholo.Rpc.BuddyNotificationClickTelemetry
message BuddyNotificationClickTelemetry {
    int32 notification_category = 1;
}

// ref: Holoholo.Rpc.BuddyObservedData
message BuddyObservedData {
    // ref: Holoholo.Rpc.BuddyObservedData/Types/BuddyValidationResult
    enum BuddyValidationResult {
        UNSET = 0;
        SUCCESS = 1;
        FAILED_BUDDY_NOT_SET = 2;
        FAILED_BUDDY_NOT_FOUND = 3;
        FAILED_BAD_BUDDY = 4;
        FAILED_BUDDY_V2_NOT_ENABLED = 5;
        FAILED_PLAYER_LEVEL_TOO_LOW = 6;
    }

    // ref: Holoholo.Rpc.BuddyObservedData/Types/BuddyFeedStats
    message BuddyFeedStats {
        int64 map_expiration_ms = 1;
        float pre_map_fullness_percentage = 2;
        int64 fullness_expiration_ms = 3;
        int64 poffin_expiration_ms = 4;
    }

    int32 current_points_earned = 1;
    BuddyStats total_stats = 3;
    BuddyGiftProto buddy_gift_picked_up = 6;
    int32 current_emotion_points = 7;
    BuddyValidationResult buddy_validation_result = 8;
    map<int32, SouvenirProto> souvenirs_collected = 9;
    BuddyStatsShownHearts today_stats_shown_hearts = 10;
    BuddyFeedStats buddy_feed_stats = 11;
    string attractive_poi_id = 12;
    int64 attractive_poi_expiration_time_ms = 13;
    int32 num_days_spent_with_buddy = 14;
}

// ref: Holoholo.Rpc.BuddyPettingOutProto
message BuddyPettingOutProto {
    // ref: Holoholo.Rpc.BuddyPettingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_BUDDY_NOT_VALID = 2;
    }

    Result result = 1;
    BuddyObservedData observed_data = 2;
    BuddyStatsShownHearts.BuddyShownHeartType shown_hearts = 3;
}

// ref: Holoholo.Rpc.BuddyPettingProto
message BuddyPettingProto {
}

// ref: Holoholo.Rpc.BuddyPokemonLogEntry
message BuddyPokemonLogEntry {
    // ref: Holoholo.Rpc.BuddyPokemonLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        CANDY_FOUND = 1;
    }

    Result result = 1;
    HoloPokemonId pokemon_type = 2;
    int32 amount = 3;
    PokemonDisplayProto pokemon_display = 4;
    fixed64 pokemon_id = 5;
}

// ref: Holoholo.Rpc.BuddyPokemonProto
message BuddyPokemonProto {
    fixed64 buddy_pokemon_id = 1;
    double start_km_walked = 2;
    double last_km_awarded = 3;
    DailyCounterProto daily_buddy_swaps = 4;
    int64 last_km_awarded_ms = 5;
    bool best_buddies_backfilled = 6;
}

// ref: Holoholo.Rpc.BuddyStats
message BuddyStats {
    float km_walked = 1;
    int32 berries_fed = 2;
    int32 communication = 3;
    int32 battles = 4;
    int32 photos = 5;
    int32 new_visits = 6;
}

// ref: Holoholo.Rpc.BuddyStatsOutProto
message BuddyStatsOutProto {
    // ref: Holoholo.Rpc.BuddyStatsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_BUDDY_NOT_VALID = 2;
    }

    Result result = 1;
    BuddyObservedData observed_data = 2;
}

// ref: Holoholo.Rpc.BuddyStatsProto
message BuddyStatsProto {
}

// ref: Holoholo.Rpc.BuddyStatsShownHearts
message BuddyStatsShownHearts {
    // ref: Holoholo.Rpc.BuddyStatsShownHearts/Types/BuddyShownHeartType
    enum BuddyShownHeartType {
        BUDDY_HEART_UNSET = 0;
        BUDDY_HEART_SINGLE = 1;
        BUDDY_HEART_DOUBLE = 2;
    }

    // ref: Holoholo.Rpc.BuddyStatsShownHearts/Types/BuddyShownHeartsList
    message BuddyShownHeartsList {
        repeated BuddyShownHeartType buddy_shown_heart_types = 1;
    }

    float buddy_affection_km_in_progress = 1;
    map<int32, BuddyShownHeartsList> buddy_shown_hearts_per_category = 2;
}

// ref: Holoholo.Rpc.BuddySwapSettings
message BuddySwapSettings {
    int32 max_swaps_per_day = 1;
}

// ref: Holoholo.Rpc.BuddyWalkSettings
message BuddyWalkSettings {
    float km_required_per_affection_point = 1;
}

// ref: Holoholo.Rpc.CameraSettingsProto
message CameraSettingsProto {
    string next_camera = 1;
    repeated CameraInterpolation interpolation = 2;
    repeated CameraTarget target_type = 3;
    repeated float ease_in_speed = 4;
    repeated float ease_out_speed = 5;
    repeated float duration_s = 6;
    repeated float wait_s = 7;
    repeated float transition_s = 8;
    repeated float angle_deg = 9;
    repeated float angle_offset_deg = 10;
    repeated float pitch_deg = 11;
    repeated float pitch_offset_deg = 12;
    repeated float roll_deg = 13;
    repeated float distance_m = 14;
    repeated float height_percent = 15;
    repeated float vert_ctr_ratio = 16;
}

// ref: Holoholo.Rpc.CancelCombatChallengeOutProto
message CancelCombatChallengeOutProto {
    // ref: Holoholo.Rpc.CancelCombatChallengeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_CHALLENGE_STATE = 2;
        ERROR_CHALLENGE_NOT_FOUND = 3;
        ERROR_ALREADY_ACCEPTED = 4;
        ERROR_ALREADY_DECLINED = 5;
        ERROR_ALREADY_TIMEDOUT = 6;
        ERROR_ACCESS_DENIED = 7;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.CancelCombatChallengeProto
message CancelCombatChallengeProto {
    string challenge_id = 1;
}

// ref: Holoholo.Rpc.CancelMatchmakingOutProto
message CancelMatchmakingOutProto {
    // ref: Holoholo.Rpc.CancelMatchmakingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESSFULLY_CANCELLED = 1;
        ERROR_ALREADY_MATCHED = 2;
        ERROR_PLAYER_NOT_FOUND = 3;
        ERROR_QUEUE_NOT_FOUND = 4;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.CancelMatchmakingProto
message CancelMatchmakingProto {
    string queue_id = 1;
}

// ref: Holoholo.Rpc.CancelTradingOutProto
message CancelTradingOutProto {
    // ref: Holoholo.Rpc.CancelTradingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_FRIEND_NOT_FOUND = 3;
        ERROR_INVALID_PLAYER_ID = 4;
        ERROR_INVALID_STATE = 5;
        ERROR_STATE_HANDLER = 6;
    }

    Result result = 1;
    TradingProto trading = 2;
}

// ref: Holoholo.Rpc.CancelTradingProto
message CancelTradingProto {
    string player_id = 1;
}

// ref: Holoholo.Rpc.CaptureProbabilityProto
message CaptureProbabilityProto {
    repeated Item pokeball_type = 1;
    repeated float capture_probability = 2;
    double reticle_difficulty_scale = 12;
}

// ref: Holoholo.Rpc.CaptureScoreProto
message CaptureScoreProto {
    repeated HoloActivityType activity_type = 1;
    repeated int32 exp = 2;
    repeated int32 candy = 3;
    repeated int32 stardust = 4;
}

// ref: Holoholo.Rpc.CatchPokemonLogEntry
message CatchPokemonLogEntry {
    // ref: Holoholo.Rpc.CatchPokemonLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        POKEMON_CAPTURED = 1;
        POKEMON_FLED = 2;
        POKEMON_HATCHED = 3;
    }

    Result result = 1;
    int32 pokedex_number = 2;
    int32 combat_points = 3;
    fixed64 pokemon_id = 4;
    PokemonDisplayProto pokemon_display = 5;
}

// ref: Holoholo.Rpc.CatchPokemonOutProto
message CatchPokemonOutProto {
    // ref: Holoholo.Rpc.CatchPokemonOutProto/Types/CaptureReason
    enum CaptureReason {
        UNSET = 0;
        DEFAULT = 1;
        ELEMENTAL_BADGE = 2;
        CRITICAL_CATCH = 3;
    }

    // ref: Holoholo.Rpc.CatchPokemonOutProto/Types/Status
    enum Status {
        CATCH_ERROR = 0;
        CATCH_SUCCESS = 1;
        CATCH_ESCAPE = 2;
        CATCH_FLEE = 3;
        CATCH_MISSED = 4;
    }

    Status status = 1;
    double miss_percent = 2;
    fixed64 captured_pokemon_id = 3;
    CaptureScoreProto scores = 4;
    CaptureReason capture_reason = 5;
    int32 display_pokedex_id = 6;
    int32 throws_remaining = 7;
    PokemonDisplayProto pokemon_display = 8;
}

// ref: Holoholo.Rpc.CatchPokemonProto
message CatchPokemonProto {
    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 normalized_hit_position = 7;
    ARPlusEncounterValuesProto ar_plus_values = 8;
}

// ref: Holoholo.Rpc.CatchPokemonQuestProto
message CatchPokemonQuestProto {
    repeated HoloPokemonId unique_pokemon_id = 1;
}

// ref: Holoholo.Rpc.CatchPokemonTelemetry
message CatchPokemonTelemetry {
    string status = 1;
    EncounterPokemonTelemetry encounter_pokemon_telemetry = 2;
    int32 balltype = 3;
    int32 hit_grade = 4;
    bool curve_ball = 5;
    double miss_percent = 6;
}

// ref: Holoholo.Rpc.ChangeArTelemetry
message ChangeArTelemetry {
    bool ar_enabled = 1;
    bool ar_plus_enabled = 2;
}

// ref: Holoholo.Rpc.ChangeTeamOutProto
message ChangeTeamOutProto {
    // ref: Holoholo.Rpc.ChangeTeamOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_SAME_TEAM = 2;
        ERROR_ITEM_NOT_IN_INVENTORY = 3;
        ERROR_WRONG_ITEM = 4;
        ERROR_UNKNOWN = 5;
    }

    Status status = 1;
    ClientPlayerProto updated_player = 2;
}

// ref: Holoholo.Rpc.ChangeTeamProto
message ChangeTeamProto {
    Item item = 1;
    Team team = 2;
}

// ref: Holoholo.Rpc.CharacterDisplayProto
message CharacterDisplayProto {
    EnumWrapper.PokestopStyle style = 1;
    EnumWrapper.InvasionCharacter character = 2;
}

// ref: Holoholo.Rpc.CheckAwardedBadgesOutProto
message CheckAwardedBadgesOutProto {
    bool success = 1;
    repeated HoloBadgeType awarded_badges = 2;
    repeated int32 awarded_badge_levels = 3;
    repeated string avatar_template_ids = 4;
}

// ref: Holoholo.Rpc.CheckAwardedBadgesProto
message CheckAwardedBadgesProto {
}

// ref: Holoholo.Rpc.CheckChallengeOutProto
message CheckChallengeOutProto {
    bool show_challenge = 1;
    string challenge_url = 2;
}

// ref: Holoholo.Rpc.CheckChallengeProto
message CheckChallengeProto {
    bool debug_request = 1;
}

// ref: Holoholo.Rpc.CheckEncounterTrayInfoTelemetry
message CheckEncounterTrayInfoTelemetry {
    bool berry_tray_info = 1;
    bool ball_tray_info = 2;
}

// ref: Holoholo.Rpc.CheckPhotobombOutProto
message CheckPhotobombOutProto {
    // ref: Holoholo.Rpc.CheckPhotobombOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PHOTO_POKEMON_INVALID = 2;
        ERROR_UNKNOWN = 3;
    }

    Status status = 1;
    HoloPokemonId photobomb_pokemon_id = 2;
    PokemonDisplayProto photobomb_pokemon_display = 3;
    fixed64 encounter_id = 4;
    string uri = 5;
}

// ref: Holoholo.Rpc.CheckPhotobombProto
message CheckPhotobombProto {
    fixed64 photo_pokemon_id = 1;
}

// ref: Holoholo.Rpc.CheckSendGiftOutProto
message CheckSendGiftOutProto {
    // ref: Holoholo.Rpc.CheckSendGiftOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_DOES_NOT_EXIST = 3;
        ERROR_GIFT_NOT_AVAILABLE = 4;
        ERROR_GIFT_ALREADY_SENT_TODAY = 5;
        ERROR_PLAYER_HAS_UNOPENED_GIFT = 6;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.CheckSendGiftProto
message CheckSendGiftProto {
    string player_id = 1;
}

// ref: Holoholo.Rpc.CheckShareExRaidPassOutProto
message CheckShareExRaidPassOutProto {
    ShareExRaidPassResult result = 1;
}

// ref: Holoholo.Rpc.CheckShareExRaidPassProto
message CheckShareExRaidPassProto {
    string friend_id = 1;
    string fort_id = 2;
    int64 raid_seed = 3;
}

// ref: Holoholo.Rpc.ClaimCodenameRequestProto
message ClaimCodenameRequestProto {
    string codename = 1;
    bool force = 2;
    bool generate_suggested_codenames = 3;
}

// ref: Holoholo.Rpc.ClaimVsSeekerRewardsOutProto
message ClaimVsSeekerRewardsOutProto {
    // ref: Holoholo.Rpc.ClaimVsSeekerRewardsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_REDEEM_POKEMON = 2;
        ERROR_PLAYER_NOT_ENOUGH_VICTORIES = 3;
        ERROR_REWARD_ALREADY_CLAIMED = 4;
        ERROR_INVENTORY_FULL = 5;
    }

    Result result = 1;
    LootProto rewards = 2;
}

// ref: Holoholo.Rpc.ClaimVsSeekerRewardsProto
message ClaimVsSeekerRewardsProto {
    int32 win_index = 1;
}

// ref: Holoholo.Rpc.ClientDialogueLineProto
message ClientDialogueLineProto {
    string text = 1;
    EnumWrapper.InvasionCharacter character = 2;
    EnumWrapper.InvasionCharacterExpression expression = 3;
}

// ref: Holoholo.Rpc.ClientFortModifierProto
message ClientFortModifierProto {
    Item modifier_type = 1;
    int64 expiration_time_ms = 2;
    string deploying_player_codename = 3;
}

// ref: Holoholo.Rpc.ClientGenderProto
message ClientGenderProto {
    float male_percent = 1;
    float female_percent = 2;
    float genderless_percent = 3;
}

// ref: Holoholo.Rpc.ClientGenderSettingsProto
message ClientGenderSettingsProto {
    HoloPokemonId pokemon = 1;
    ClientGenderProto gender = 2;
}

// ref: Holoholo.Rpc.ClientIncidentProto
message ClientIncidentProto {
    string incident_id = 1;
    string fort_id = 2;
    string fort_name = 3;
    string pokestop_image_uri = 4;
    int32 current_step = 5;
    repeated ClientIncidentStepProto step = 6;
    PokestopIncidentDisplayProto completion_display = 7;
}

// ref: Holoholo.Rpc.ClientIncidentStepProto
message ClientIncidentStepProto {
    // ref: Holoholo.Rpc.ClientIncidentStepProto/ClientIncidentStepOneofCase
    //oneof ClientIncidentStep {
        //none = 0;
        //invasion_battle = 1;
        //invasion_encounter = 2;
        //pokestop_dialogue = 3;
    //}

    ClientInvasionBattleStepProto invasion_battle = 1;
    ClientInvasionEncounterStepProto invasion_encounter = 2;
    ClientPokestopNpcDialogueStepProto pokestop_dialogue = 3;
}

// ref: Holoholo.Rpc.ClientInvasionBattleStepProto
message ClientInvasionBattleStepProto {
    EnumWrapper.InvasionCharacter character = 1;
}

// ref: Holoholo.Rpc.ClientInvasionEncounterStepProto
message ClientInvasionEncounterStepProto {
}

// ref: Holoholo.Rpc.ClientMapCellProto
message ClientMapCellProto {
    uint64 s2_cell_id = 1;
    int64 as_of_time_ms = 2;
    repeated PokemonFortProto fort = 3;
    repeated ClientSpawnPointProto spawn_point = 4;
    repeated WildPokemonProto wild_pokemon = 5;
    repeated string deleted_object = 6;
    bool is_truncated_list = 7;
    repeated PokemonSummaryFortProto fort_summary = 8;
    repeated ClientSpawnPointProto decimated_spawn_point = 9;
    repeated MapPokemonProto catchable_pokemon = 10;
    repeated NearbyPokemonProto nearby_pokemon = 11;
}

// ref: Holoholo.Rpc.ClientPerformanceSettingsProto
message ClientPerformanceSettingsProto {
    bool enable_local_disk_caching = 1;
    int32 max_number_local_battle_parties = 2;
    bool multi_pokemon_battle_party_select = 3;
    bool use_whole_match_for_filter_key = 4;
}

// ref: Holoholo.Rpc.ClientPlayerProto
message ClientPlayerProto {
    int64 creation_time_ms = 1;
    string name = 2;
    int32 team = 5;
    repeated TutorialCompletion tutorial_complete = 7;
    PlayerAvatarProto player_avatar_proto = 8;
    int32 max_pokemon_storage = 9;
    int32 max_item_storage = 10;
    DailyBonusProto daily_bonus_proto = 11;
    EquippedBadgeProto equipped_badge_proto = 12;
    ContactSettingsProto contact_settings_proto = 13;
    repeated CurrencyQuantityProto currency_balance = 14;
    int32 remaining_codename_claims = 15;
    BuddyPokemonProto buddy_pokemon_proto = 16;
    int64 battle_lockout_end_ms = 17;
    PlayerAvatarProto secondary_player_avatar_proto = 18;
    bool name_is_blacklisted = 19;
    SocialPlayerSettingsProto social_player_settings = 20;
    CombatPlayerPreferencesProto combat_player_preferences = 21;
    string player_support_id = 22;
    TeamChangeInfoProto team_change_info = 23;
    repeated HoloPokemonId consumed_eevee_easter_eggs = 24;
    CombatLogProto combat_log = 25;
    int64 time_zone_offset_ms = 26;
    BuddyObservedData buddy_observed_data = 27;
    string helpshift_user_id = 28;
}

// ref: Holoholo.Rpc.ClientPokestopNpcDialogueStepProto
message ClientPokestopNpcDialogueStepProto {
    repeated ClientDialogueLineProto dialogue_line = 1;
}

// ref: Holoholo.Rpc.ClientQuestProto
message ClientQuestProto {
    QuestProto quest = 1;
    QuestDisplayProto quest_display = 2;
}

// ref: Holoholo.Rpc.ClientSpawnPointProto
message ClientSpawnPointProto {
    double latitude = 2;
    double longitude = 3;
}

// ref: Holoholo.Rpc.ClientVersionProto
message ClientVersionProto {
    string min_version = 1;
}

// ref: Holoholo.Rpc.CodenameResultProto
message CodenameResultProto {
    // ref: Holoholo.Rpc.CodenameResultProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        CODENAME_NOT_AVAILABLE = 2;
        CODENAME_NOT_VALID = 3;
        CURRENT_OWNER = 4;
        CODENAME_CHANGE_NOT_ALLOWED = 5;
    }

    string codename = 1;
    string user_message = 2;
    bool is_assignable = 3;
    Status status = 4;
    ClientPlayerProto updated_player = 5;
    repeated string suggested_codenames = 6;
}

// ref: Holoholo.Rpc.CollectDailyBonusOutProto
message CollectDailyBonusOutProto {
    // ref: Holoholo.Rpc.CollectDailyBonusOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        TOO_SOON = 3;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.CollectDailyBonusProto
message CollectDailyBonusProto {
}

// ref: Holoholo.Rpc.CollectDailyDefenderBonusOutProto
message CollectDailyDefenderBonusOutProto {
    // ref: Holoholo.Rpc.CollectDailyDefenderBonusOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        TOO_SOON = 3;
        NO_DEFENDERS = 4;
    }

    Result result = 1;
    repeated string currency_type = 2;
    repeated int32 currency_awarded = 3;
    int32 num_defenders = 4;
}

// ref: Holoholo.Rpc.CollectDailyDefenderBonusProto
message CollectDailyDefenderBonusProto {
}

// ref: Holoholo.Rpc.CombatActionProto
message CombatActionProto {
    // ref: Holoholo.Rpc.CombatActionProto/Types/ActionType
    enum ActionType {
        UNSET = 0;
        ATTACK = 1;
        SPECIAL_ATTACK = 2;
        SPECIAL_ATTACK_2 = 3;
        MINIGAME_OFFENSIVE_FINISH = 4;
        MINIGAME_DEFENSIVE_START = 5;
        MINIGAME_DEFENSIVE_FINISH = 6;
        FAINT = 7;
        CHANGE_POKEMON = 8;
        QUICK_SWAP_POKEMON = 9;
    }

    ActionType type = 1;
    int32 action_start_turn = 3;
    int32 duration_turns = 5;
    int32 attacker_index = 6;
    int32 target_index = 7;
    fixed64 active_pokemon_id = 8;
    fixed64 target_pokemon_id = 14;
    float minigame_score = 15;
    int32 move = 16;
}

// ref: Holoholo.Rpc.CombatBaseStatsProto
message CombatBaseStatsProto {
    int32 total_battles = 1;
    int32 wins = 2;
    float rating = 3;
}

// ref: Holoholo.Rpc.CombatChallengeGlobalSettingsProto
message CombatChallengeGlobalSettingsProto {
    FriendshipLevelMilestone distance_check_override_friendship_level = 1;
    int32 get_combat_challenge_polling_interval_sec = 2;
    bool enable_downstream_dispatch = 3;
    bool enable_challenge_notifications = 4;
}

// ref: Holoholo.Rpc.CombatChallengeProto
message CombatChallengeProto {
    // ref: Holoholo.Rpc.CombatChallengeProto/Types/CombatChallengeState
    enum CombatChallengeState {
        UNSET = 0;
        CREATED = 1;
        OPENED = 2;
        CANCELLED = 3;
        ACCEPTED = 4;
        DECLINED = 5;
        READY = 6;
        TIMEOUT = 7;
    }

    // ref: Holoholo.Rpc.CombatChallengeProto/Types/ChallengePlayer
    message ChallengePlayer {
        string player_id = 1;
        PlayerAvatarProto player_avatar = 2;
        int64 combat_player_s2_cell_id = 3;
        repeated fixed64 attacking_pokemon_id = 4;
        PlayerPublicProfileProto public_profile = 5;
    }

    string challenge_id = 1;
    CombatType type = 2;
    string combat_league_template_id = 3;
    ChallengePlayer challenger = 5;
    ChallengePlayer opponent = 6;
    CombatChallengeState state = 7;
    int64 created_timestamp_ms = 8;
    string combat_id = 10;
    int64 expiration_timestamp_ms = 19;
}

// ref: Holoholo.Rpc.CombatCompetitiveSeasonSettingsProto
message CombatCompetitiveSeasonSettingsProto {
    repeated uint64 season_end_time_timestamp = 1;
    float rating_adjustment_percentage = 2;
    float ranking_adjustment_percentage = 3;
}

// ref: Holoholo.Rpc.CombatDefensiveInputChallengeSettings
message CombatDefensiveInputChallengeSettings {
    float full_rotations_for_max_score = 1;
}

// ref: Holoholo.Rpc.CombatFriendRequestOutProto
message CombatFriendRequestOutProto {
    // ref: Holoholo.Rpc.CombatFriendRequestOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_COMBAT_NOT_FOUND = 2;
        ERROR_COMBAT_INCOMPLETE = 3;
        ERROR_PLAYER_NOT_IN_COMBAT = 4;
        ERROR_SOCIAL_RPC = 5;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.CombatFriendRequestProto
message CombatFriendRequestProto {
    string combat_id = 1;
}

// ref: Holoholo.Rpc.CombatGlobalSettingsProto
message CombatGlobalSettingsProto {
    bool enable_combat = 1;
    int32 maximum_daily_rewarded_battles = 2;
    bool enable_combat_stat_stages = 3;
    uint32 minimum_player_level = 4;
    int32 maximum_daily_npc_rewarded_battles = 5;
    int32 active_combat_update_interval_ms = 6;
    int32 waiting_for_player_update_interval_ms = 7;
    int32 ready_for_battle_update_interval_ms = 8;
    int32 pre_move_submit_window_ms = 9;
    int32 post_move_submit_window_ms = 10;
    bool enable_sockets = 11;
    bool enable_spin_minigame = 12;
    bool enable_quick_swap_v2 = 13;
    bool deprecated_vs_seeker_setting = 14;
    int32 vs_seeker_walking_dist_poll_duration_ms = 15;
    int32 vs_seeker_player_min_level = 16;
    int32 matchmaking_poll_duration_ms = 17;
    bool enable_particle_minigame = 18;
    bool enable_vs_seeker_upgrade_iap = 19;
    bool enable_flyout_animations = 20;
    bool enable_battle_hub = 21;
    int32 matchmaking_timeout_duration_ms = 22;
    int64 planned_downtime_timestamp_ms = 23;
}

// ref: Holoholo.Rpc.CombatHubEntranceTelemetry
message CombatHubEntranceTelemetry {
    CombatHubEntranceTelemetryIds combat_hub_telemetry_id = 1;
}

// ref: Holoholo.Rpc.CombatLeagueProto
message CombatLeagueProto {
    // ref: Holoholo.Rpc.CombatLeagueProto/Types/UnlockConditionProto/ConditionOneofCase
    //oneof Condition {
        //none = 0;
        //with_player_level = 3;
        //with_pokemon_cp_limit = 4;
        //with_pokemon_type = 5;
        //with_pokemon_category = 6;
    //}

    // ref: Holoholo.Rpc.CombatLeagueProto/Types/PokemonConditionProto/ConditionOneofCase
    //oneof Condition {
        //none = 0;
        //with_pokemon_cp_limit = 2;
        //with_pokemon_type = 3;
        //with_pokemon_category = 4;
    //}

    // ref: Holoholo.Rpc.CombatLeagueProto/Types/ConditionType
    enum ConditionType {
        UNSET = 0;
        WITH_POKEMON_CP_LIMIT = 1;
        WITH_PLAYER_LEVEL = 2;
        WITH_POKEMON_TYPE = 3;
        WITH_POKEMON_CATEGORY = 4;
        WITH_UNIQUE_POKEMON = 5;
    }

    // ref: Holoholo.Rpc.CombatLeagueProto/Types/PokemonConditionProto
    message PokemonConditionProto {
        // ref: Holoholo.Rpc.CombatLeagueProto/Types/PokemonConditionProto/ConditionOneofCase
        //oneof Condition {
            //none = 0;
            //with_pokemon_cp_limit = 2;
            //with_pokemon_type = 3;
            //with_pokemon_category = 4;
        //}

        ConditionType type = 1;
        WithPokemonCpLimitProto with_pokemon_cp_limit = 2;
        WithPokemonTypeProto with_pokemon_type = 3;
        WithPokemonCategoryProto with_pokemon_category = 4;
    }

    // ref: Holoholo.Rpc.CombatLeagueProto/Types/UnlockConditionProto
    message UnlockConditionProto {
        // ref: Holoholo.Rpc.CombatLeagueProto/Types/UnlockConditionProto/ConditionOneofCase
        //oneof Condition {
            //none = 0;
            //with_player_level = 3;
            //with_pokemon_cp_limit = 4;
            //with_pokemon_type = 5;
            //with_pokemon_category = 6;
        //}

        ConditionType type = 1;
        int32 min_pokemon_count = 2;
        WithPlayerLevelProto with_player_level = 3;
        WithPokemonCpLimitProto with_pokemon_cp_limit = 4;
        WithPokemonTypeProto with_pokemon_type = 5;
        WithPokemonCategoryProto with_pokemon_category = 6;
    }

    string title = 1;
    bool enabled = 2;
    repeated UnlockConditionProto unlock_condition = 3;
    repeated PokemonConditionProto pokemon_condition = 4;
    string icon_url = 5;
    int32 pokemon_count = 6;
    repeated HoloPokemonId banned_pokemon = 7;
    HoloBadgeType badge_type = 8;
    int32 minigame_defense_chance_limit = 9;
    string battle_party_combat_league_template_id = 10;
}

// ref: Holoholo.Rpc.CombatLeagueSettingsProto
message CombatLeagueSettingsProto {
    repeated string combat_league_template_id = 1;
}

// ref: Holoholo.Rpc.CombatLogEntry
message CombatLogEntry {
    // ref: Holoholo.Rpc.CombatLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    CombatPlayerFinishState finish_state = 2;
    LootProto rewards = 3;
    string opponent = 4;
    string combat_league_template_id = 5;
    string npc_template_id = 6;
}

// ref: Holoholo.Rpc.CombatLogProto
message CombatLogProto {
    CombatSeasonResult lifetime_results = 1;
    CombatSeasonResult current_season_results = 2;
    repeated VsSeekerBattleResult current_vs_seeker_set_results = 4;
    CombatSeasonResult previous_season_results = 5;
}

// ref: Holoholo.Rpc.CombatMinigameTelemetry
message CombatMinigameTelemetry {
    // ref: Holoholo.Rpc.CombatMinigameTelemetry/Types/MinigameCombatType
    enum MinigameCombatType {
        UNSET = 0;
        PVP = 1;
        PVE = 2;
    }

    MinigameCombatType combat_type = 1;
    HoloPokemonType move_type = 2;
    float score = 3;
}

// ref: Holoholo.Rpc.CombatMoveSettingsProto
message CombatMoveSettingsProto {
    // ref: Holoholo.Rpc.CombatMoveSettingsProto/Types/CombatMoveBuffsProto
    message CombatMoveBuffsProto {
        int32 attacker_attack_stat_stage_change = 1;
        int32 attacker_defense_stat_stage_change = 2;
        int32 target_attack_stat_stage_change = 3;
        int32 target_defense_stat_stage_change = 4;
        float buff_activation_chance = 5;
    }

    HoloPokemonMove unique_id = 1;
    HoloPokemonType type = 2;
    float power = 3;
    string vfx_name = 4;
    int32 duration_turns = 5;
    int32 energy_delta = 6;
    CombatMoveBuffsProto buffs = 7;
}

// ref: Holoholo.Rpc.CombatNpcPersonalityProto
message CombatNpcPersonalityProto {
    string personality_name = 1;
    float super_effective_chance = 2;
    float special_chance = 3;
    float defensive_minimum_score = 4;
    float defensive_maximum_score = 5;
    float offensive_minimum_score = 6;
    float offensive_maximum_score = 7;
}

// ref: Holoholo.Rpc.CombatNpcTrainerProto
message CombatNpcTrainerProto {
    string trainer_name = 1;
    string combat_league_template_id = 2;
    string combat_personality_id = 3;
    string win_loot_table_id = 4;
    string lose_loot_table_id = 5;
    PlayerAvatarProto avatar = 7;
    repeated NpcPokemonProto available_pokemon = 8;
    string trainer_title = 9;
    string trainer_quote = 10;
    string icon_url = 11;
    string backdrop_image_bundle = 12;
}

// ref: Holoholo.Rpc.CombatOffensiveInputChallengeSettings
message CombatOffensiveInputChallengeSettings {
    float score_per_tap = 1;
    float score_decay_per_second = 2;
    float max_score = 3;
    float high_score_additional_decay_per_second = 4;
    float max_time_additional_decay_per_second = 5;
}

// ref: Holoholo.Rpc.CombatPlayerPreferencesProto
message CombatPlayerPreferencesProto {
    bool friends_combat_opt_out = 1;
    bool nearby_combat_opt_in = 2;
}

// ref: Holoholo.Rpc.CombatPlayerProfileProto
message CombatPlayerProfileProto {
    // ref: Holoholo.Rpc.CombatPlayerProfileProto/Types/Location
    message Location {
        double lat_degree = 1;
        double lng_degree = 2;
    }

    string player_id = 1;
    PlayerPublicProfileProto public_profile = 2;
    repeated string combat_league_template_id = 3;
    fixed64 buddy_pokemon_id = 4;
    Location location = 5;
    CombatPlayerPreferencesProto combat_player_preferences = 6;
}

// ref: Holoholo.Rpc.CombatProto
message CombatProto {
    // ref: Holoholo.Rpc.CombatProto/Types/CombatState
    enum CombatState {
        UNSET = 0;
        WAITING_FOR_PLAYERS = 1;
        READY = 2;
        ACTIVE = 3;
        SPECIAL_ATTACK = 4;
        WAITING_FOR_CHANGE_POKEMON = 5;
        FINISHED = 6;
        PLAYER_QUIT = 7;
        TIMEOUT = 8;
    }

    // ref: Holoholo.Rpc.CombatProto/Types/CombatPlayerProto
    message CombatPlayerProto {
        PlayerPublicProfileProto public_profile = 1;
        CombatPokemonProto active_pokemon = 2;
        repeated CombatPokemonProto reserve_pokemon = 3;
        repeated CombatPokemonProto fainted_pokemon = 4;
        CombatActionProto current_action = 5;
        bool lockstep_ack = 6;
        int32 last_updated_turn = 7;
        CombatActionProto minigame_action = 8;
        int64 quick_swap_available_ms = 9;
        int32 minigame_defense_chances_left = 10;
        string combat_npc_personality_id = 11;
        int32 times_combat_actions_called = 12;
    }

    // ref: Holoholo.Rpc.CombatProto/Types/CombatPokemonProto
    message CombatPokemonProto {
        fixed64 pokemon_id = 1;
        int32 pokedex_id = 2;
        int32 cp = 3;
        float cp_multiplier = 4;
        int32 stamina = 5;
        int32 max_stamina = 6;
        int32 move1 = 7;
        int32 move2 = 8;
        int32 move3 = 9;
        int32 energy = 10;
        PokemonDisplayProto pokemon_display = 11;
        int32 individual_attack = 12;
        int32 individual_defense = 13;
        int32 individual_stamina = 14;
        int32 attack_stat_stage = 15;
        int32 defense_stat_stage = 16;
        int32 battles_won = 17;
        int32 battles_lost = 18;
        string nickname = 19;
        Item pokeball = 20;
    }

    CombatState combat_state = 1;
    string combat_id = 2;
    CombatPlayerProto player = 3;
    CombatPlayerProto opponent = 4;
    int64 combat_start_ms = 5;
    int64 combat_end_ms = 6;
    int64 server_ms = 7;
    int32 current_turn = 8;
    int64 turn_start_ms = 9;
    int64 minigame_end_ms = 10;
    int64 minigame_submit_score_end_ms = 11;
    int64 change_pokemon_end_ms = 12;
    int64 quick_swap_cooldown_duration_ms = 13;
    int64 state_change_delay_until_turn = 14;
}

// ref: Holoholo.Rpc.CombatRankingSettingsProto
message CombatRankingSettingsProto {
    // ref: Holoholo.Rpc.CombatRankingSettingsProto/Types/RankLevelProto
    message RankLevelProto {
        int32 rank_level = 1;
        int32 additional_total_battles_required = 2;
        int32 additional_wins_required = 3;
        int32 min_rating_required = 4;
    }

    repeated RankLevelProto rank_level = 1;
    RankLevelProto required_for_rewards = 2;
    int32 min_rank_to_display_rating = 3;
}

// ref: Holoholo.Rpc.CombatSeasonResult
message CombatSeasonResult {
    int32 season = 1;
    int32 rank = 2;
    int32 total_battles = 3;
    int32 total_wins = 4;
    float rating = 5;
    int32 longest_win_streak = 6;
    int32 current_streak = 7;
    int64 stardust_earned = 8;
}

// ref: Holoholo.Rpc.CombatSettingsProto
message CombatSettingsProto {
    float round_duration_seconds = 1;
    float turn_duration_seconds = 2;
    float minigame_duration_seconds = 3;
    float same_type_attack_bonus_multiplier = 4;
    float fast_attack_bonus_multiplier = 5;
    float charge_attack_bonus_multiplier = 6;
    float defense_bonus_multiplier = 7;
    float minigame_bonus_base_multiplier = 8;
    float minigame_bonus_variable_multiplier = 9;
    int32 max_energy = 10;
    float defender_minigame_multiplier = 11;
    float change_pokemon_duration_seconds = 12;
    float minigame_submit_score_duration_seconds = 13;
    float quick_swap_combat_start_available_seconds = 14;
    float quick_swap_cooldown_duration_seconds = 15;
    CombatOffensiveInputChallengeSettings offensive_input_challenge_settings = 16;
    CombatDefensiveInputChallengeSettings defensive_input_challenge_settings = 17;
    float charge_score_base = 18;
    float charge_score_nice = 19;
    float charge_score_great = 20;
    float charge_score_excellent = 21;
    int32 swap_animation_duration_turns = 22;
    int32 super_effective_flyout_duration_turns = 23;
    int32 not_very_effective_flyout_duration_turns = 24;
    int32 blocked_flyout_duration_turns = 25;
    int32 normal_effective_flyout_duration_turns = 26;
    int32 faint_animation_duration_turns = 27;
    int32 npc_swap_delay_turns = 28;
    int32 npc_charged_attack_delay_turns = 29;
    float shadow_pokemon_attack_bonus_multiplier = 30;
    float shadow_pokemon_defense_bonus_multiplier = 31;
    float purified_pokemon_attack_multiplier_vs_shadow = 32;
}

// ref: Holoholo.Rpc.CombatStatStageSettingsProto
message CombatStatStageSettingsProto {
    int32 minimum_stat_stage = 1;
    int32 maximum_stat_stage = 2;
    repeated float attack_buff_multiplier = 3;
    repeated float defense_buff_multiplier = 4;
}

// ref: Holoholo.Rpc.CombatTypeProto
message CombatTypeProto {
    HoloPokemonType type = 1;
    float nice_level_threshold = 2;
    float great_level_threshold = 3;
    float excellent_level_threshold = 4;
}

// ref: Holoholo.Rpc.CompleteCompetitiveSeasonOutProto
message CompleteCompetitiveSeasonOutProto {
    // ref: Holoholo.Rpc.CompleteCompetitiveSeasonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_HAS_NO_VS_SEEKER = 2;
        ERROR_REWARDS_ALREADY_COLLECTED = 3;
    }

    Result result = 1;
    LootProto loot_proto = 2;
    int32 new_rank = 3;
    float new_rating = 4;
    CombatSeasonResult last_season_result = 5;
    bool was_player_active = 6;
}

// ref: Holoholo.Rpc.CompleteCompetitiveSeasonProto
message CompleteCompetitiveSeasonProto {
}

// ref: Holoholo.Rpc.CompleteInvasionDialogueOutProto
message CompleteInvasionDialogueOutProto {
    InvasionStatus.Status status = 1;
}

// ref: Holoholo.Rpc.CompleteInvasionDialogueProto
message CompleteInvasionDialogueProto {
    IncidentLookupProto incident_lookup = 1;
    int32 step = 2;
}

// ref: Holoholo.Rpc.CompleteQuestLogEntry
message CompleteQuestLogEntry {
    // ref: Holoholo.Rpc.CompleteQuestLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    ClientQuestProto quest = 2;
    repeated QuestStampProto stamp = 3;
}

// ref: Holoholo.Rpc.CompleteQuestOutProto
message CompleteQuestOutProto {
    // ref: Holoholo.Rpc.CompleteQuestOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_QUEST_NOT_FOUND = 2;
        ERROR_QUEST_STILL_IN_PROGRESS = 3;
        ERROR_QUEST_ALREADY_COMPLETED = 4;
        ERROR_SUBQUEST_NOT_FOUND = 5;
        ERROR_SUBQUEST_STILL_IN_PROGRESS = 6;
        ERROR_SUBQUEST_ALREADY_COMPLETED = 7;
        ERROR_MULTIPART_STILL_IN_PROGRESS = 8;
        ERROR_MULTIPART_ALREADY_COMPLETED = 9;
        ERROR_REDEEM_COMPLETED_QUEST_STAMP_CARD_FIRST = 10;
        ERROR_INVENTORY_FULL = 11;
    }

    Status status = 1;
    ClientQuestProto quest = 2;
    repeated QuestStampProto stamp = 3;
}

// ref: Holoholo.Rpc.CompleteQuestPokemonEncounterLogEntry
message CompleteQuestPokemonEncounterLogEntry {
    // ref: Holoholo.Rpc.CompleteQuestPokemonEncounterLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        POKEMON_CAPTURED = 1;
        POKEMON_FLED = 2;
    }

    Result result = 1;
    int32 pokedex_number = 2;
    int32 combat_points = 3;
    fixed64 pokemon_id = 4;
    PokemonDisplayProto pokemon_display = 5;
    EncounterType encounter_type = 6;
}

// ref: Holoholo.Rpc.CompleteQuestProto
message CompleteQuestProto {
    string quest_id = 1;
    string sub_quest_id = 2;
}

// ref: Holoholo.Rpc.CompleteQuestStampCardLogEntry
message CompleteQuestStampCardLogEntry {
    // ref: Holoholo.Rpc.CompleteQuestStampCardLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    repeated QuestRewardProto reward = 2;
}

// ref: Holoholo.Rpc.CompleteQuestStampCardOutProto
message CompleteQuestStampCardOutProto {
    // ref: Holoholo.Rpc.CompleteQuestStampCardOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_STILL_IN_PROGRESS = 2;
    }

    Status status = 1;
    repeated QuestRewardProto reward = 2;
}

// ref: Holoholo.Rpc.CompleteQuestStampCardProto
message CompleteQuestStampCardProto {
}

// ref: Holoholo.Rpc.CompleteSnapshotSessionOutProto
message CompleteSnapshotSessionOutProto {
    // ref: Holoholo.Rpc.CompleteSnapshotSessionOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PHOTO_POKEMON_INVALID = 2;
        ERROR_UNKNOWN = 3;
    }

    Status status = 1;
}

// ref: Holoholo.Rpc.CompleteSnapshotSessionProto
message CompleteSnapshotSessionProto {
    fixed64 photo_pokemon_id = 1;
    int32 num_photos_taken = 2;
}

// ref: Holoholo.Rpc.CompleteVsSeekerAndRestartChargingOutProto
message CompleteVsSeekerAndRestartChargingOutProto {
    // ref: Holoholo.Rpc.CompleteVsSeekerAndRestartChargingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_VS_SEEKER_NOT_FOUND = 2;
        ERROR_VS_SEEKER_ALREADY_STARTED_CHARGING = 3;
        ERROR_VS_SEEKER_ALREADY_FULLY_CHARGED = 4;
        ERROR_VS_SEEKER_PLAYER_IN_WRONG_SEASON = 5;
        ERROR_PLAYER_INVENTORY_FULL = 6;
        ERROR_PLAYER_HAS_UNCLAIMED_REWARDS = 7;
    }

    Result result = 1;
    VsSeekerAttributesProto vs_seeker = 2;
    LootProto loot_proto = 3;
    CombatSeasonResult current_season_result = 4;
    int32 previous_rank = 5;
    float previous_rating = 6;
    CombatBaseStatsProto stats_at_rank_start = 7;
    repeated string avatar_template_id_rewarded = 8;
}

// ref: Holoholo.Rpc.CompleteVsSeekerAndRestartChargingProto
message CompleteVsSeekerAndRestartChargingProto {
}

// ref: Holoholo.Rpc.ConfirmPhotobombOutProto
message ConfirmPhotobombOutProto {
    // ref: Holoholo.Rpc.ConfirmPhotobombOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PHOTOBOMB_NOT_FOUND = 2;
        ERROR_PHOTOBOMB_ALREADY_CONFIRMED = 3;
        ERROR_UNKNOWN = 4;
    }

    Status status = 1;
}

// ref: Holoholo.Rpc.ConfirmPhotobombProto
message ConfirmPhotobombProto {
    fixed64 encounter_id = 1;
}

// ref: Holoholo.Rpc.ConfirmTradingOutProto
message ConfirmTradingOutProto {
    // ref: Holoholo.Rpc.ConfirmTradingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_FRIEND_NOT_FOUND = 3;
        ERROR_INVALID_PLAYER_ID = 4;
        ERROR_INVALID_STATE = 5;
        ERROR_STATE_HANDLER = 6;
        ERROR_INVALID_POKEMON = 7;
        ERROR_INSUFFICIENT_PAYMENT = 8;
        ERROR_NO_PLAYER_POKEMON = 9;
        ERROR_NO_FRIEND_POKEMON = 10;
        ERROR_PLAYER_ALREADY_CONFIRMED = 11;
        ERROR_TRANSACTION_LOG_NOT_MATCH = 12;
        ERROR_TRADING_EXPIRED = 13;
        ERROR_TRANSACTION = 14;
        ERROR_DAILY_LIMIT_REACHED = 15;
    }

    Result result = 1;
    TradingProto trading = 2;
}

// ref: Holoholo.Rpc.ConfirmTradingProto
message ConfirmTradingProto {
    string player_id = 1;
    string transaction_log = 2;
}

// ref: Holoholo.Rpc.ContactSettingsProto
message ContactSettingsProto {
    bool send_marketing_emails = 1;
    bool send_push_notifications = 2;
}

// ref: Holoholo.Rpc.CreateBuddyMultiplayerSessionOutProto
message CreateBuddyMultiplayerSessionOutProto {
    // ref: Holoholo.Rpc.CreateBuddyMultiplayerSessionOutProto/Types/Result
    enum Result {
        CREATE_SUCCESS = 0;
        CREATE_BUDDY_NOT_SET = 1;
        CREATE_BUDDY_NOT_FOUND = 2;
        CREATE_BAD_BUDDY = 3;
        CREATE_BUDDY_V2_NOT_ENABLED = 4;
        CREATE_PLAYER_LEVEL_TOO_LOW = 5;
        CREATE_UNKNOWN_ERROR = 6;
        CREATE_U13_NO_PERMISSION = 7;
    }

    string plfe_session_id = 1;
    bytes arbe_join_token = 2;
    int64 generation_timestamp = 3;
    int32 max_players = 4;
    Result result = 5;
}

// ref: Holoholo.Rpc.CreateBuddyMultiplayerSessionProto
message CreateBuddyMultiplayerSessionProto {
}

// ref: Holoholo.Rpc.CreateCombatChallengeOutProto
message CreateCombatChallengeOutProto {
    // ref: Holoholo.Rpc.CreateCombatChallengeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_CHALLENGE_STATE = 2;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 3;
        ERROR_ACCESS_DENIED = 4;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
}

// ref: Holoholo.Rpc.CreateCombatChallengeProto
message CreateCombatChallengeProto {
    string challenge_id = 1;
}

// ref: Holoholo.Rpc.CurrencyQuantityProto
message CurrencyQuantityProto {
    string currency_type = 1;
    int32 quantity = 2;
    int32 fiat_purchased_quantity = 3;
    string fiat_currency_type = 4;
    int64 fiat_currency_cost_e6 = 5;
}

// ref: Holoholo.Rpc.CurrentNewsProto
message CurrentNewsProto {
    repeated NewsArticleProto news_articles = 1;
    string news_strings_url = 2;
    int64 last_updated_timestamp = 3;
}

// ref: Holoholo.Rpc.DailyBonusProto
message DailyBonusProto {
    int64 next_collect_timestamp_ms = 1;
    int64 next_defender_bonus_collect_timestamp_ms = 2;
}

// ref: Holoholo.Rpc.DailyBuddyAffectionQuestProto
message DailyBuddyAffectionQuestProto {
    DailyCounterProto daily_affection_counter = 1;
}

// ref: Holoholo.Rpc.DailyCounterProto
message DailyCounterProto {
    int64 window = 1;
    int32 count = 2;
}

// ref: Holoholo.Rpc.DailyQuestProto
message DailyQuestProto {
    int32 current_period_bucket = 1;
    int32 current_streak_count = 2;
}

// ref: Holoholo.Rpc.DailyQuestSettings
message DailyQuestSettings {
    int32 buckets_per_day = 1;
    int32 streak_length = 2;
    float bonus_multiplier = 3;
    float streak_bonus_multiplier = 4;
    bool disable = 5;
}

// ref: Holoholo.Rpc.DailyStreaksProto
message DailyStreaksProto {
    // ref: Holoholo.Rpc.DailyStreaksProto/Types/StreakProto
    message StreakProto {
        QuestType quest_type = 1;
        int32 count = 2;
        int32 target = 3;
        int32 remaining_today = 4;
    }

    repeated StreakProto streaks = 1;
}

// ref: Holoholo.Rpc.DamagePropertyProto
message DamagePropertyProto {
    bool super_effective_charge_move = 1;
    bool weather_boosted = 2;
}

// ref: Holoholo.Rpc.DaysWithARowQuestProto
message DaysWithARowQuestProto {
    int32 last_window = 1;
}

// ref: Holoholo.Rpc.DeclineCombatChallengeOutProto
message DeclineCombatChallengeOutProto {
    // ref: Holoholo.Rpc.DeclineCombatChallengeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_CHALLENGE_STATE = 2;
        ERROR_CHALLENGE_NOT_FOUND = 3;
        ERROR_ALREADY_TIMEDOUT = 4;
        ERROR_ALREADY_CANCELLED = 5;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.DeclineCombatChallengeProto
message DeclineCombatChallengeProto {
    string challenge_id = 1;
}

// ref: Holoholo.Rpc.DeclineExRaidPassLogEntry
message DeclineExRaidPassLogEntry {
    // ref: Holoholo.Rpc.DeclineExRaidPassLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string friend_codename = 2;
}

// ref: Holoholo.Rpc.DeclineExRaidPassOutProto
message DeclineExRaidPassOutProto {
    // ref: Holoholo.Rpc.DeclineExRaidPassOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_EX_RAID_PASS_NOT_FOUND = 2;
        ERROR_UNKNOWN = 3;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.DeclineExRaidPassProto
message DeclineExRaidPassProto {
    string fort_id = 1;
    int64 raid_seed = 2;
}

// ref: Holoholo.Rpc.DeleteGiftFromInventoryOutProto
message DeleteGiftFromInventoryOutProto {
    // ref: Holoholo.Rpc.DeleteGiftFromInventoryOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_GIFT_DOES_NOT_EXIST = 3;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.DeleteGiftFromInventoryProto
message DeleteGiftFromInventoryProto {
    repeated fixed64 giftbox_id = 1;
}

// ref: Holoholo.Rpc.DeleteGiftOutProto
message DeleteGiftOutProto {
    // ref: Holoholo.Rpc.DeleteGiftOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_INVALID_PLAYER_ID = 3;
        ERROR_FRIEND_NOT_FOUND = 4;
        ERROR_GIFT_DOES_NOT_EXIST = 5;
        ERROR_FRIEND_UPDATE = 6;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.DeleteGiftProto
message DeleteGiftProto {
    string player_id = 1;
    fixed64 giftbox_id = 2;
}

// ref: Holoholo.Rpc.DeploymentTotalsProto
message DeploymentTotalsProto {
    int32 times_fed = 1;
    int32 battles_won = 2;
    int32 battles_lost = 3;
    int64 deployment_duration_ms = 4;
}

// ref: Holoholo.Rpc.DeployPokemonTelemetry
message DeployPokemonTelemetry {
    int32 status = 1;
    PokemonTelemetry pokemon = 2;
    string gym_id = 3;
    int32 team = 4;
    int32 defender_count = 5;
}

// ref: Holoholo.Rpc.DeviceServiceToggleTelemetry
message DeviceServiceToggleTelemetry {
    DeviceServiceTelemetryIds device_service_telemetry_id = 1;
    bool was_enabled = 2;
    bool was_subsequent = 3;
}

// ref: Holoholo.Rpc.DeviceSpecificationsTelemetry
message DeviceSpecificationsTelemetry {
    int32 device_width = 1;
    int32 device_height = 2;
    int32 camera_width = 3;
    int32 camera_height = 4;
    float camera_focal_length_fx = 5;
    float camera_focal_length_fy = 6;
    int32 camera_refresh_rate = 7;
}

// ref: Holoholo.Rpc.DiskEncounterOutProto
message DiskEncounterOutProto {
    // ref: Holoholo.Rpc.DiskEncounterOutProto/Types/Result
    enum Result {
        UNKNOWN = 0;
        SUCCESS = 1;
        NOT_AVAILABLE = 2;
        NOT_IN_RANGE = 3;
        ENCOUNTER_ALREADY_FINISHED = 4;
        POKEMON_INVENTORY_FULL = 5;
    }

    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;
    int32 arplus_attempts_until_flee = 5;
}

// ref: Holoholo.Rpc.DiskEncounterProto
message DiskEncounterProto {
    int64 encounter_id = 1;
    string fort_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
    double gym_lat_degrees = 5;
    double gym_lng_degrees = 6;
}

// ref: Holoholo.Rpc.Distribution
message Distribution {
    // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/BucketTypeOneofCase
    //oneof BucketType {
        //none = 0;
        //linear_buckets = 1;
        //exponential_buckets = 2;
        //explicit_buckets = 3;
    //}

    // ref: Holoholo.Rpc.Distribution/Types/BucketOptions
    message BucketOptions {
        // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/BucketTypeOneofCase
        //oneof BucketType {
            //none = 0;
            //linear_buckets = 1;
            //exponential_buckets = 2;
            //explicit_buckets = 3;
        //}

        // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/Types/ExplicitBuckets
        message ExplicitBuckets {
            repeated int64 bounds = 1;
        }

        // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/Types/ExponentialBuckets
        message ExponentialBuckets {
            int64 num_finite_buckets = 1;
            float growth_factor = 2;
            float scale = 3;
        }

        // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/Types/LinearBuckets
        message LinearBuckets {
            int64 num_finite_buckets = 1;
            int64 width = 2;
            int64 offset = 3;
        }

        LinearBuckets linear_buckets = 1;
        ExponentialBuckets exponential_buckets = 2;
        ExplicitBuckets explicit_buckets = 3;
    }

    // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/Types/ExplicitBuckets
    message ExplicitBuckets {
        repeated int64 bounds = 1;
    }

    // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/Types/ExponentialBuckets
    message ExponentialBuckets {
        int64 num_finite_buckets = 1;
        float growth_factor = 2;
        float scale = 3;
    }

    // ref: Holoholo.Rpc.Distribution/Types/BucketOptions/Types/LinearBuckets
    message LinearBuckets {
        int64 num_finite_buckets = 1;
        int64 width = 2;
        int64 offset = 3;
    }

    // ref: Holoholo.Rpc.Distribution/Types/Range
    message Range {
        int64 min = 1;
        int64 max = 2;
    }

    int64 count = 1;
    float mean = 2;
    double sum_of_squared_deviation = 3;
    Range range = 4;
    BucketOptions bucket_options = 5;
    repeated int64 bucket_counts = 6;
}

// ref: Holoholo.Rpc.DownloadUrlEntryProto
message DownloadUrlEntryProto {
    string asset_id = 1;
    string url = 2;
    int32 size = 3;
    fixed32 checksum = 4;
}

// ref: Holoholo.Rpc.DownloadUrlOutProto
message DownloadUrlOutProto {
    repeated DownloadUrlEntryProto download_urls = 1;
}

// ref: Holoholo.Rpc.DownloadUrlRequestProto
message DownloadUrlRequestProto {
    repeated string asset_id = 1;
}

// ref: Holoholo.Rpc.DumbBeaconProto
message DumbBeaconProto {
}

// ref: Holoholo.Rpc.EchoOutProto
message EchoOutProto {
    string context = 1;
}

// ref: Holoholo.Rpc.EchoProto
message EchoProto {
}

// ref: Holoholo.Rpc.EggIncubatorAttributesProto
message EggIncubatorAttributesProto {
    EggIncubatorType incubator_type = 1;
    int32 uses = 2;
    float distance_multiplier = 3;
}

// ref: Holoholo.Rpc.EggIncubatorProto
message EggIncubatorProto {
    string item_id = 1;
    Item item = 2;
    EggIncubatorType incubator_type = 3;
    int32 uses_remaining = 4;
    int64 pokemon_id = 5;
    double start_km_walked = 6;
    double target_km_walked = 7;
}

// ref: Holoholo.Rpc.EggIncubatorsProto
message EggIncubatorsProto {
    repeated EggIncubatorProto egg_incubator = 1;
}

// ref: Holoholo.Rpc.EnabledPokemonSettingsProto
message EnabledPokemonSettingsProto {
    // ref: Holoholo.Rpc.EnabledPokemonSettingsProto/Types/Range
    message Range {
        int32 start = 1;
        int32 end = 2;
    }

    repeated Range enabled_pokemon_range = 3;
}

// ref: Holoholo.Rpc.EncounterOutProto
message EncounterOutProto {
    // ref: Holoholo.Rpc.EncounterOutProto/Types/Background
    enum Background {
        PARK = 0;
        DESERT = 1;
    }

    // ref: Holoholo.Rpc.EncounterOutProto/Types/Status
    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;
    }

    WildPokemonProto pokemon = 1;
    Background background = 2;
    Status status = 3;
    CaptureProbabilityProto capture_probability = 4;
    Item active_item = 5;
    int32 arplus_attempts_until_flee = 6;
}

// ref: Holoholo.Rpc.EncounterPhotobombOutProto
message EncounterPhotobombOutProto {
    // ref: Holoholo.Rpc.EncounterPhotobombOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        NO_ENCOUNTER_AVAILABLE = 2;
        POKEMON_INVENTORY_FULL = 3;
        ERROR_UNKNOWN = 4;
    }

    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;
    int32 arplus_attempts_until_flee = 5;
}

// ref: Holoholo.Rpc.EncounterPhotobombProto
message EncounterPhotobombProto {
    fixed64 encounter_id = 1;
    string encounter_location = 2;
}

// ref: Holoholo.Rpc.EncounterPokemonTelemetry
message EncounterPokemonTelemetry {
    PokemonTelemetry pokemon = 1;
    string map_pokemon_type = 2;
    bool ar_enabled = 3;
    bool ar_plus_enabled = 4;
}

// ref: Holoholo.Rpc.EncounterProto
message EncounterProto {
    fixed64 encounter_id = 1;
    string spawnpoint_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

// ref: Holoholo.Rpc.EncounterSettingsProto
message EncounterSettingsProto {
    float spin_bonus_threshold = 1;
    float excellent_throw_threshold = 2;
    float great_throw_threshold = 3;
    float nice_throw_threshold = 4;
    int32 milestone_threshold = 5;
    bool ar_plus_mode_enabled = 6;
    float ar_close_proximity_threshold = 7;
    float ar_low_awareness_threshold = 8;
    float ar_close_proximity_multiplier = 9;
    float ar_awareness_penalty_threshold = 10;
    float ar_low_awareness_max_multiplier = 11;
    float ar_high_awareness_min_penalty_multiplier = 12;
    int32 ar_plus_attempts_until_flee_max = 13;
    int32 ar_plus_attempts_until_flee_infinite = 14;
    float escaped_bonus_multiplier_max = 15;
    float escaped_bonus_multiplier_by_excellent_throw = 16;
    float escaped_bonus_multiplier_by_great_throw = 17;
    float escaped_bonus_multiplier_by_nice_throw = 18;
}

// ref: Holoholo.Rpc.EncounterTutorialCompleteOutProto
message EncounterTutorialCompleteOutProto {
    // ref: Holoholo.Rpc.EncounterTutorialCompleteOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_POKEMON = 2;
    }

    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureScoreProto scores = 3;
}

// ref: Holoholo.Rpc.EncounterTutorialCompleteProto
message EncounterTutorialCompleteProto {
    int32 pokedex_id = 1;
}

// ref: Holoholo.Rpc.EnumWrapper
message EnumWrapper {
    // ref: Holoholo.Rpc.EnumWrapper/Types/CharacterCategory
    enum CharacterCategory {
        UNSET = 0;
        TEAM_LEADER = 1;
        GRUNT = 2;
        ARLO = 3;
        CLIFF = 4;
        SIERRA = 5;
        GIOVANNI = 6;
    }

    // ref: Holoholo.Rpc.EnumWrapper/Types/InvasionCharacter
    enum InvasionCharacter {
        CHARACTER_UNSET = 0;
        CHARACTER_BLANCHE = 1;
        CHARACTER_CANDELA = 2;
        CHARACTER_SPARK = 3;
        CHARACTER_GRUNT_MALE = 4;
        CHARACTER_GRUNT_FEMALE = 5;
        CHARACTER_BUG_GRUNT_FEMALE = 6;
        CHARACTER_BUG_GRUNT_MALE = 7;
        CHARACTER_DARKNESS_GRUNT_FEMALE = 8;
        CHARACTER_DARKNESS_GRUNT_MALE = 9;
        CHARACTER_DARK_GRUNT_FEMALE = 10;
        CHARACTER_DARK_GRUNT_MALE = 11;
        CHARACTER_DRAGON_GRUNT_FEMALE = 12;
        CHARACTER_DRAGON_GRUNT_MALE = 13;
        CHARACTER_FAIRY_GRUNT_FEMALE = 14;
        CHARACTER_FAIRY_GRUNT_MALE = 15;
        CHARACTER_FIGHTING_GRUNT_FEMALE = 16;
        CHARACTER_FIGHTING_GRUNT_MALE = 17;
        CHARACTER_FIRE_GRUNT_FEMALE = 18;
        CHARACTER_FIRE_GRUNT_MALE = 19;
        CHARACTER_FLYING_GRUNT_FEMALE = 20;
        CHARACTER_FLYING_GRUNT_MALE = 21;
        CHARACTER_GRASS_GRUNT_FEMALE = 22;
        CHARACTER_GRASS_GRUNT_MALE = 23;
        CHARACTER_GROUND_GRUNT_FEMALE = 24;
        CHARACTER_GROUND_GRUNT_MALE = 25;
        CHARACTER_ICE_GRUNT_FEMALE = 26;
        CHARACTER_ICE_GRUNT_MALE = 27;
        CHARACTER_METAL_GRUNT_FEMALE = 28;
        CHARACTER_METAL_GRUNT_MALE = 29;
        CHARACTER_NORMAL_GRUNT_FEMALE = 30;
        CHARACTER_NORMAL_GRUNT_MALE = 31;
        CHARACTER_POISON_GRUNT_FEMALE = 32;
        CHARACTER_POISON_GRUNT_MALE = 33;
        CHARACTER_PSYCHIC_GRUNT_FEMALE = 34;
        CHARACTER_PSYCHIC_GRUNT_MALE = 35;
        CHARACTER_ROCK_GRUNT_FEMALE = 36;
        CHARACTER_ROCK_GRUNT_MALE = 37;
        CHARACTER_WATER_GRUNT_FEMALE = 38;
        CHARACTER_WATER_GRUNT_MALE = 39;
        CHARACTER_PLAYER_TEAM_LEADER = 40;
        CHARACTER_EXECUTIVE_CLIFF = 41;
        CHARACTER_EXECUTIVE_ARLO = 42;
        CHARACTER_EXECUTIVE_SIERRA = 43;
        CHARACTER_GIOVANNI = 44;
        CHARACTER_DECOY_GRUNT_MALE = 45;
        CHARACTER_DECOY_GRUNT_FEMALE = 46;
        CHARACTER_GHOST_GRUNT_FEMALE = 47;
        CHARACTER_GHOST_GRUNT_MALE = 48;
        CHARACTER_ELECTRIC_GRUNT_FEMALE = 49;
        CHARACTER_ELECTRIC_GRUNT_MALE = 50;
    }

    // ref: Holoholo.Rpc.EnumWrapper/Types/InvasionCharacterExpression
    enum InvasionCharacterExpression {
        EXPRESSION_UNSET = 0;
        PLACEHOLDER_1 = 1;
        PLACEHOLDER_2 = 2;
        PLACEHOLDER_3 = 3;
        PLACEHOLDER_4 = 4;
    }

    // ref: Holoholo.Rpc.EnumWrapper/Types/PokestopStyle
    enum PokestopStyle {
        POKESTOP_NORMAL = 0;
        POKESTOP_ROCKET_INVASION = 1;
        POKESTOP_ROCKET_VICTORY = 2;
    }

}

// ref: Holoholo.Rpc.EquipBadgeOutProto
message EquipBadgeOutProto {
    // ref: Holoholo.Rpc.EquipBadgeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        COOLDOWN_ACTIVE = 2;
        NOT_QUALIFIED = 3;
    }

    Result result = 1;
    EquippedBadgeProto equipped = 2;
}

// ref: Holoholo.Rpc.EquipBadgeProto
message EquipBadgeProto {
    HoloBadgeType badge = 1;
}

// ref: Holoholo.Rpc.EquippedBadgeProto
message EquippedBadgeProto {
    HoloBadgeType equipped_badge = 1;
    int32 level = 2;
    int64 next_equip_change_allowed_timestamp_ms = 3;
}

// ref: Holoholo.Rpc.EquippedBadgeSettingsProto
message EquippedBadgeSettingsProto {
    int64 equip_badge_cooldown_ms = 1;
    repeated float catch_probability_bonus = 2;
    repeated float flee_probability_bonus = 3;
}

// ref: Holoholo.Rpc.EventBadgeSettingsProto
message EventBadgeSettingsProto {
    int64 valid_from_ms = 1;
    int64 valid_to_ms = 2;
    repeated HoloBadgeType mutually_exclusive_badges = 3;
}

// ref: Holoholo.Rpc.EventInfoProto
message EventInfoProto {
    string image_url = 1;
    string icon_url = 2;
    string name_key = 3;
}

// ref: Holoholo.Rpc.EventSectionProto
message EventSectionProto {
    // ref: Holoholo.Rpc.EventSectionProto/Types/BonusBoxProto/Types/IconType
    enum IconType {
        UNSET = 0;
        ADVENTURE_SYNC = 1;
        BUDDY = 2;
        CANDY_GENERAL = 3;
        EGG = 4;
        EGG_INCUBATOR = 5;
        EVENT_MOVE = 6;
        EVOLUTION = 7;
        FIELD_RESEARCH = 8;
        FRIENDSHIP = 9;
        GIFT = 10;
        INCENSE = 11;
        LUCKY_EGG = 12;
        LURE_MODULE = 13;
        PHOTOBOMB = 14;
        POKESTOP = 15;
        RAID = 16;
        RAID_PASS = 17;
        SPAWN_UNKNOWN = 18;
        STAR_PIECE = 19;
        STARDUST = 20;
        TEAM_ROCKET = 21;
        TRADE = 22;
        TRANSFER_CANDY = 23;
        BATTLE = 24;
        XP = 25;
        SHOP = 26;
    }

    // ref: Holoholo.Rpc.EventSectionProto/Types/BonusBoxProto
    message BonusBoxProto {
        // ref: Holoholo.Rpc.EventSectionProto/Types/BonusBoxProto/Types/IconType
        enum IconType {
            UNSET = 0;
            ADVENTURE_SYNC = 1;
            BUDDY = 2;
            CANDY_GENERAL = 3;
            EGG = 4;
            EGG_INCUBATOR = 5;
            EVENT_MOVE = 6;
            EVOLUTION = 7;
            FIELD_RESEARCH = 8;
            FRIENDSHIP = 9;
            GIFT = 10;
            INCENSE = 11;
            LUCKY_EGG = 12;
            LURE_MODULE = 13;
            PHOTOBOMB = 14;
            POKESTOP = 15;
            RAID = 16;
            RAID_PASS = 17;
            SPAWN_UNKNOWN = 18;
            STAR_PIECE = 19;
            STARDUST = 20;
            TEAM_ROCKET = 21;
            TRADE = 22;
            TRANSFER_CANDY = 23;
            BATTLE = 24;
            XP = 25;
            SHOP = 26;
        }

        string text = 1;
        IconType icon_type = 2;
    }

    string event_name = 1;
    GetLocalTimeOutProto.LocalTimeProto end_time = 3;
    string ref_news_id = 4;
    repeated BonusBoxProto bonus_boxes = 5;
}

// ref: Holoholo.Rpc.EventSettingsProto
message EventSettingsProto {
    repeated string condolence_ribbon_country = 1;
    bool enable_event_link = 2;
    bool enable_event_link_for_children = 3;
    string event_webtoken_server_url = 4;
    bool enable_event_lnt = 5;
    string event_lnt_url = 6;
}

// ref: Holoholo.Rpc.EvolutionBranchProto
message EvolutionBranchProto {
    HoloPokemonId evolution = 1;
    Item evolution_item_requirement = 2;
    int32 candy_cost = 3;
    float km_buddy_distance_requirement = 4;
    PokemonDisplayProto.Form form = 5;
    PokemonDisplayProto.Gender gender_requirement = 6;
    Item lure_item_requirement = 8;
    bool must_be_buddy = 9;
    bool only_daytime = 10;
    bool only_nighttime = 11;
    int32 priority = 12;
    bool no_candy_cost_via_trade = 13;
}

// ref: Holoholo.Rpc.EvolutionV2SettingsProto
message EvolutionV2SettingsProto {
    bool is_enabled = 1;
}

// ref: Holoholo.Rpc.EvolveIntoPokemonQuestProto
message EvolveIntoPokemonQuestProto {
    repeated HoloPokemonId unique_pokemon_id = 1;
}

// ref: Holoholo.Rpc.EvolvePokemonOutProto
message EvolvePokemonOutProto {
    // ref: Holoholo.Rpc.EvolvePokemonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILED_POKEMON_MISSING = 2;
        FAILED_INSUFFICIENT_RESOURCES = 3;
        FAILED_POKEMON_CANNOT_EVOLVE = 4;
        FAILED_POKEMON_IS_DEPLOYED = 5;
        FAILED_INVALID_ITEM_REQUIREMENT = 6;
    }

    Result result = 1;
    PokemonProto evolved_pokemon = 2;
    int32 exp_awarded = 3;
    int32 candy_awarded = 4;
}

// ref: Holoholo.Rpc.EvolvePokemonProto
message EvolvePokemonProto {
    fixed64 pokemon_id = 1;
    Item evolution_item_requirement = 2;
    HoloPokemonId target_pokemon_id = 3;
    PokemonDisplayProto.Form target_pokemon_form = 4;
    bool use_special = 5;
}

// ref: Holoholo.Rpc.EvolvePokemonTelemetry
message EvolvePokemonTelemetry {
    PokemonTelemetry pokemon = 1;
    PokemonTelemetry evolved_pokemon = 2;
}

// ref: Holoholo.Rpc.ExclusiveRaidCancellationProto
message ExclusiveRaidCancellationProto {
    string fort_id = 1;
    int64 start_time_ms = 2;
    int64 end_time_ms = 3;
    string image_url = 4;
    double latitude = 5;
    double longitude = 6;
    string gym_name = 7;
    repeated LootItemProto rewards = 8;
}

// ref: Holoholo.Rpc.ExclusiveTicketInfoProto
message ExclusiveTicketInfoProto {
    int64 raid_seed = 1;
    string fort_id = 2;
    int64 start_time_ms = 4;
    int64 end_time_ms = 5;
    string image_url = 6;
    double latitude = 7;
    double longitude = 8;
    string gym_name = 9;
    int64 spawn_time_ms = 10;
    bool is_cancelled = 11;
    PokemonProto raid_pokemon = 12;
    SharedExclusiveTicketTrainerInfo inviter = 13;
    SharedExclusiveTicketTrainerInfo invitee = 14;
}

// ref: Holoholo.Rpc.ExperienceBoostAttributesProto
message ExperienceBoostAttributesProto {
    float xp_multiplier = 1;
    int32 boost_duration_ms = 2;
}

// ref: Holoholo.Rpc.ExRaidSettingsProto
message ExRaidSettingsProto {
    FriendshipLevelMilestone minimum_ex_raid_share_level = 1;
}

// ref: Holoholo.Rpc.FavoritePokemonTelemetry
message FavoritePokemonTelemetry {
    PokemonTelemetry pokemon = 1;
    bool favored = 2;
}

// ref: Holoholo.Rpc.FeedPokemonTelemetry
message FeedPokemonTelemetry {
    int32 status = 1;
    PokemonTelemetry pokemon = 2;
    string gym_id = 3;
    int32 team = 4;
    int32 defender_count = 5;
    int32 motivation = 6;
    int32 cp_now = 7;
}

// ref: Holoholo.Rpc.FestivalSettingsProto
message FestivalSettingsProto {
    // ref: Holoholo.Rpc.FestivalSettingsProto/Types/FestivalType
    enum FestivalType {
        NONE = 0;
        HALLOWEEN = 1;
        HOLIDAY = 2;
    }

    FestivalType festival_type = 1;
    string key = 2;
    string vector = 3;
}

// ref: Holoholo.Rpc.FetchAllNewsOutProto
message FetchAllNewsOutProto {
    // ref: Holoholo.Rpc.FetchAllNewsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        NO_NEWS_FOUND = 2;
    }

    Result result = 1;
    CurrentNewsProto current_news = 2;
}

// ref: Holoholo.Rpc.FetchAllNewsProto
message FetchAllNewsProto {
}

// ref: Holoholo.Rpc.FitnessRewardsLogEntry
message FitnessRewardsLogEntry {
    // ref: Holoholo.Rpc.FitnessRewardsLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    LootProto rewards = 2;
    double distance_walked_km = 3;
}

// ref: Holoholo.Rpc.FoodAttributesProto
message FoodAttributesProto {
    repeated HoloItemEffect item_effect = 1;
    repeated float item_effect_percent = 2;
    float growth_percent = 3;
    float berry_multiplier = 4;
    float remote_berry_multiplier = 5;
    int32 num_buddy_affection_points = 6;
    int64 map_duration_ms = 7;
    int64 active_duration_ms = 8;
    int32 num_buddy_hunger_points = 9;
}

// ref: Holoholo.Rpc.FoodValue
message FoodValue {
    float motivation_increase = 1;
    int32 cp_increase = 2;
    Item food_item = 3;
}

// ref: Holoholo.Rpc.FormProto
message FormProto {
    PokemonDisplayProto.Form form = 1;
    int32 asset_bundle_value = 2;
    string asset_bundle_suffix = 3;
}

// ref: Holoholo.Rpc.FormSettingsProto
message FormSettingsProto {
    HoloPokemonId pokemon = 1;
    repeated FormProto forms = 2;
}

// ref: Holoholo.Rpc.FortDeployOutProto
message FortDeployOutProto {
    // ref: Holoholo.Rpc.FortDeployOutProto/Types/Result
    enum Result {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        ERROR_ALREADY_HAS_POKEMON_ON_FORT = 2;
        ERROR_OPPOSING_TEAM_OWNS_FORT = 3;
        ERROR_FORT_IS_FULL = 4;
        ERROR_NOT_IN_RANGE = 5;
        ERROR_PLAYER_HAS_NO_TEAM = 6;
        ERROR_POKEMON_NOT_FULL_HP = 7;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 8;
        ERROR_POKEMON_IS_BUDDY = 9;
        ERROR_FORT_DEPLOY_LOCKOUT = 10;
        ERROR_PLAYER_HAS_NO_NICKNAME = 11;
        ERROR_POI_INACCESSIBLE = 12;
        ERROR_LEGENDARY_POKEMON = 13;
        ERROR_INVALID_POKEMON = 14;
    }

    Result result = 1;
    FortDetailsOutProto fort_details_out_proto = 2;
    PokemonProto egg_pokemon = 3;
    GymStateProto gym_state_proto = 4;
}

// ref: Holoholo.Rpc.FortDeployProto
message FortDeployProto {
    string fort_id = 1;
    fixed64 pokemon_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

// ref: Holoholo.Rpc.FortDetailsOutProto
message FortDetailsOutProto {
    string id = 1;
    int32 team = 2;
    repeated PokemonProto pokemon = 3;
    string name = 4;
    repeated string image_url = 5;
    int32 fp = 6;
    int32 stamina = 7;
    int32 max_stamina = 8;
    FortType fort_type = 9;
    double latitude = 10;
    double longitude = 11;
    string description = 12;
    repeated ClientFortModifierProto modifier = 13;
    bool close_soon = 14;
    string checkin_image_url = 15;
    EventInfoProto event_info = 16;
    repeated string promo_description = 17;
    string call_to_action_link = 18;
    SponsoredDetailsProto sponsored_details = 19;
}

// ref: Holoholo.Rpc.FortDetailsProto
message FortDetailsProto {
    string id = 1;
    double latitude = 2;
    double longitude = 3;
}

// ref: Holoholo.Rpc.FortModifierAttributesProto
message FortModifierAttributesProto {
    int32 modifier_lifetime_seconds = 1;
    int32 troy_disk_num_pokemon_spawned = 2;
}

// ref: Holoholo.Rpc.FortRecallOutProto
message FortRecallOutProto {
    // ref: Holoholo.Rpc.FortRecallOutProto/Types/Result
    enum Result {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
        ERROR_POKEMON_NOT_ON_FORT = 3;
        ERROR_NO_PLAYER = 4;
    }

    Result result = 1;
    FortDetailsOutProto fort_details_out_proto = 2;
}

// ref: Holoholo.Rpc.FortRecallProto
message FortRecallProto {
    string fort_id = 1;
    fixed64 pokemon_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

// ref: Holoholo.Rpc.FortRenderingType
message FortRenderingType {
    // ref: Holoholo.Rpc.FortRenderingType/Types/RenderingType
    enum RenderingType {
        DEFAULT = 0;
        INTERNAL_TEST = 1;
    }

}

// ref: Holoholo.Rpc.FortSearchLogEntry
message FortSearchLogEntry {
    // ref: Holoholo.Rpc.FortSearchLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string fort_id = 2;
    repeated ItemProto items = 3;
    int32 eggs = 4;
    repeated PokemonProto pokemon_eggs = 5;
    FortType fort_type = 6;
    repeated ItemProto awarded_items = 7;
    repeated ItemProto bonus_items = 8;
    repeated ItemProto team_bonus_items = 9;
    repeated GiftBoxProto gift_boxes = 10;
}

// ref: Holoholo.Rpc.FortSearchOutProto
message FortSearchOutProto {
    // ref: Holoholo.Rpc.FortSearchOutProto/Types/Result
    enum Result {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        OUT_OF_RANGE = 2;
        IN_COOLDOWN_PERIOD = 3;
        INVENTORY_FULL = 4;
        EXCEEDED_DAILY_LIMIT = 5;
        POI_INACCESSIBLE = 6;
    }

    Result result = 1;
    repeated AwardItemProto items = 2;
    int32 gems_awarded = 3;
    PokemonProto egg_pokemon = 4;
    int32 xp_awarded = 5;
    int64 cooldown_complete = 6;
    int32 chain_hack_sequence_number = 7;
    AwardedGymBadge awarded_gym_badge = 8;
    LootProto loot = 9;
    LootProto bonus_loot = 10;
    int32 raid_tickets = 11;
    LootProto team_bonus_loot = 12;
    string fort_id = 13;
    ClientQuestProto challenge_quest = 14;
    GiftBoxProto gift_box = 15;
}

// ref: Holoholo.Rpc.FortSearchProto
message FortSearchProto {
    string id = 1;
    double player_lat_degrees = 2;
    double player_lng_degrees = 3;
    double fort_lat_degrees = 4;
    double fort_lng_degrees = 5;
}

// ref: Holoholo.Rpc.FortSettingsProto
message FortSettingsProto {
    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;
    bool disable_gyms = 7;
    int32 max_same_pokemon_at_fort = 8;
    int32 max_player_total_deployed_pokemon = 9;
    bool enable_hyperlinks_in_poi_descriptions = 10;
    bool enable_right_to_left_text_display = 11;
    bool enable_sponsored_poi_decorators = 12;
    double remote_interaction_range_meters = 13;
}

// ref: Holoholo.Rpc.FortSponsor
message FortSponsor {
    // ref: Holoholo.Rpc.FortSponsor/Types/Sponsor
    enum Sponsor {
        UNSET = 0;
        MCDONALDS = 1;
        POKEMON_STORE = 2;
        TOHO = 3;
        SOFTBANK = 4;
        GLOBE = 5;
        SPATULA = 6;
        THERMOMETER = 7;
        KNIFE = 8;
        GRILL = 9;
        SMOKER = 10;
        PAN = 11;
        BBQ = 12;
        FRYER = 13;
        STEAMER = 14;
        HOOD = 15;
        SLOWCOOKER = 16;
        MIXER = 17;
        SCOOPER = 18;
        MUFFINTIN = 19;
        SALAMANDER = 20;
        PLANCHA = 21;
        NIA_OPS = 22;
        WHISK = 23;
    }

}

// ref: Holoholo.Rpc.FrameRate
message FrameRate {
    PlatformMetricData sampled_frame_rate = 1;
}

// ref: Holoholo.Rpc.FriendshipDataProto
message FriendshipDataProto {
    FriendshipLevelDataProto friendship_level_data = 1;
    repeated GiftBoxDetailsProto giftbox_details = 2;
    string codename = 3;
    string nickname = 4;
    int64 open_trade_expire_ms = 5;
    bool is_lucky = 6;
    int32 lucky_count = 7;
}

// ref: Holoholo.Rpc.FriendshipLevelDataProto
message FriendshipLevelDataProto {
    int64 bucket = 1;
    int32 points_earned_today = 2;
    FriendshipLevelMilestone awarded_friendship_milestone = 3;
    FriendshipLevelMilestone current_friendship_milestone = 4;
    double next_friendship_milestone_progress_percentage = 5;
    int32 points_toward_next_milestone = 6;
}

// ref: Holoholo.Rpc.FriendshipLevelMilestoneSettingsProto
message FriendshipLevelMilestoneSettingsProto {
    // ref: Holoholo.Rpc.FriendshipLevelMilestoneSettingsProto/Types/PokemonTradingType
    enum PokemonTradingType {
        UNSET = 0;
        REGULAR_IN_POKEDEX = 1;
        SPECIAL_IN_POKEDEX = 2;
        REGULAR_NON_POKEDEX = 3;
        REGIONAL_NON_POKEDEX = 4;
        FORM_NON_POKEDEX = 5;
        LEGENDARY_NON_POKEDEX = 6;
        SHINY_NON_POKEDEX = 7;
    }

    int32 min_points_to_reach = 1;
    int32 milestone_xp_reward = 2;
    float attack_bonus_percentage = 3;
    int32 raid_ball_bonus = 4;
    repeated PokemonTradingType unlocked_trading = 5;
    float trading_discount = 6;
}

// ref: Holoholo.Rpc.FriendshipMilestoneRewardNotificationProto
message FriendshipMilestoneRewardNotificationProto {
    string friend_id = 1;
    string friend_codename = 2;
    int32 friendship_milestone_level = 3;
    int64 xp_reward = 4;
}

// ref: Holoholo.Rpc.FriendshipMilestoneRewardProto
message FriendshipMilestoneRewardProto {
    string friend_id = 1;
    FriendshipLevelMilestone friendship_milestone = 2;
}

// ref: Holoholo.Rpc.GameMasterClientTemplateProto
message GameMasterClientTemplateProto {
    string template_id = 1;
    PokemonSettingsProto pokemon = 2;
    ItemSettingsProto item = 3;
    MoveSettingsProto move = 4;
    MoveSequenceSettingsProto move_sequence = 5;
    TypeEffectiveSettingsProto type_effective = 8;
    BadgeSettingsProto badge = 10;
    CameraSettingsProto camera = 11;
    PlayerLevelSettingsProto player_level = 12;
    GymLevelSettingsProto gym_level = 13;
    GymBattleSettingsProto battle_settings = 14;
    EncounterSettingsProto encounter_settings = 15;
    IapItemDisplayProto iap_item_display = 16;
    IapSettingsProto iap_settings = 17;
    PokemonUpgradeSettingsProto pokemon_upgrades = 18;
    EquippedBadgeSettingsProto equipped_badges = 19;
    QuestSettingsProto quest_settings = 20;
    AvatarCustomizationProto avatar_customization = 21;
    FormSettingsProto form_settings = 22;
    ClientGenderSettingsProto gender_settings = 23;
    GymBadgeGmtSettingsProto gym_badge_settings = 24;
    WeatherAffinityProto weather_affinities = 25;
    WeatherBonusProto weather_bonus_settings = 26;
    PokemonScaleSettingProto pokemon_scale_settings = 27;
    IapItemCategoryDisplayProto iap_category_display = 28;
    BelugaPokemonWhitelist beluga_pokemon_whitelist = 29;
    OnboardingSettingsProto onboarding_settings = 30;
    FriendshipLevelMilestoneSettingsProto friendship_milestone_settings = 31;
    LuckyPokemonSettingsProto lucky_pokemon_settings = 32;
    CombatSettingsProto combat_settings = 33;
    CombatLeagueSettingsProto combat_league_settings = 34;
    CombatLeagueProto combat_league = 35;
    ExRaidSettingsProto ex_raid_settings = 36;
    CombatMoveSettingsProto combat_move = 37;
    BackgroundModeSettingsProto background_mode_settings = 38;
    CombatStatStageSettingsProto combat_stat_stage_settings = 39;
    CombatNpcTrainerProto combat_npc_trainer = 40;
    CombatNpcPersonalityProto combat_npc_personality = 41;
    OnboardingV2SettingsProto onboarding_v2_settings = 42;
    PartyRecommendationSettingsProto party_recommendation_settings = 43;
    SmeargleMovesSettingsProto smeargle_moves_settings = 44;
    PokecoinPurchaseDisplayGmtProto pokecoin_purchase_display_gmt = 45;
    AdventureSyncV2GmtProto adventure_sync_v2_gmt = 46;
    LoadingScreenProto loading_screen_settings = 47;
    InvasionNpcDisplaySettingsProto invasion_npc_display_settings = 48;
    CombatCompetitiveSeasonSettingsProto combat_competitive_season_settings = 49;
    CombatRankingSettingsProto combat_ranking_proto_settings = 50;
    CombatTypeProto combat_type = 51;
    BuddyLevelSettings buddy_level_settings = 52;
    BuddyActivityCategorySettings buddy_activity_category_settings = 53;
    BuddyActivitySettings buddy_activity_settings = 54;
    BuddySwapSettings buddy_swap_settings = 56;
    VsSeekerClientSettingsProto vs_seeker_client_settings = 58;
    BuddyEncounterCameoSettings buddy_encounter_cameo_settings = 59;
    LimitedPurchaseSkuSettingsProto limited_purchase_sku_settings = 60;
    BuddyEmotionLevelSettings buddy_emotion_level_settings = 61;
    InvasionAvailabilitySettingsProto pokestop_invasion_availability_settings = 62;
    BuddyInteractionSettings buddy_interaction_settings = 63;
    VsSeekerLootProto vs_seeker_loot_proto = 64;
    VsSeekerPokemonRewardsProto vs_seeker_pokemon_rewards = 65;
    BattleHubOrderSettings battle_hub_order_settings = 66;
    BattleHubBadgeSettings battle_hub_badge_settings = 67;
    MapBuddySettingsProto map_buddy_settings = 68;
    BuddyWalkSettings buddy_walk_settings = 69;
    PlatypusRolloutSettingsProto platypus_rollout_settings = 70;
    BuddyHungerSettings buddy_hunger_settings = 72;
    ProjectVacationProto project_vacation = 73;
    AvatarGroupOrderSettingsProto avatar_group_order_settings = 76;
    MonodepthSettingsProto monodepth_settings = 78;
    RaidClientSettingsProto raid_settings_proto = 81;
}

// ref: Holoholo.Rpc.GenerateCombatChallengeIdOutProto
message GenerateCombatChallengeIdOutProto {
    // ref: Holoholo.Rpc.GenerateCombatChallengeIdOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 2;
        ERROR_ACCESS_DENIED = 3;
    }

    Result result = 1;
    string challenge_id = 2;
}

// ref: Holoholo.Rpc.GenerateCombatChallengeIdProto
message GenerateCombatChallengeIdProto {
}

// ref: Holoholo.Rpc.GenericClickTelemetry
message GenericClickTelemetry {
    GenericClickTelemetryIds generic_click_id = 1;
}

// ref: Holoholo.Rpc.GetActionLogRequest
message GetActionLogRequest {
}

// ref: Holoholo.Rpc.GetActionLogResponse
message GetActionLogResponse {
    // ref: Holoholo.Rpc.GetActionLogResponse/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    repeated ActionLogEntry log = 2;
}

// ref: Holoholo.Rpc.GetBuddyHistoryOutProto
message GetBuddyHistoryOutProto {
    // ref: Holoholo.Rpc.GetBuddyHistoryOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR = 2;
    }

    Result result = 1;
    repeated BuddyHistoryData buddy_history = 2;
}

// ref: Holoholo.Rpc.GetBuddyHistoryProto
message GetBuddyHistoryProto {
}

// ref: Holoholo.Rpc.GetBuddyWalkedOutProto
message GetBuddyWalkedOutProto {
    bool success = 1;
    HoloPokemonFamilyId family_candy_id = 2;
    int32 candy_earned_count = 3;
    double km_remaining = 4;
    double last_km_awarded = 5;
}

// ref: Holoholo.Rpc.GetBuddyWalkedProto
message GetBuddyWalkedProto {
}

// ref: Holoholo.Rpc.GetCombatChallengeOutProto
message GetCombatChallengeOutProto {
    // ref: Holoholo.Rpc.GetCombatChallengeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_CHALLENGE_NOT_FOUND = 2;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
}

// ref: Holoholo.Rpc.GetCombatChallengeProto
message GetCombatChallengeProto {
    string challenge_id = 1;
}

// ref: Holoholo.Rpc.GetCombatPlayerProfileOutProto
message GetCombatPlayerProfileOutProto {
    // ref: Holoholo.Rpc.GetCombatPlayerProfileOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_NOT_FOUND = 2;
        ERROR_ACCESS_DENIED = 3;
    }

    Result result = 1;
    CombatPlayerProfileProto profile = 2;
}

// ref: Holoholo.Rpc.GetCombatPlayerProfileProto
message GetCombatPlayerProfileProto {
    string player_id = 1;
}

// ref: Holoholo.Rpc.GetCombatResultsOutProto
message GetCombatResultsOutProto {
    // ref: Holoholo.Rpc.GetCombatResultsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_COMBAT_STATE = 2;
        ERROR_COMBAT_NOT_FOUND = 3;
        ERROR_PLAYER_QUIT = 4;
    }

    // ref: Holoholo.Rpc.GetCombatResultsOutProto/Types/CombatRematchProto
    message CombatRematchProto {
        string combat_rematch_id = 1;
        string combat_league_template_id = 2;
    }

    Result result = 1;
    CombatRewardStatus reward_status = 2;
    LootProto rewards = 3;
    LeveledUpFriendsProto friend_level_up = 4;
    int32 number_rewarded_battles_today = 5;
    CombatPlayerFinishState combat_player_finish_state = 6;
    CombatRematchProto combat_rematch = 7;
}

// ref: Holoholo.Rpc.GetCombatResultsProto
message GetCombatResultsProto {
    string combat_id = 1;
}

// ref: Holoholo.Rpc.GetFitnessRewardsOutProto
message GetFitnessRewardsOutProto {
    // ref: Holoholo.Rpc.GetFitnessRewardsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        REWARDS_ALREADY_COLLECTED = 2;
        ERROR_UNKNOWN = 3;
    }

    Result result = 1;
    LootProto rewards = 2;
}

// ref: Holoholo.Rpc.GetFitnessRewardsProto
message GetFitnessRewardsProto {
}

// ref: Holoholo.Rpc.GetFriendshipRewardsOutProto
message GetFriendshipRewardsOutProto {
    // ref: Holoholo.Rpc.GetFriendshipRewardsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_NOT_FRIENDS = 3;
        ERROR_MILESTONE_ALREADY_AWARDED = 4;
        ERROR_FAILED_TO_UPDATE = 5;
    }

    Result result = 1;
    int64 xp_reward = 2;
    string friend_id = 3;
}

// ref: Holoholo.Rpc.GetFriendshipRewardsProto
message GetFriendshipRewardsProto {
    string friend_id = 1;
}

// ref: Holoholo.Rpc.GetGameMasterClientTemplatesOutProto
message GetGameMasterClientTemplatesOutProto {
    // ref: Holoholo.Rpc.GetGameMasterClientTemplatesOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        PAGE = 2;
        RETRY = 3;
    }

    Result result = 1;
    repeated GameMasterClientTemplateProto items = 2;
    uint64 timestamp = 3;
    int32 page_offset = 4;
}

// ref: Holoholo.Rpc.GetGameMasterClientTemplatesProto
message GetGameMasterClientTemplatesProto {
    bool paginate = 1;
    int32 page_offset = 2;
    uint64 page_timestamp = 3;
}

// ref: Holoholo.Rpc.GetGiftBoxDetailsOutProto
message GetGiftBoxDetailsOutProto {
    // ref: Holoholo.Rpc.GetGiftBoxDetailsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_GIFT_DOES_NOT_EXIST = 3;
        ERROR_INVALID_PLAYER_ID = 4;
        ERROR_FRIEND_NOT_FOUND = 5;
        ERROR_FORT_SEARCH = 6;
    }

    Result result = 1;
    repeated GiftBoxDetailsProto gift_boxes = 2;
}

// ref: Holoholo.Rpc.GetGiftBoxDetailsProto
message GetGiftBoxDetailsProto {
    repeated fixed64 giftbox_id = 1;
    string player_id = 2;
}

// ref: Holoholo.Rpc.GetGymBadgeDetailsOutProto
message GetGymBadgeDetailsOutProto {
    AwardedGymBadge gym_badge = 1;
    GymDefenderProto gym_defender = 2;
    bool success = 3;
}

// ref: Holoholo.Rpc.GetGymBadgeDetailsProto
message GetGymBadgeDetailsProto {
    string fort_id = 1;
    double latitude = 2;
    double longitude = 3;
}

// ref: Holoholo.Rpc.GetGymDetailsOutProto
message GetGymDetailsOutProto {
    // ref: Holoholo.Rpc.GetGymDetailsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
    }

    GymStateProto gym_state = 1;
    string name = 2;
    repeated string url = 3;
    Result result = 4;
    string description = 5;
    repeated string secondary_url = 6;
    string checkin_image_url = 7;
    EventInfoProto event_info = 8;
}

// ref: Holoholo.Rpc.GetGymDetailsProto
message GetGymDetailsProto {
    string gym_id = 1;
    double player_lat_degrees = 2;
    double player_lng_degrees = 3;
    double gym_lat_degrees = 4;
    double gym_lng_degrees = 5;
    string client_version = 6;
}

// ref: Holoholo.Rpc.GetHatchedEggsOutProto
message GetHatchedEggsOutProto {
    bool success = 1;
    repeated fixed64 pokemon_id = 2;
    repeated int32 exp_awarded = 3;
    repeated int32 candy_awarded = 4;
    repeated int32 stardust_awarded = 5;
    repeated float egg_km_walked = 6;
    repeated PokemonProto hatched_pokemon = 7;
    repeated int32 xl_candy_awarded = 8;
}

// ref: Holoholo.Rpc.GetHatchedEggsProto
message GetHatchedEggsProto {
}

// ref: Holoholo.Rpc.GetHoloholoInventoryOutProto
message GetHoloholoInventoryOutProto {
    bool success = 1;
    InventoryDeltaProto inventory_delta = 2;
}

// ref: Holoholo.Rpc.GetHoloholoInventoryProto
message GetHoloholoInventoryProto {
    int64 timestamp_millis = 1;
    repeated Item item_been_seen = 2;
}

// ref: Holoholo.Rpc.GetInboxOutProto
message GetInboxOutProto {
    // ref: Holoholo.Rpc.GetInboxOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
        TIMED_OUT = 3;
    }

    Result result = 1;
    ClientInbox inbox = 2;
}

// ref: Holoholo.Rpc.GetInboxProto
message GetInboxProto {
    bool is_history = 1;
    bool is_reverse = 2;
    int64 not_before_ms = 3;
}

// ref: Holoholo.Rpc.GetIncensePokemonOutProto
message GetIncensePokemonOutProto {
    // ref: Holoholo.Rpc.GetIncensePokemonOutProto/Types/Result
    enum Result {
        INCENSE_ENCOUNTER_UNKNOWN = 0;
        INCENSE_ENCOUNTER_AVAILABLE = 1;
        INCENSE_ENCOUNTER_NOT_AVAILABLE = 2;
    }

    Result result = 1;
    int32 pokemon_type_id = 2;
    double lat = 3;
    double lng = 4;
    string encounter_location = 5;
    fixed64 encounter_id = 6;
    int64 disappear_time_ms = 7;
    PokemonDisplayProto pokemon_display = 8;
}

// ref: Holoholo.Rpc.GetIncensePokemonProto
message GetIncensePokemonProto {
    double player_lat_degrees = 1;
    double player_lng_degrees = 2;
}

// ref: Holoholo.Rpc.GetLocalTimeOutProto
message GetLocalTimeOutProto {
    // ref: Holoholo.Rpc.GetLocalTimeOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    // ref: Holoholo.Rpc.GetLocalTimeOutProto/Types/LocalTimeProto
    message LocalTimeProto {
        int64 timestamp_ms = 1;
        int32 year = 2;
        int32 month = 3;
        int32 day_of_month = 4;
        int32 day_of_week = 5;
        int32 hours = 6;
        int32 minutes = 7;
        int32 seconds = 8;
        int32 milliseconds = 9;
        string timezone_id = 10;
    }

    Status status = 1;
    repeated LocalTimeProto local_times = 2;
}

// ref: Holoholo.Rpc.GetLocalTimeProto
message GetLocalTimeProto {
    repeated int64 timestamp_ms = 1;
}

// ref: Holoholo.Rpc.GetMapObjectsOutProto
message GetMapObjectsOutProto {
    // ref: Holoholo.Rpc.GetMapObjectsOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        LOCATION_UNSET = 2;
        ERROR = 3;
    }

    // ref: Holoholo.Rpc.GetMapObjectsOutProto/Types/TimeOfDay
    enum TimeOfDay {
        NONE = 0;
        DAY = 1;
        NIGHT = 2;
    }

    repeated ClientMapCellProto map_cell = 1;
    Status status = 2;
    TimeOfDay time_of_day = 3;
    repeated ClientWeatherProto client_weather = 4;
}

// ref: Holoholo.Rpc.GetMapObjectsProto
message GetMapObjectsProto {
    repeated uint64 cell_id = 1;
    repeated int64 since_time_ms = 2;
    double player_lat = 3;
    double player_lng = 4;
}

// ref: Holoholo.Rpc.GetMatchmakingStatusOutProto
message GetMatchmakingStatusOutProto {
    // ref: Holoholo.Rpc.GetMatchmakingStatusOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS_OPPONENT_FOUND = 1;
        SUCCESS_QUEUED = 2;
        SUCCESS_NOT_MATCHED_EXPIRED = 3;
        ERROR_PLAYER_NOT_FOUND = 4;
        ERROR_QUEUE_NOT_FOUND = 5;
        ERROR_RETRY_UNSUCCESSFUL = 6;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
    string queue_id = 3;
}

// ref: Holoholo.Rpc.GetMatchmakingStatusProto
message GetMatchmakingStatusProto {
    string queue_id = 1;
}

// ref: Holoholo.Rpc.GetNewQuestsOutProto
message GetNewQuestsOutProto {
    // ref: Holoholo.Rpc.GetNewQuestsOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_DISPLAY = 2;
    }

    Status status = 1;
    repeated ClientQuestProto quests = 2;
    repeated ClientQuestProto version_changed_quests = 3;
}

// ref: Holoholo.Rpc.GetNewQuestsProto
message GetNewQuestsProto {
}

// ref: Holoholo.Rpc.GetNpcCombatRewardsOutProto
message GetNpcCombatRewardsOutProto {
    // ref: Holoholo.Rpc.GetNpcCombatRewardsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALD_NUMBER_ATTACKING_POKEMON_IDS = 2;
    }

    Result result = 1;
    CombatRewardStatus reward_status = 2;
    LootProto rewards = 3;
    int32 number_rewarded_npc_battles_today = 4;
}

// ref: Holoholo.Rpc.GetNpcCombatRewardsProto
message GetNpcCombatRewardsProto {
    string combat_npc_trainer_template_id = 1;
    CombatPlayerFinishState finish_state = 2;
    repeated fixed64 attacking_pokemon_id = 3;
    string combat_id = 4;
}

// ref: Holoholo.Rpc.GetPhotobombOutProto
message GetPhotobombOutProto {
    // ref: Holoholo.Rpc.GetPhotobombOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        PHOTOBOMB_NOT_AVAILABLE = 2;
        ENCOUNTER_ALREADY_COMPLETED = 3;
        ERROR_UNKNOWN = 4;
    }

    Status status = 1;
    HoloPokemonId pokemon_id = 2;
    double lat = 3;
    double lng = 4;
    string encounter_location = 5;
    fixed64 encounter_id = 6;
    int64 disappear_time_ms = 7;
    PokemonDisplayProto pokemon_display = 8;
}

// ref: Holoholo.Rpc.GetPhotobombProto
message GetPhotobombProto {
}

// ref: Holoholo.Rpc.GetPlayerDayOutProto
message GetPlayerDayOutProto {
    // ref: Holoholo.Rpc.GetPlayerDayOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Result result = 1;
    int64 day = 2;
}

// ref: Holoholo.Rpc.GetPlayerDayProto
message GetPlayerDayProto {
}

// ref: Holoholo.Rpc.GetPlayerOutProto
message GetPlayerOutProto {
    bool success = 1;
    ClientPlayerProto player = 2;
    bool banned = 3;
    bool warn = 4;
    bool was_created = 5;
    bool warn_message_acknowledged = 6;
    bool was_suspended = 7;
    bool suspended_message_acknowledged = 8;
    int64 warn_expire_ms = 9;
    repeated int32 user_permission = 10;
}

// ref: Holoholo.Rpc.GetPlayerProto
message GetPlayerProto {
    PlayerLocaleProto player_locale = 1;
    bool prevent_creation = 2;
}

// ref: Holoholo.Rpc.GetQuestDetailsOutProto
message GetQuestDetailsOutProto {
    // ref: Holoholo.Rpc.GetQuestDetailsOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_QUEST_NOT_FOUND = 2;
        ERROR_INVALID_DISPLAY = 3;
    }

    Status status = 1;
    repeated ClientQuestProto quests = 2;
}

// ref: Holoholo.Rpc.GetQuestDetailsProto
message GetQuestDetailsProto {
    repeated string quest_id = 1;
}

// ref: Holoholo.Rpc.GetRaidDetailsOutProto
message GetRaidDetailsOutProto {
    // ref: Holoholo.Rpc.GetRaidDetailsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
        ERROR_RAID_COMPLETED = 3;
        ERROR_RAID_UNAVAILABLE = 4;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 5;
        ERROR_POI_INACCESSIBLE = 6;
    }

    LobbyProto lobby = 1;
    BattleProto raid_battle = 2;
    bool player_can_join_lobby = 3;
    Result result = 4;
    RaidInfoProto raid_info = 5;
    bool ticket_used = 6;
    bool free_ticket_available = 7;
    int32 throws_remaining = 8;
    bool received_rewards = 9;
    int32 num_players_in_lobby = 10;
    int64 server_ms = 11;
    int32 server_instance = 12;
    bool display_high_user_warning = 13;
    int32 num_friend_invites_remaining = 14;
}

// ref: Holoholo.Rpc.GetRaidDetailsProto
message GetRaidDetailsProto {
    int64 raid_seed = 1;
    string gym_id = 2;
    repeated int32 lobby_id = 3;
    double player_lat_degrees = 4;
    double player_lng_degrees = 5;
    double gym_lat_degrees = 6;
    double gym_lng_degrees = 7;
}

// ref: Holoholo.Rpc.GetRemoteConfigVersionsOutProto
message GetRemoteConfigVersionsOutProto {
    // ref: Holoholo.Rpc.GetRemoteConfigVersionsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    uint64 game_master_timestamp = 2;
    uint64 asset_digest_timestamp = 3;
    repeated uint32 experiment_id = 4;
}

// ref: Holoholo.Rpc.GetRemoteConfigVersionsProto
message GetRemoteConfigVersionsProto {
    Platform platform = 1;
    string device_manufacturer = 2;
    string device_model = 3;
    string locale = 4;
    uint32 app_version = 5;
    Store store = 6;
    string carrier = 7;
}

// ref: Holoholo.Rpc.GetServerTimeOutProto
message GetServerTimeOutProto {
    // ref: Holoholo.Rpc.GetServerTimeOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
    }

    Status status = 1;
    int64 server_time_ms = 2;
}

// ref: Holoholo.Rpc.GetServerTimeProto
message GetServerTimeProto {
}

// ref: Holoholo.Rpc.GetTodayViewOutProto
message GetTodayViewOutProto {
    // ref: Holoholo.Rpc.GetTodayViewOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR = 2;
    }

    Status status = 1;
    TodayViewProto today_view = 2;
}

// ref: Holoholo.Rpc.GetTodayViewProto
message GetTodayViewProto {
}

// ref: Holoholo.Rpc.GetTradingOutProto
message GetTradingOutProto {
    // ref: Holoholo.Rpc.GetTradingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_FRIEND_NOT_FOUND = 3;
        ERROR_INVALID_PLAYER_ID = 4;
        ERROR_INVALID_STATE = 5;
        ERROR_STATE_HANDLER = 6;
    }

    Result result = 1;
    TradingProto trading = 2;
}

// ref: Holoholo.Rpc.GetTradingProto
message GetTradingProto {
    string player_id = 1;
}

// ref: Holoholo.Rpc.GetTutorialEggOutProto
message GetTutorialEggOutProto {
    // ref: Holoholo.Rpc.GetTutorialEggOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_ALREADY_HAS_TUTORIAL_EGG = 2;
        ERROR_FAILED_TO_ADD_EGG = 3;
        ERROR_NOT_V2_FLOW = 4;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.GetTutorialEggProto
message GetTutorialEggProto {
}

// ref: Holoholo.Rpc.GetVsSeekerStatusOutProto
message GetVsSeekerStatusOutProto {
    // ref: Holoholo.Rpc.GetVsSeekerStatusOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS_FULLY_CHARGED = 1;
        SUCCESS_NOT_FULLY_CHARGED_YET = 2;
        ERROR_VS_SEEKER_NOT_FOUND = 3;
        ERROR_VS_SEEKER_NEVER_STARTED_CHARGING = 4;
    }

    Result result = 1;
    VsSeekerAttributesProto vs_seeker = 2;
    bool season_ended = 3;
    CombatLogProto combat_log = 4;
}

// ref: Holoholo.Rpc.GetVsSeekerStatusProto
message GetVsSeekerStatusProto {
}

// ref: Holoholo.Rpc.GetWebTokenOutProto
message GetWebTokenOutProto {
    // ref: Holoholo.Rpc.GetWebTokenOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Status status = 1;
    string access_token = 2;
}

// ref: Holoholo.Rpc.GetWebTokenProto
message GetWebTokenProto {
    string client_id = 1;
}

// ref: Holoholo.Rpc.GiftBoxDetailsProto
message GiftBoxDetailsProto {
    fixed64 giftbox_id = 1;
    string sender_id = 2;
    string sender_codename = 3;
    string receiver_id = 4;
    string receiver_codename = 5;
    string fort_id = 6;
    string fort_name = 7;
    double fort_lat = 8;
    double fort_lng = 9;
    string fort_image_url = 10;
    int64 creation_timestamp = 11;
    int64 sent_timestamp = 12;
    fixed64 delivery_pokemon_id = 13;
    bool is_sponsored = 14;
}

// ref: Holoholo.Rpc.GiftBoxesProto
message GiftBoxesProto {
    repeated GiftBoxProto gifts = 1;
}

// ref: Holoholo.Rpc.GiftBoxProto
message GiftBoxProto {
    fixed64 giftbox_id = 1;
    string sender_id = 2;
    string receiver_id = 3;
    string fort_id = 4;
    double fort_lat = 5;
    double fort_lng = 6;
    int64 creation_timestamp = 7;
    int64 sent_timestamp = 8;
    int64 sent_bucket = 9;
}

// ref: Holoholo.Rpc.GlobalEventTicketAttributesProto
message GlobalEventTicketAttributesProto {
    HoloBadgeType event_badge = 1;
    int64 grant_badge_before_event_start_ms = 2;
    string event_start_time = 3;
    string event_end_time = 4;
    string item_bag_description_key = 6;
    int64 client_event_start_time_utc_ms = 100;
    int64 client_event_end_time_utc_ms = 101;
}

// ref: Holoholo.Rpc.GlobalSettingsProto
message GlobalSettingsProto {
    FortSettingsProto fort_settings = 2;
    MapSettingsProto map_settings = 3;
    LevelSettingsProto level_settings = 4;
    InventorySettingsProto inventory_settings = 5;
    string minimum_client_version = 6;
    GpsSettingsProto gps_settings = 7;
    FestivalSettingsProto festival_settings = 8;
    EventSettingsProto event_settings = 9;
    int32 max_pokemon_types = 10;
    SfidaGlobalSettingsProto sfida_settings = 11;
    NewsSettingProto news_settings = 12;
    TranslationSettingsProto translation_settings = 13;
    PasscodeSettingsProto passcode_settings = 14;
    NotificationSettingsProto notification_settings = 15;
    repeated string client_app_blacklist = 16;
    ClientPerformanceSettingsProto client_perf_settings = 17;
    NewsGlobalSettingsProto news_global_settings = 18;
    QuestGlobalSettingsProto quest_global_settings = 19;
    BelugaGlobalSettingsProto beluga_global_settings = 20;
    TelemetryGlobalSettingsProto telemetry_global_settings = 21;
    LoginSettingsProto login_settings = 22;
    SocialClientSettingsProto social_settings = 23;
    TradingGlobalSettingsProto trading_global_settings = 24;
    repeated HoloPokemonId additional_allowed_pokemon_ids = 25;
    UpsightLoggingSettingsProto upsight_logging_settings = 26;
    CombatGlobalSettingsProto combat_global_settings = 27;
    ThirdMoveGlobalSettingsProto third_move_settings = 28;
    CombatChallengeGlobalSettingsProto combat_challenge_global_settings = 29;
    BackgroundModeGlobalSettingsProto bgmode_global_settings = 30;
    ProbeSettingsProto probe_settings = 31;
    PokecoinPurchaseDisplaySettingsProto purchased_settings = 32;
    HelpshiftSettingsProto helpshift_settings = 33;
    ArPhotoGlobalSettings ar_photo_settings = 34;
    PoiGlobalSettingsProto poi_settings = 35;
    PokemonGlobalSettingsProto pokemon_settings = 36;
    AvatarGlobalSettingsProto avatar_settings = 37;
    EvolutionV2SettingsProto evolution_v2_settings = 38;
    IncidentGlobalSettingsProto incident_settings = 39;
    KoalaSettingsProto koala_settings = 40;
    KangarooSettingsProto kangaroo_settings = 41;
    BuddyGlobalSettingsProto buddy_settings = 43;
    InputSettingsProto input_settings = 44;
    GmtSettingsProto gmt_settings = 45;
    bool use_local_time_action = 47;
    ArdkConfigSettingsProto ardk_config_settings = 48;
    EnabledPokemonSettingsProto enabled_pokemon = 49;
    PokemonBulkUpgradeSettingsProto pokemon_bulk_upgrade_settings = 50;
    PlannedDowntimeSettingsProto planned_downtime_settings = 51;
    ArMappingSettingsProto ar_mapping_settings = 52;
    RaidInviteFriendsSettingsProto raid_invite_friends_settings = 53;
}

// ref: Holoholo.Rpc.GmtSettingsProto
message GmtSettingsProto {
    bool enable_gmtdownload_v2 = 1;
}

// ref: Holoholo.Rpc.GpsSettingsProto
message GpsSettingsProto {
    float driving_warning_speed_meters_per_second = 1;
    float driving_warning_cooldown_minutes = 2;
    float driving_speed_sample_interval_seconds = 3;
    int32 driving_speed_sample_count = 4;
}

// ref: Holoholo.Rpc.GymBadgeGmtSettingsProto
message GymBadgeGmtSettingsProto {
    repeated int32 target = 1;
    float battle_winning_score_per_defender_cp = 2;
    float gym_defending_score_per_minute = 3;
    int32 berry_feeding_score = 4;
    int32 pokemon_deploy_score = 5;
    int32 raid_battle_winning_score = 6;
    int32 lose_all_battles_score = 7;
}

// ref: Holoholo.Rpc.GymBadgeStats
message GymBadgeStats {
    uint64 total_time_defended_ms = 1;
    uint32 num_battles_won = 2;
    uint32 num_berries_fed = 3;
    uint32 num_deploys = 4;
    uint32 num_battles_lost = 5;
    repeated GymBattleProto gym_battles = 15;
}

// ref: Holoholo.Rpc.GymBattleAttackOutProto
message GymBattleAttackOutProto {
    // ref: Holoholo.Rpc.GymBattleAttackOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_ATTACK_ACTIONS = 2;
        ERROR_NOT_IN_RANGE = 3;
        ERROR_WRONG_BATTLE_TYPE = 4;
        ERROR_RAID_ACTIVE = 5;
    }

    Result result = 1;
    BattleUpdateProto battle_update = 2;
    AwardedGymBadge gym_badge = 3;
}

// ref: Holoholo.Rpc.GymBattleAttackProto
message GymBattleAttackProto {
    string gym_id = 1;
    string battle_id = 2;
    repeated BattleActionProto attacker_actions = 3;
    BattleActionProto last_retrieved_action = 4;
    double player_lat_degrees = 5;
    double player_lng_degrees = 6;
    int64 timestamp_ms = 7;
}

// ref: Holoholo.Rpc.GymBattleProto
message GymBattleProto {
    string battle_id = 1;
    int64 completed_ms = 2;
    bool incremented_gym_battle_friends = 3;
}

// ref: Holoholo.Rpc.GymBattleSettingsProto
message GymBattleSettingsProto {
    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;
    float dodge_damage_reduction_percent = 15;
    int32 minimum_raid_player_level = 16;
    float shadow_pokemon_attack_bonus_multiplier = 17;
    float shadow_pokemon_defense_bonus_multiplier = 18;
    float purified_pokemon_attack_multiplier_vs_shadow = 19;
}

// ref: Holoholo.Rpc.GymDefenderProto
message GymDefenderProto {
    MotivatedPokemonProto motivated_pokemon = 1;
    DeploymentTotalsProto deployment_totals = 2;
    PlayerPublicProfileProto trainer_public_profile = 3;
}

// ref: Holoholo.Rpc.GymDeployOutProto
message GymDeployOutProto {
    // ref: Holoholo.Rpc.GymDeployOutProto/Types/Result
    enum Result {
        NO_RESULT_SET = 0;
        SUCCESS = 1;
        ERROR_ALREADY_HAS_POKEMON_ON_FORT = 2;
        ERROR_OPPOSING_TEAM_OWNS_FORT = 3;
        ERROR_FORT_IS_FULL = 4;
        ERROR_NOT_IN_RANGE = 5;
        ERROR_PLAYER_HAS_NO_TEAM = 6;
        ERROR_POKEMON_NOT_FULL_HP = 7;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 8;
        ERROR_POKEMON_IS_BUDDY = 9;
        ERROR_FORT_DEPLOY_LOCKOUT = 10;
        ERROR_PLAYER_HAS_NO_NICKNAME = 11;
        ERROR_POI_INACCESSIBLE = 12;
        ERROR_NOT_A_POKEMON = 13;
        ERROR_TOO_MANY_OF_SAME_KIND = 14;
        ERROR_TOO_MANY_DEPLOYED = 15;
        ERROR_TEAM_DEPLOY_LOCKOUT = 16;
        ERROR_LEGENDARY_POKEMON = 17;
        ERROR_INVALID_POKEMON = 18;
        ERROR_RAID_ACTIVE = 19;
    }

    Result result = 1;
    GymStatusAndDefendersProto gym_status_and_defenders = 2;
    AwardedGymBadge awarded_gym_badge = 3;
    int64 cooldown_duration_millis = 4;
}

// ref: Holoholo.Rpc.GymDeployProto
message GymDeployProto {
    string fort_id = 1;
    fixed64 pokemon_id = 2;
    double player_lat_degrees = 3;
    double player_lng_degrees = 4;
}

// ref: Holoholo.Rpc.GymDisplayProto
message GymDisplayProto {
    repeated GymEventProto gym_event = 1;
    int32 total_gym_cp = 2;
    double lowest_pokemon_motivation = 3;
    int32 slots_available = 4;
    int64 occupied_millis = 5;
}

// ref: Holoholo.Rpc.GymEventProto
message GymEventProto {
    // ref: Holoholo.Rpc.GymEventProto/Types/Event
    enum Event {
        UNKNOWN = 0;
        POKEMON_FED = 1;
        POKEMON_DEPLOYED = 2;
        POKEMON_RETURNED = 3;
        BATTLE_WON = 4;
        BATTLE_LOSS = 5;
        RAID_STARTED = 6;
        RAID_ENDED = 7;
        GYM_NEUTRALIZED = 8;
    }

    string trainer = 1;
    int64 timestamp_ms = 2;
    Event event = 3;
    int32 pokedex_id = 4;
    fixed64 pokemon_id = 5;
}

// ref: Holoholo.Rpc.GymFeedPokemonOutProto
message GymFeedPokemonOutProto {
    // ref: Holoholo.Rpc.GymFeedPokemonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_CANNOT_USE = 2;
        ERROR_NOT_IN_RANGE = 3;
        ERROR_POKEMON_NOT_THERE = 4;
        ERROR_POKEMON_FULL = 5;
        ERROR_NO_BERRIES_LEFT = 6;
        ERROR_WRONG_TEAM = 7;
        ERROR_WRONG_COUNT = 8;
        ERROR_TOO_FAST = 9;
        ERROR_TOO_FREQUENT = 10;
        ERROR_GYM_BUSY = 11;
        ERROR_RAID_ACTIVE = 12;
        ERROR_GYM_CLOSED = 13;
    }

    Result result = 1;
    GymStatusAndDefendersProto gym_status_and_defenders = 2;
    AwardedGymBadge gym_badge = 3;
    int32 stardust_awarded = 4;
    int32 xp_awarded = 5;
    int32 num_candy_awarded = 6;
    HoloPokemonFamilyId candy_family_id = 7;
    int64 cooldown_complete = 8;
}

// ref: Holoholo.Rpc.GymFeedPokemonProto
message GymFeedPokemonProto {
    Item item = 1;
    int32 starting_quantity = 2;
    string gym_id = 3;
    fixed64 pokemon_id = 4;
    double player_lat_degrees = 5;
    double player_lng_degrees = 6;
}

// ref: Holoholo.Rpc.GymGetInfoOutProto
message GymGetInfoOutProto {
    // ref: Holoholo.Rpc.GymGetInfoOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
        ERROR_GYM_DISABLED = 3;
    }

    GymStatusAndDefendersProto gym_status_and_defenders = 1;
    string name = 2;
    string url = 3;
    Result result = 4;
    string description = 5;
    string secondary_url = 6;
    AwardedGymBadge awarded_gym_badge = 7;
    string checkin_image_url = 8;
    EventInfoProto event_info = 9;
    DisplayWeatherProto display_weather = 10;
    repeated string promo_image = 11;
    repeated string promo_description = 12;
    string call_to_action_link = 13;
    int64 server_ms = 14;
    SponsoredDetailsProto sponsored_details = 15;
}

// ref: Holoholo.Rpc.GymGetInfoProto
message GymGetInfoProto {
    string gym_id = 1;
    double player_lat_degrees = 2;
    double player_lng_degrees = 3;
    double gym_lat_degrees = 4;
    double gym_lng_degrees = 5;
}

// ref: Holoholo.Rpc.GymLevelSettingsProto
message GymLevelSettingsProto {
    repeated int32 required_exp = 1;
    repeated int32 leader_slots = 2;
    repeated int32 trainer_slots = 3;
    repeated int32 search_roll_bonus = 4;
}

// ref: Holoholo.Rpc.GymMembershipProto
message GymMembershipProto {
    PokemonProto pokemon = 1;
    PlayerPublicProfileProto trainer_public_profile = 2;
    PokemonProto training_pokemon = 3;
}

// ref: Holoholo.Rpc.GymPokemonSectionProto
message GymPokemonSectionProto {
    // ref: Holoholo.Rpc.GymPokemonSectionProto/Types/GymPokemonProto
    message GymPokemonProto {
        int64 pokemon_id = 1;
        float motivation = 2;
        int64 deployed_timestamp_ms = 3;
        int32 coins_returned = 4;
    }

    repeated GymPokemonProto pokemon_in_gym = 1;
    repeated GymPokemonProto pokemon_returned_today = 2;
}

// ref: Holoholo.Rpc.GymStartSessionOutProto
message GymStartSessionOutProto {
    // ref: Holoholo.Rpc.GymStartSessionOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_GYM_NOT_FOUND = 2;
        ERROR_GYM_NEUTRAL = 3;
        ERROR_GYM_WRONG_TEAM = 4;
        ERROR_GYM_EMPTY = 5;
        ERROR_INVALID_DEFENDER = 6;
        ERROR_TRAINING_INVALID_ATTACKER_COUNT = 7;
        ERROR_ALL_POKEMON_FAINTED = 8;
        ERROR_TOO_MANY_BATTLES = 9;
        ERROR_TOO_MANY_PLAYERS = 10;
        ERROR_GYM_BATTLE_LOCKOUT = 11;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 12;
        ERROR_NOT_IN_RANGE = 13;
        ERROR_POI_INACCESSIBLE = 14;
        ERROR_RAID_ACTIVE = 15;
    }

    Result result = 1;
    BattleProto battle = 2;
}

// ref: Holoholo.Rpc.GymStartSessionProto
message GymStartSessionProto {
    string gym_id = 1;
    repeated fixed64 attacking_pokemon_id = 2;
    fixed64 defending_pokemon_id = 3;
    double player_lat_degrees = 4;
    double player_lng_degrees = 5;
}

// ref: Holoholo.Rpc.GymStateProto
message GymStateProto {
    PokemonFortProto fort_map_data = 1;
    repeated GymMembershipProto gym_membership = 2;
    bool deploy_lockout = 3;
}

// ref: Holoholo.Rpc.GymStatusAndDefendersProto
message GymStatusAndDefendersProto {
    PokemonFortProto pokemon_fort_proto = 1;
    repeated GymDefenderProto gym_defender = 2;
}

// ref: Holoholo.Rpc.HelpshiftSettingsProto
message HelpshiftSettingsProto {
    uint32 min_player_level = 1;
    uint32 default_player_level = 2;
}

// ref: Holoholo.Rpc.HoloFitnessReportProto
message HoloFitnessReportProto {
    int32 num_eggs_hatched = 1;
    int32 num_buddy_candy_earned = 2;
    double distance_walked_km = 3;
    int64 week_bucket = 4;
}

// ref: Holoholo.Rpc.HoloholoClientTelemetryOmniProto
message HoloholoClientTelemetryOmniProto {
    // ref: Holoholo.Rpc.HoloholoClientTelemetryOmniProto/TelemetryDataOneofCase
    //oneof TelemetryData {
        //none = 0;
        //boot_time = 1;
        //frame_rate = 2;
        //generic_click_telemetry = 3;
        //map_events_telemetry = 4;
        //spin_pokestop_telemetry = 5;
        //profile_page_telemetry = 6;
        //shopping_page_telemetry = 7;
        //encounter_pokemon_telemetry = 8;
        //catch_pokemon_telemetry = 9;
        //deploy_pokemon_telemetry = 10;
        //feed_pokemon_telemetry = 11;
        //evolve_pokemon_telemetry = 12;
        //release_pokemon_telemetry = 13;
        //nickname_pokemon_telemetry = 14;
        //news_page_telemetry = 15;
        //item_telemetry = 16;
        //battle_party_telemetry = 17;
        //passcode_redeem_telemetry = 18;
        //link_login_telemetry = 19;
        //raid_telemetry = 20;
        //push_notification_telemetry = 21;
        //avatar_customization_telemetry = 22;
        //read_point_of_interest_description_telemetry = 23;
        //web_telemetry = 24;
        //change_ar_telemetry = 25;
        //weather_detail_click_telemetry = 26;
        //user_issue_weather_report = 27;
        //pokemon_inventory_telemetry = 28;
        //social_telemetry = 29;
        //check_encounter_info_telemetry = 30;
        //pokemon_go_plus_telemetry = 31;
        //rpc_timing_telemetry = 32;
        //social_gift_count_telemetry = 33;
        //asset_bundle_telemetry = 34;
        //asset_poi_download_telemetry = 35;
        //asset_stream_download_telemetry = 36;
        //asset_stream_cache_culled_telemetry = 37;
        //rpc_socket_timing_telemetry = 38;
        //permissions_flow = 39;
        //device_service_toggle = 40;
        //boot_telemetry = 41;
        //user_attributes = 42;
        //onboarding_telemetry = 43;
        //login_action_telemetry = 44;
        //ar_photo_session_telemetry = 45;
        //invasion_telemetry = 46;
        //combat_minigame_telemetry = 47;
        //leave_point_of_interest_telemetry = 48;
        //view_point_of_interest_image_telemetry = 49;
        //combat_hub_entrance_telemetry = 50;
        //leave_interaction_range_telemetry = 51;
        //shopping_page_click_telemetry = 52;
        //shopping_page_scroll_telemetry = 53;
        //device_specifications_telemetry = 54;
        //screen_resolution_telemetry = 55;
        //ar_buddy_multiplayer_session_telemetry = 56;
        //buddy_multiplayer_connection_failed_telemetry = 57;
        //buddy_multiplayer_connection_succeeded_telemetry = 58;
        //buddy_multiplayer_time_to_get_session_telemetry = 59;
        //player_hud_notification_click_telemetry = 60;
        //monodepth_download_telemetry = 61;
        //ar_mapping_telemetry = 62;
        //remote_raid_telemetry = 63;
    //}

    BootTime boot_time = 1;
    FrameRate frame_rate = 2;
    GenericClickTelemetry generic_click_telemetry = 3;
    MapEventsTelemetry map_events_telemetry = 4;
    SpinPokestopTelemetry spin_pokestop_telemetry = 5;
    ProfilePageTelemetry profile_page_telemetry = 6;
    ShoppingPageTelemetry shopping_page_telemetry = 7;
    EncounterPokemonTelemetry encounter_pokemon_telemetry = 8;
    CatchPokemonTelemetry catch_pokemon_telemetry = 9;
    DeployPokemonTelemetry deploy_pokemon_telemetry = 10;
    FeedPokemonTelemetry feed_pokemon_telemetry = 11;
    EvolvePokemonTelemetry evolve_pokemon_telemetry = 12;
    ReleasePokemonTelemetry release_pokemon_telemetry = 13;
    NicknamePokemonTelemetry nickname_pokemon_telemetry = 14;
    NewsPageTelemetry news_page_telemetry = 15;
    ItemTelemetry item_telemetry = 16;
    BattlePartyTelemetry battle_party_telemetry = 17;
    PasscodeRedeemTelemetry passcode_redeem_telemetry = 18;
    LinkLoginTelemetry link_login_telemetry = 19;
    RaidTelemetry raid_telemetry = 20;
    PushNotificationTelemetry push_notification_telemetry = 21;
    AvatarCustomizationTelemetry avatar_customization_telemetry = 22;
    ReadPointOfInterestDescriptionTelemetry read_point_of_interest_description_telemetry = 23;
    WebTelemetry web_telemetry = 24;
    ChangeArTelemetry change_ar_telemetry = 25;
    WeatherDetailClickTelemetry weather_detail_click_telemetry = 26;
    UserIssueWeatherReport user_issue_weather_report = 27;
    PokemonInventoryTelemetry pokemon_inventory_telemetry = 28;
    SocialTelemetry social_telemetry = 29;
    CheckEncounterTrayInfoTelemetry check_encounter_info_telemetry = 30;
    PokemonGoPlusTelemetry pokemon_go_plus_telemetry = 31;
    RpcResponseTelemetry rpc_timing_telemetry = 32;
    SocialGiftCountTelemetry social_gift_count_telemetry = 33;
    AssetBundleDownloadTelemetry asset_bundle_telemetry = 34;
    AssetPoiDownloadTelemetry asset_poi_download_telemetry = 35;
    AssetStreamDownloadTelemetry asset_stream_download_telemetry = 36;
    AssetStreamCacheCulledTelemetry asset_stream_cache_culled_telemetry = 37;
    RpcSocketResponseTelemetry rpc_socket_timing_telemetry = 38;
    PermissionsFlowTelemetry permissions_flow = 39;
    DeviceServiceToggleTelemetry device_service_toggle = 40;
    BootTelemetry boot_telemetry = 41;
    UserAttributesProto user_attributes = 42;
    OnboardingTelemetry onboarding_telemetry = 43;
    LoginActionTelemetry login_action_telemetry = 44;
    ArPhotoSessionProto ar_photo_session_telemetry = 45;
    InvasionTelemetry invasion_telemetry = 46;
    CombatMinigameTelemetry combat_minigame_telemetry = 47;
    LeavePointOfInterestTelemetry leave_point_of_interest_telemetry = 48;
    ViewPointOfInterestImageTelemetry view_point_of_interest_image_telemetry = 49;
    CombatHubEntranceTelemetry combat_hub_entrance_telemetry = 50;
    LeaveInteractionRangeTelemetry leave_interaction_range_telemetry = 51;
    ShoppingPageClickTelemetry shopping_page_click_telemetry = 52;
    ShoppingPageScrollTelemetry shopping_page_scroll_telemetry = 53;
    DeviceSpecificationsTelemetry device_specifications_telemetry = 54;
    ScreenResolutionTelemetry screen_resolution_telemetry = 55;
    ARBuddyMultiplayerSessionTelemetry ar_buddy_multiplayer_session_telemetry = 56;
    BuddyMultiplayerConnectionFailedProto buddy_multiplayer_connection_failed_telemetry = 57;
    BuddyMultiplayerConnectionSucceededProto buddy_multiplayer_connection_succeeded_telemetry = 58;
    BuddyMultiplayerTimeToGetSessionProto buddy_multiplayer_time_to_get_session_telemetry = 59;
    PlayerHudNotificationClickTelemetry player_hud_notification_click_telemetry = 60;
    MonodepthDownloadTelemetry monodepth_download_telemetry = 61;
    ArMappingTelemetryProto ar_mapping_telemetry = 62;
    RemoteRaidTelemetry remote_raid_telemetry = 63;
    PlatformServerData server_data = 1001;
    PlatformCommonFilterProto common_filters = 1002;
}

// ref: Holoholo.Rpc.HoloInventoryItemProto
message HoloInventoryItemProto {
    // ref: Holoholo.Rpc.HoloInventoryItemProto/TypeOneofCase
    //oneof Type {
        //none = 0;
        //pokemon = 1;
        //item = 2;
        //pokedex_entry = 3;
        //player_stats = 4;
        //player_currency = 5;
        //player_camera = 6;
        //inventory_upgrades = 7;
        //applied_items = 8;
        //egg_incubators = 9;
        //pokemon_family = 10;
        //quest = 11;
        //avatar_item = 12;
        //raid_tickets = 13;
        //quests = 14;
        //gift_boxes = 15;
        //beluga_incense = 16;
        //limited_purchase_sku_record = 19;
    //}

    PokemonProto pokemon = 1;
    ItemProto item = 2;
    PokedexEntryProto pokedex_entry = 3;
    PlayerStatsProto player_stats = 4;
    PlayerCurrencyProto player_currency = 5;
    PlayerCameraProto player_camera = 6;
    InventoryUpgradesProto inventory_upgrades = 7;
    AppliedItemsProto applied_items = 8;
    EggIncubatorsProto egg_incubators = 9;
    PokemonFamilyProto pokemon_family = 10;
    QuestProto quest = 11;
    AvatarItemProto avatar_item = 12;
    RaidTicketsProto raid_tickets = 13;
    QuestsProto quests = 14;
    GiftBoxesProto gift_boxes = 15;
    BelugaIncenseBoxProto beluga_incense = 16;
    LimitedPurchaseSkuRecordProto limited_purchase_sku_record = 19;
}

// ref: Holoholo.Rpc.HoloInventoryKeyProto
message HoloInventoryKeyProto {
    // ref: Holoholo.Rpc.HoloInventoryKeyProto/TypeOneofCase
    //oneof Type {
        //none = 0;
        //pokemon_id = 1;
        //item = 2;
        //pokedex_entry_id = 3;
        //player_stats = 4;
        //player_currency = 5;
        //player_camera = 6;
        //inventory_upgrades = 7;
        //applied_items = 8;
        //egg_incubators = 9;
        //pokemon_family_id = 10;
        //quest_type = 11;
        //avatar_template_id = 12;
        //raid_tickets = 13;
        //quests = 14;
        //gift_boxes = 15;
        //beluga_incense_box = 16;
        //vs_seeker_upgrades = 17;
        //limited_purchase_sku_record = 19;
    //}

    fixed64 pokemon_id = 1;
    Item item = 2;
    int32 pokedex_entry_id = 3;
    bool player_stats = 4;
    bool player_currency = 5;
    bool player_camera = 6;
    bool inventory_upgrades = 7;
    bool applied_items = 8;
    bool egg_incubators = 9;
    int32 pokemon_family_id = 10;
    QuestType quest_type = 11;
    string avatar_template_id = 12;
    bool raid_tickets = 13;
    bool quests = 14;
    bool gift_boxes = 15;
    bool beluga_incense_box = 16;
    bool vs_seeker_upgrades = 17;
    bool limited_purchase_sku_record = 19;
}

// ref: Holoholo.Rpc.IapItemCategoryDisplayProto
message IapItemCategoryDisplayProto {
    HoloIapItemCategory category = 1;
    string name = 2;
    bool hidden = 3;
    int32 sort_order = 4;
    bool banner_enabled = 5;
    string banner_title = 6;
    string image_url = 7;
    string description = 8;
}

// ref: Holoholo.Rpc.IapItemDisplayProto
message IapItemDisplayProto {
    string sku = 1;
    HoloIapItemCategory category = 2;
    int32 sort_order = 3;
    bool hidden = 6;
    bool sale = 7;
    string sprite_id = 8;
    string title = 9;
    string description = 10;
    string sku_enable_time = 11;
    string sku_disable_time = 12;
    int64 sku_enable_time_utc_ms = 13;
    int64 sku_disable_time_utc_ms = 14;
}

// ref: Holoholo.Rpc.IapSettingsProto
message IapSettingsProto {
    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;
}

// ref: Holoholo.Rpc.IncenseAttributesProto
message IncenseAttributesProto {
    int32 incense_lifetime_seconds = 1;
    repeated HoloPokemonType pokemon_type = 2;
    float pokemon_incense_type_probability = 3;
    int32 standing_time_between_encounters_sec = 4;
    int32 moving_time_between_encounter_sec = 5;
    int32 distance_required_for_shorter_interval_meters = 6;
    int32 pokemon_attracted_length_sec = 7;
    repeated SpawnTablePokemonProto spawn_table = 8;
    float spawn_table_probability = 9;
}

// ref: Holoholo.Rpc.IncenseEncounterOutProto
message IncenseEncounterOutProto {
    // ref: Holoholo.Rpc.IncenseEncounterOutProto/Types/Result
    enum Result {
        INCENSE_ENCOUNTER_UNKNOWN = 0;
        INCENSE_ENCOUNTER_SUCCESS = 1;
        INCENSE_ENCOUNTER_NOT_AVAILABLE = 2;
        POKEMON_INVENTORY_FULL = 3;
    }

    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;
    int32 arplus_attempts_until_flee = 5;
}

// ref: Holoholo.Rpc.IncenseEncounterProto
message IncenseEncounterProto {
    int64 encounter_id = 1;
    string encounter_location = 2;
}

// ref: Holoholo.Rpc.IncidentGlobalSettingsProto
message IncidentGlobalSettingsProto {
    int32 min_player_level = 1;
    int32 min_player_level_for_v2 = 2;
}

// ref: Holoholo.Rpc.IncidentLookupProto
message IncidentLookupProto {
    string incident_id = 1;
    string fort_id = 2;
    double fort_lat = 3;
    double fort_lng = 4;
}

// ref: Holoholo.Rpc.IncidentTicketAttributesProto
message IncidentTicketAttributesProto {
    bool ignore_full_inventory = 1;
    int32 upgrade_requirement_count = 2;
    Item upgraded_item = 3;
}

// ref: Holoholo.Rpc.InputSettingsProto
message InputSettingsProto {
    bool enable_frame_independent_spin = 1;
    int32 milliseconds_processed_spin_force = 2;
    float spin_speed_multiplier = 3;
}

// ref: Holoholo.Rpc.InvasionAvailabilitySettingsProto
message InvasionAvailabilitySettingsProto {
    // ref: Holoholo.Rpc.InvasionAvailabilitySettingsProto/Types/InvasionAvailabilitySettingsId
    enum InvasionAvailabilitySettingsId {
        INVASION_AVAILABILITY_SETTINGS_UNSET = 0;
        INVASION_AVAILABILITY_SETTINGS_MONDAY = 1;
        INVASION_AVAILABILITY_SETTINGS_TUESDAY = 2;
        INVASION_AVAILABILITY_SETTINGS_WEDNESDAY = 3;
        INVASION_AVAILABILITY_SETTINGS_THURSDAY = 4;
        INVASION_AVAILABILITY_SETTINGS_FRIDAY = 5;
        INVASION_AVAILABILITY_SETTINGS_SATURDAY = 6;
        INVASION_AVAILABILITY_SETTINGS_SUNDAY = 7;
    }

    int64 availability_start_minute = 1;
    int64 availability_end_minute = 2;
}

// ref: Holoholo.Rpc.InvasionEncounterOutProto
message InvasionEncounterOutProto {
    // ref: Holoholo.Rpc.InvasionEncounterOutProto/Types/PremierBallsDisplayProto
    message PremierBallsDisplayProto {
        int32 base_num_balls = 1;
        int32 pokemon_purified_num_balls = 2;
        int32 grunts_defeated_num_balls = 3;
        int32 pokemon_remaining_num_balls = 4;
    }

    InvasionStatus.Status status = 1;
    PokemonProto encounter_pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;
    int32 throws_remaining = 5;
    fixed64 encounter_id = 6;
    string spawn_point_guid = 7;
    PremierBallsDisplayProto balls_display = 8;
}

// ref: Holoholo.Rpc.InvasionEncounterProto
message InvasionEncounterProto {
    IncidentLookupProto incident_lookup = 1;
    int32 step = 2;
}

// ref: Holoholo.Rpc.InvasionFinishedDisplayProto
message InvasionFinishedDisplayProto {
    EnumWrapper.PokestopStyle style = 1;
}

// ref: Holoholo.Rpc.InvasionNpcDisplaySettingsProto
message InvasionNpcDisplaySettingsProto {
    string trainer_name = 1;
    PlayerAvatarProto avatar = 2;
    string trainer_title = 3;
    string trainer_quote = 4;
    string icon_url = 5;
    string backdrop_image_bundle = 6;
    string model_name = 7;
    string tutorial_on_loss_string = 8;
    bool is_male = 9;
}

// ref: Holoholo.Rpc.InvasionStatus
message InvasionStatus {
    // ref: Holoholo.Rpc.InvasionStatus/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR = 2;
        ERROR_FORT_NOT_FOUND = 3;
        ERROR_INCIDENT_NOT_FOUND = 4;
        ERROR_STEP_ALREADY_COMPLETED = 5;
        ERROR_WRONG_STEP = 6;
        ERROR_PLAYER_BELOW_MIN_LEVEL = 7;
        ERROR_INCIDENT_EXPIRED = 8;
        ERROR_MISSING_INCIDENT_TICKET = 9;
        ERROR_ENCOUNTER_POKEMON_INVENTORY_FULL = 10;
        ERROR_PLAYER_BELOW_V2_MIN_LEVEL = 11;
        ERROR_INVALID_HEALTH_UPDATES = 20;
        ERROR_ATTACKING_POKEMON_INVALID = 30;
    }

}

// ref: Holoholo.Rpc.InvasionTelemetry
message InvasionTelemetry {
    InvasionTelemetryIds invasion_telemetry_id = 1;
    EnumWrapper.InvasionCharacter npc_id = 2;
    bool battle_success = 3;
    int32 post_battle_friendly_remaining = 4;
    int32 post_battle_enemy_remaining = 5;
    int32 encounter_pokemon = 6;
    bool encounter_success = 7;
    string invasion_id = 8;
    bool player_tapped_npc = 9;
    string radar = 10;
    bool curfew = 11;
    float duration = 12;
    float distance = 13;
}

// ref: Holoholo.Rpc.InvasionVictoryLogEntry
message InvasionVictoryLogEntry {
    LootProto rewards = 1;
    EnumWrapper.InvasionCharacter invasion_npc = 2;
}

// ref: Holoholo.Rpc.InventorySettingsProto
message InventorySettingsProto {
    int32 max_pokemon = 1;
    int32 max_bag_items = 2;
    int32 base_pokemon = 3;
    int32 base_bag_items = 4;
    int32 base_eggs = 5;
    int32 max_team_changes = 6;
    int64 team_change_item_reset_period_in_days = 7;
    int64 max_item_boost_duration_ms = 8;
}

// ref: Holoholo.Rpc.InventoryUpgradeAttributesProto
message InventoryUpgradeAttributesProto {
    int32 additional_storage = 1;
    InventoryUpgradeType upgrade_type = 2;
}

// ref: Holoholo.Rpc.InventoryUpgradeProto
message InventoryUpgradeProto {
    Item item = 1;
    InventoryUpgradeType upgrade_type = 2;
    int32 additional_storage = 3;
}

// ref: Holoholo.Rpc.InventoryUpgradesProto
message InventoryUpgradesProto {
    repeated InventoryUpgradeProto inventory_upgrade = 1;
}

// ref: Holoholo.Rpc.ItemProto
message ItemProto {
    Item item = 1;
    int32 count = 2;
    bool unseen = 3;
}

// ref: Holoholo.Rpc.ItemRewardProto
message ItemRewardProto {
    Item item = 1;
    int32 amount = 2;
}

// ref: Holoholo.Rpc.ItemSettingsProto
message ItemSettingsProto {
    Item unique_id = 1;
    HoloItemType item_type = 2;
    HoloItemCategory category = 3;
    float drop_freq = 4;
    int32 drop_trainer_level = 5;
    PokeBallAttributesProto pokeball = 6;
    PotionAttributesProto potion = 7;
    ReviveAttributesProto revive = 8;
    BattleAttributesProto battle = 9;
    FoodAttributesProto food = 10;
    InventoryUpgradeAttributesProto inventory_upgrade = 11;
    ExperienceBoostAttributesProto xp_boost = 12;
    IncenseAttributesProto incense = 13;
    EggIncubatorAttributesProto egg_incubator = 14;
    FortModifierAttributesProto fort_modifier = 15;
    StardustBoostAttributesProto stardust_boost = 16;
    IncidentTicketAttributesProto incident_ticket = 17;
    GlobalEventTicketAttributesProto global_event_ticket = 18;
    bool ignore_inventory_space = 19;
}

// ref: Holoholo.Rpc.ItemTelemetry
message ItemTelemetry {
    ItemUseTelemetryIds item_use_click_id = 1;
    int32 item_id = 2;
    bool equipped = 3;
    bool from_inventory = 4;
    string item_id_string = 5;
}

// ref: Holoholo.Rpc.JoinBuddyMultiplayerSessionOutProto
message JoinBuddyMultiplayerSessionOutProto {
    // ref: Holoholo.Rpc.JoinBuddyMultiplayerSessionOutProto/Types/Result
    enum Result {
        JOIN_SUCCESS = 0;
        JOIN_LOBBY_FULL = 1;
        JOIN_HOST_TOO_FAR = 2;
        JOIN_LOBBY_NOT_FOUND = 3;
        JOIN_BUDDY_NOT_SET = 4;
        JOIN_BUDDY_NOT_FOUND = 5;
        JOIN_BAD_BUDDY = 6;
        JOIN_BUDDY_V2_NOT_ENABLED = 7;
        JOIN_PLAYER_LEVEL_TOO_LOW = 8;
        JOIN_UNKNOWN_ERROR = 9;
        JOIN_U13_NO_PERMISSION = 10;
    }

    Result result = 1;
    bytes arbe_join_token = 2;
    int64 generation_timestamp = 3;
    int32 max_players = 4;
}

// ref: Holoholo.Rpc.JoinBuddyMultiplayerSessionProto
message JoinBuddyMultiplayerSessionProto {
    string plfe_session_id = 1;
}

// ref: Holoholo.Rpc.JoinLobbyOutProto
message JoinLobbyOutProto {
    // ref: Holoholo.Rpc.JoinLobbyOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
        ERROR_RAID_UNAVAILABLE = 3;
        ERROR_RAID_COMPLETED = 4;
        ERROR_NO_AVAILABLE_LOBBIES = 5;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 6;
        ERROR_POI_INACCESSIBLE = 7;
        ERROR_GYM_LOCKOUT = 8;
        ERROR_NO_TICKET = 9;
        ERROR_NO_REMOTE_TICKET = 10;
    }

    Result result = 1;
    LobbyProto lobby = 2;
}

// ref: Holoholo.Rpc.JoinLobbyProto
message JoinLobbyProto {
    int64 raid_seed = 1;
    string gym_id = 2;
    repeated int32 lobby_id = 3;
    bool private = 4;
    double player_lat_degrees = 5;
    double player_lng_degrees = 6;
    double gym_lat_degrees = 7;
    double gym_lng_degrees = 8;
    bool use_remote_pass = 9;
}

// ref: Holoholo.Rpc.KangarooSettingsProto
message KangarooSettingsProto {
    bool enable_kangaroo_v2 = 1;
}

// ref: Holoholo.Rpc.KoalaSettingsProto
message KoalaSettingsProto {
    string app_id = 1;
    bool use_sandbox = 2;
    bool use_koala = 3;
}

// ref: Holoholo.Rpc.LeaveBuddyMultiplayerSessionOutProto
message LeaveBuddyMultiplayerSessionOutProto {
    // ref: Holoholo.Rpc.LeaveBuddyMultiplayerSessionOutProto/Types/Result
    enum Result {
        LEAVE_SUCCESS = 0;
        LEAVE_NOT_IN_LOBBY = 1;
        LEAVE_LOBBY_NOT_FOUND = 2;
        LEAVE_UNKNOWN_ERROR = 3;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.LeaveBuddyMultiplayerSessionProto
message LeaveBuddyMultiplayerSessionProto {
    string plfe_session_id = 1;
}

// ref: Holoholo.Rpc.LeaveInteractionRangeTelemetry
message LeaveInteractionRangeTelemetry {
    string result = 1;
    string fort_id = 2;
    int32 fort_type = 3;
    int64 client_timestamp = 4;
    string partner_id = 5;
    int64 time_spent = 6;
    string campaign_id = 7;
}

// ref: Holoholo.Rpc.LeaveLobbyOutProto
message LeaveLobbyOutProto {
    // ref: Holoholo.Rpc.LeaveLobbyOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_RAID_UNAVAILABLE = 2;
        ERROR_LOBBY_NOT_FOUND = 3;
    }

    Result result = 1;
    LobbyProto lobby = 2;
}

// ref: Holoholo.Rpc.LeaveLobbyProto
message LeaveLobbyProto {
    int64 raid_seed = 1;
    string gym_id = 2;
    repeated int32 lobby_id = 3;
}

// ref: Holoholo.Rpc.LeavePointOfInterestTelemetry
message LeavePointOfInterestTelemetry {
    string result = 1;
    string fort_id = 2;
    int32 fort_type = 3;
    int64 client_timestamp = 4;
    string partner_id = 5;
    int64 time_spent = 6;
    string campaign_id = 7;
}

// ref: Holoholo.Rpc.LeveledUpFriendsProto
message LeveledUpFriendsProto {
    repeated PlayerPublicProfileProto friend_profiles = 1;
    repeated FriendshipLevelDataProto friend_milestone_levels = 2;
}

// ref: Holoholo.Rpc.LevelSettingsProto
message LevelSettingsProto {
    double trainer_cp_modifier = 2;
    double trainer_difficulty_modifier = 3;
}

// ref: Holoholo.Rpc.LevelUpRewardsOutProto
message LevelUpRewardsOutProto {
    // ref: Holoholo.Rpc.LevelUpRewardsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        AWARDED_ALREADY = 2;
    }

    Result result = 1;
    repeated AwardItemProto items = 2;
    repeated Item items_unlocked = 4;
    repeated string avatar_template_ids = 5;
}

// ref: Holoholo.Rpc.LevelUpRewardsProto
message LevelUpRewardsProto {
    int32 level = 1;
}

// ref: Holoholo.Rpc.LimitedEditionPokemonEncounterRewardProto
message LimitedEditionPokemonEncounterRewardProto {
    // ref: Holoholo.Rpc.LimitedEditionPokemonEncounterRewardProto/LimitOneofCase
    //oneof Limit {
        //none = 0;
        //lifetime_max_count = 3;
        //per_competitive_combat_season_max_count = 4;
    //}

    PokemonEncounterRewardProto pokemon = 1;
    string identifier = 2;
    int32 lifetime_max_count = 3;
    int32 per_competitive_combat_season_max_count = 4;
}

// ref: Holoholo.Rpc.LimitedPurchaseSkuRecordProto
message LimitedPurchaseSkuRecordProto {
    // ref: Holoholo.Rpc.LimitedPurchaseSkuRecordProto/Types/PurchaseProto
    message PurchaseProto {
        int32 version = 1;
        int32 num_purchases = 2;
        int64 last_purchase_ms = 4;
    }

    map<string, PurchaseProto> purchases = 1;
}

// ref: Holoholo.Rpc.LimitedPurchaseSkuSettingsProto
message LimitedPurchaseSkuSettingsProto {
    // ref: Holoholo.Rpc.LimitedPurchaseSkuSettingsProto/Types/ChronoUnit
    enum ChronoUnit {
        UNSET = 0;
        MINUTE = 1;
        HOUR = 2;
        DAY = 3;
        WEEK = 4;
        MONTH = 5;
    }

    int32 purchase_limit = 1;
    int32 version = 2;
    ChronoUnit chrono_unit = 3;
    int32 reset_interval = 20;
}

// ref: Holoholo.Rpc.LinkLoginTelemetry
message LinkLoginTelemetry {
    bool linked = 1;
    string success = 2;
    string error = 3;
    string active_auth_provider_id = 4;
    string provider = 5;
}

// ref: Holoholo.Rpc.ListAvatarCustomizationsOutProto
message ListAvatarCustomizationsOutProto {
    // ref: Holoholo.Rpc.ListAvatarCustomizationsOutProto/Types/Label
    enum Label {
        UNSET_LABEL = 0;
        DEFAULT = 1;
        OWNED = 2;
        FEATURED = 3;
        NEW = 4;
        SALE = 5;
        PURCHASABLE = 6;
        UNLOCKABLE = 7;
        VIEWED = 8;
        LOCKED_PURCHASABLE = 9;
    }

    // ref: Holoholo.Rpc.ListAvatarCustomizationsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    // ref: Holoholo.Rpc.ListAvatarCustomizationsOutProto/Types/AvatarCustomization
    message AvatarCustomization {
        string avatar_template_id = 1;
        repeated Label labels = 2;
    }

    Result result = 1;
    repeated AvatarCustomization avatar_customizations = 2;
}

// ref: Holoholo.Rpc.ListAvatarCustomizationsProto
message ListAvatarCustomizationsProto {
    // ref: Holoholo.Rpc.ListAvatarCustomizationsProto/Types/Filter
    enum Filter {
        UNSET = 0;
        ALL = 1;
        DEFAULT = 2;
        OWNED = 3;
        FEATURED = 4;
        PURCHASABLE = 5;
        UNLOCKABLE = 6;
    }

    PlayerAvatarType avatar_type = 1;
    repeated AvatarCustomizationProto.Slot slot = 2;
    repeated Filter filters = 3;
    int32 start = 4;
    int32 limit = 5;
}

// ref: Holoholo.Rpc.ListGymBadgesOutProto
message ListGymBadgesOutProto {
    repeated AwardedGymBadge gym_badge = 1;
}

// ref: Holoholo.Rpc.ListGymBadgesProto
message ListGymBadgesProto {
}

// ref: Holoholo.Rpc.LoadingScreenProto
message LoadingScreenProto {
    string url = 1;
    int64 display_after_timestamp_ms = 2;
    map<string, string> color_settings = 3;
}

// ref: Holoholo.Rpc.LobbyPokemonProto
message LobbyPokemonProto {
    int64 id = 1;
    HoloPokemonId pokedex_id = 2;
    int32 cp = 3;
    float percent_health = 4;
}

// ref: Holoholo.Rpc.LobbyProto
message LobbyProto {
    repeated int32 lobby_id = 1;
    repeated BattleParticipantProto players = 2;
    int64 player_join_end_ms = 3;
    int64 pokemon_selection_end_ms = 4;
    int64 raid_battle_start_ms = 5;
    int64 raid_battle_end_ms = 6;
    string raid_battle_id = 8;
    string owner_nickname = 9;
    bool private = 10;
    int64 creation_ms = 11;
    int32 battle_plfe_instance = 12;
    GameplayWeatherProto.WeatherCondition weather_condition = 13;
    repeated string invited_player_ids = 14;
}

// ref: Holoholo.Rpc.LoginActionTelemetry
message LoginActionTelemetry {
    LoginActionTelemetryIds login_action_id = 1;
    bool first_time = 2;
    bool success = 3;
    bool intent_existing = 4;
    string error = 5;
    string auth_status = 6;
}

// ref: Holoholo.Rpc.LoginSettingsProto
message LoginSettingsProto {
    bool enable_multi_login_linking = 1;
}

// ref: Holoholo.Rpc.LootItemProto
message LootItemProto {
    // ref: Holoholo.Rpc.LootItemProto/TypeOneofCase
    //oneof Type {
        //none = 0;
        //item = 1;
        //stardust = 2;
        //pokecoin = 3;
        //pokemon_candy = 4;
        //experience = 6;
        //pokemon_egg = 7;
        //avatar_template_id = 8;
    //}

    Item item = 1;
    bool stardust = 2;
    bool pokecoin = 3;
    HoloPokemonId pokemon_candy = 4;
    int32 count = 5;
    bool experience = 6;
    PokemonProto pokemon_egg = 7;
    string avatar_template_id = 8;
}

// ref: Holoholo.Rpc.LootProto
message LootProto {
    repeated LootItemProto loot_item = 1;
}

// ref: Holoholo.Rpc.LuckyPokemonSettingsProto
message LuckyPokemonSettingsProto {
    float power_up_stardust_discount_percent = 1;
}

// ref: Holoholo.Rpc.MapBuddySettingsProto
message MapBuddySettingsProto {
    int32 for_buddy_group_number = 1;
    float target_offset_min = 2;
    float target_offset_max = 3;
    float leash_distance = 4;
    float max_seconds_to_idle = 5;
    float max_rotation_speed = 6;
    float walk_threshold = 7;
    float run_threshold = 8;
    bool should_glide = 9;
    float glide_smooth_time = 10;
    float glide_max_speed = 11;
}

// ref: Holoholo.Rpc.MapEventsTelemetry
message MapEventsTelemetry {
    MapEventsTelemetryIds map_event_click_id = 1;
    string fort_id = 2;
    repeated int32 guard_pokemon_level = 3;
    int32 team = 4;
    bool is_player_in_range = 5;
}

// ref: Holoholo.Rpc.MapPokemonProto
message MapPokemonProto {
    string spawnpoint_id = 1;
    fixed64 encounter_id = 2;
    int32 pokedex_type_id = 3;
    int64 expiration_time_ms = 4;
    double latitude = 5;
    double longitude = 6;
    PokemonDisplayProto pokemon_display = 7;
}

// ref: Holoholo.Rpc.MapSettingsProto
message MapSettingsProto {
    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;
    int32 min_nearby_hide_sightings = 8;
    bool enable_special_weather = 9;
    float special_weather_probability = 10;
    string google_maps_client_id = 11;
    bool enable_encounter_v2 = 12;
}

// ref: Holoholo.Rpc.MarkReadNewsArticleOutProto
message MarkReadNewsArticleOutProto {
    // ref: Holoholo.Rpc.MarkReadNewsArticleOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        NO_NEWS_FOUND = 2;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.MarkReadNewsArticleProto
message MarkReadNewsArticleProto {
    repeated string news_ids = 1;
}

// ref: Holoholo.Rpc.MarkTutorialCompleteOutProto
message MarkTutorialCompleteOutProto {
    bool success = 1;
    ClientPlayerProto player = 2;
}

// ref: Holoholo.Rpc.MarkTutorialCompleteProto
message MarkTutorialCompleteProto {
    repeated TutorialCompletion tutorial_complete = 1;
    bool send_marketing_emails = 2;
    bool send_push_notifications = 3;
}

// ref: Holoholo.Rpc.MonodepthDownloadTelemetry
message MonodepthDownloadTelemetry {
    bool downloaded_package = 1;
    bool skipped_package = 2;
    string model_downloaded = 3;
}

// ref: Holoholo.Rpc.MonodepthSettingsProto
message MonodepthSettingsProto {
    bool enable_occlusions = 1;
    bool occlusions_default_on = 2;
    bool occlusions_toggle_visible = 3;
}

// ref: Holoholo.Rpc.MotivatedPokemonProto
message MotivatedPokemonProto {
    PokemonProto pokemon = 1;
    int64 deploy_ms = 2;
    int32 cp_when_deployed = 3;
    double motivation_now = 4;
    int32 cp_now = 5;
    float berry_value = 6;
    int64 feed_cooldown_duration_millis = 7;
    repeated FoodValue food_value = 8;
}

// ref: Holoholo.Rpc.MoveSequenceSettingsProto
message MoveSequenceSettingsProto {
    repeated string sequence = 1;
}

// ref: Holoholo.Rpc.MoveSettingsProto
message MoveSettingsProto {
    HoloPokemonMove unique_id = 1;
    int32 animation_id = 2;
    HoloPokemonType 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;
    bool is_locked = 16;
}

// ref: Holoholo.Rpc.MultiPartQuestProto
message MultiPartQuestProto {
    repeated QuestProto sub_quests = 1;
}

// ref: Holoholo.Rpc.NearbyPokemonProto
message NearbyPokemonProto {
    int32 pokedex_number = 1;
    float distance_meters = 2;
    fixed64 encounter_id = 3;
    string fort_id = 4;
    string fort_image_url = 5;
    PokemonDisplayProto pokemon_display = 6;
}

// ref: Holoholo.Rpc.NewsArticleProto
message NewsArticleProto {
    // ref: Holoholo.Rpc.NewsArticleProto/Types/NewsTemplate
    enum NewsTemplate {
        UNSET = 0;
        DEFAULT_TEMPLATE = 1;
    }

    string id = 1;
    repeated string image_url = 2;
    string header_key = 3;
    string subheader_key = 4;
    string main_text_key = 5;
    int64 timestamp = 6;
    NewsTemplate template = 7;
    bool enabled = 8;
    bool article_read = 9;
}

// ref: Holoholo.Rpc.NewsGlobalSettingsProto
message NewsGlobalSettingsProto {
    bool enable_news = 1;
}

// ref: Holoholo.Rpc.NewsPageTelemetry
message NewsPageTelemetry {
    NewsPageTelemetryIds news_page_click_id = 1;
}

// ref: Holoholo.Rpc.NewsProto
message NewsProto {
    string news_bundle_id = 1;
    repeated string exclusive_countries = 2;
}

// ref: Holoholo.Rpc.NewsSettingProto
message NewsSettingProto {
    repeated NewsProto news_protos = 1;
}

// ref: Holoholo.Rpc.NicknamePokemonOutProto
message NicknamePokemonOutProto {
    // ref: Holoholo.Rpc.NicknamePokemonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_NICKNAME = 2;
        ERROR_POKEMON_NOT_FOUND = 3;
        ERROR_POKEMON_IS_EGG = 4;
        ERROR_FILTERED_NICKNAME = 5;
        ERROR_EXCEEDED_CHANGE_LIMIT = 6;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.NicknamePokemonProto
message NicknamePokemonProto {
    fixed64 pokemon_id = 1;
    string nickname = 2;
}

// ref: Holoholo.Rpc.NicknamePokemonTelemetry
message NicknamePokemonTelemetry {
    PokemonTelemetry pokemon = 1;
    string nickname = 2;
}

// ref: Holoholo.Rpc.NotificationSettingsProto
message NotificationSettingsProto {
    bool pull_notifications = 1;
    bool show_notifications = 2;
}

// ref: Holoholo.Rpc.NpcPokemonProto
message NpcPokemonProto {
    HoloPokemonId pokemon_type = 1;
    PokemonDisplayProto pokemon_display = 2;
}

// ref: Holoholo.Rpc.OnboardingSettingsProto
message OnboardingSettingsProto {
    bool skip_avatar_customization = 1;
    bool disable_initial_ar_prompt = 2;
    uint32 ar_prompt_player_level = 3;
}

// ref: Holoholo.Rpc.OnboardingTelemetry
message OnboardingTelemetry {
    OnboardingPathIds onboarding_path = 1;
    OnboardingEventIds event_id = 2;
    int32 data = 3;
    string conversation = 4;
    OnboardingArStatus ar_status = 5;
}

// ref: Holoholo.Rpc.OnboardingV2SettingsProto
message OnboardingV2SettingsProto {
    bool enable_onboarding_v2 = 1;
    repeated HoloPokemonId pokedex_id = 2;
    HoloPokemonId onboarding_egg_pokemon = 3;
    int32 egg_km_until_hatch = 4;
}

// ref: Holoholo.Rpc.OneWaySharedFriendshipDataProto
message OneWaySharedFriendshipDataProto {
    repeated GiftBoxDetailsProto giftbox_details = 1;
    int64 open_trade_expire_ms = 2;
}

// ref: Holoholo.Rpc.OpenBuddyGiftOutProto
message OpenBuddyGiftOutProto {
    // ref: Holoholo.Rpc.OpenBuddyGiftOutProto/Types/Result
    enum Result {
        UNSET = 0;
        ERROR_BUDDY_NOT_VALID = 1;
        SUCCESS_ADDED_LOOT_TO_INVENTORY = 2;
        SUCCESS_ADDED_SOUVENIR_TO_COLLECTIONS = 3;
        ERROR_BUDDY_HAS_NOT_PICKED_UP_ANY_SOUVENIRS = 4;
        ERROR_INVENTORY_IS_FULL = 5;
        ERROR_BUDDY_NOT_ON_MAP = 6;
    }

    Result result = 1;
    BuddyGiftProto buddy_gift = 2;
    BuddyObservedData observed_data = 4;
    BuddyStatsShownHearts.BuddyShownHeartType shown_hearts = 5;
}

// ref: Holoholo.Rpc.OpenBuddyGiftProto
message OpenBuddyGiftProto {
}

// ref: Holoholo.Rpc.OpenCombatChallengeOutProto
message OpenCombatChallengeOutProto {
    // ref: Holoholo.Rpc.OpenCombatChallengeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_CHALLENGE_STATE = 2;
        ERROR_CHALLENGE_NOT_FOUND = 3;
        ERROR_POKEMON_NOT_IN_INVENTORY = 4;
        ERROR_NOT_ELIGIBLE_LEAGUE = 5;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 6;
        ERROR_ALREADY_TIMEDOUT = 8;
        ERROR_ALREADY_CANCELLED = 9;
        ERROR_FRIEND_NOT_FOUND = 10;
        ERROR_FAILED_TO_SEND_NOTIFICATION = 11;
        ERROR_ACCESS_DENIED = 12;
        ERROR_INELIGIBLE_OPPONENT = 13;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
}

// ref: Holoholo.Rpc.OpenCombatChallengeProto
message OpenCombatChallengeProto {
    CombatType type = 1;
    string challenge_id = 2;
    string combat_league_template_id = 3;
    string opponent_player_id = 4;
    repeated fixed64 attacking_pokemon_id = 5;
}

// ref: Holoholo.Rpc.OpenCombatSessionOutProto
message OpenCombatSessionOutProto {
    // ref: Holoholo.Rpc.OpenCombatSessionOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_COMBAT_STATE = 2;
        ERROR_COMBAT_SESSION_FULL = 3;
        ERROR_POKEMON_NOT_IN_INVENTORY = 4;
        ERROR_OPPONENT_NOT_IN_RANGE = 5;
        ERROR_CHALLENGE_EXPIRED = 6;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 7;
        ERROR_OPPONENT_QUIT = 8;
        ERROR_POKEMON_LINEUP_INELIGIBLE_FOR_LEAGUE = 9;
        ERROR_COMBAT_LEAGUE_UNSPECIFIED = 10;
        ERROR_ACCESS_DENIED = 11;
        ERROR_PLAYER_HAS_NO_BATTLE_PASSES = 12;
    }

    Result result = 1;
    CombatProto combat = 2;
    bool should_debug_log = 3;
}

// ref: Holoholo.Rpc.OpenCombatSessionProto
message OpenCombatSessionProto {
    string combat_id = 1;
    repeated fixed64 attacking_pokemon_id = 2;
    string combat_league_template_id = 3;
}

// ref: Holoholo.Rpc.OpenGiftLogEntry
message OpenGiftLogEntry {
    // ref: Holoholo.Rpc.OpenGiftLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string friend_codename = 2;
    LootProto items = 3;
    repeated PokemonProto pokemon_eggs = 4;
}

// ref: Holoholo.Rpc.OpenGiftOutProto
message OpenGiftOutProto {
    // ref: Holoholo.Rpc.OpenGiftOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_BAG_FULL = 3;
        ERROR_PLAYER_LIMIT_REACHED = 4;
        ERROR_GIFT_DOES_NOT_EXIST = 5;
        ERROR_FRIEND_NOT_FOUND = 6;
        ERROR_INVALID_PLAYER_ID = 7;
        ERROR_FRIEND_UPDATE = 8;
    }

    Result result = 1;
    LootProto items = 2;
    PokemonProto egg_pokemon = 3;
    FriendshipLevelDataProto updated_friendship_data = 4;
    PlayerPublicProfileProto friend_profile = 5;
}

// ref: Holoholo.Rpc.OpenGiftProto
message OpenGiftProto {
    string player_id = 1;
    fixed64 giftbox_id = 2;
}

// ref: Holoholo.Rpc.OpenInvasionCombatSessionOutProto
message OpenInvasionCombatSessionOutProto {
    InvasionStatus.Status status = 1;
    CombatProto combat = 2;
}

// ref: Holoholo.Rpc.OpenInvasionCombatSessionProto
message OpenInvasionCombatSessionProto {
    IncidentLookupProto incident_lookup = 1;
    int32 step = 2;
    repeated fixed64 attacking_pokemon_id = 3;
}

// ref: Holoholo.Rpc.OpenNpcCombatSessionOutProto
message OpenNpcCombatSessionOutProto {
    // ref: Holoholo.Rpc.OpenNpcCombatSessionOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 2;
        ERROR_POKEMON_LINEUP_INELIGIBLE_FOR_LEAGUE = 3;
        ERROR_ACCESS_DENIED = 4;
    }

    Result result = 1;
    CombatProto combat = 2;
}

// ref: Holoholo.Rpc.OpenNpcCombatSessionProto
message OpenNpcCombatSessionProto {
    repeated fixed64 attacking_pokemon_id = 1;
    string combat_npc_template_id = 2;
}

// ref: Holoholo.Rpc.OpenTradingOutProto
message OpenTradingOutProto {
    // ref: Holoholo.Rpc.OpenTradingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_FRIEND_NOT_FOUND = 3;
        ERROR_INVALID_PLAYER_ID = 4;
        ERROR_INVALID_STATE = 5;
        ERROR_STATE_HANDLER = 6;
        ERROR_TRADING_EXPIRED = 7;
        ERROR_TRADING_COOLDOWN = 8;
        ERROR_PLAYER_ALREADY_OPENED = 9;
        ERROR_FRIEND_OUT_OF_RANGE = 10;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 11;
        ERROR_PLAYER_REACHED_DAILY_LIMIT = 12;
        ERROR_FRIEND_REACHED_DAILY_LIMIT = 13;
        ERROR_PLAYER_NOT_ENOUGH_STARDUST = 14;
        ERROR_FRIEND_NOT_ENOUGH_STARDUST = 15;
        ERROR_FRIEND_BELOW_MINIMUM_LEVEL = 16;
    }

    Result result = 1;
    TradingProto trading = 2;
}

// ref: Holoholo.Rpc.OpenTradingProto
message OpenTradingProto {
    string player_id = 1;
}

// ref: Holoholo.Rpc.ParticipationProto
message ParticipationProto {
    int32 individual_damage_pokeballs = 1;
    int32 team_damage_pokeballs = 2;
    int32 gym_ownership_pokeballs = 3;
    int32 base_pokeballs = 4;
    double blue_percentage = 5;
    double red_percentage = 6;
    double yellow_percentage = 7;
    float bonus_item_multiplier = 8;
    FriendshipLevelMilestone highest_friendship_milestone = 9;
    int32 highest_friendship_pokeballs = 10;
}

// ref: Holoholo.Rpc.PartyRecommendationSettingsProto
message PartyRecommendationSettingsProto {
    // ref: Holoholo.Rpc.PartyRecommendationSettingsProto/Types/PartyRcommendationMode
    enum PartyRcommendationMode {
        UNSET = 0;
        PARTY_RECOMMENDATION_MODE_1 = 1;
        PARTY_RECOMMENDATION_MODE_2 = 2;
        PARTY_RECOMMENDATION_MODE_3 = 3;
        PARTY_RECOMMENDATION_MODE_4 = 4;
    }

    PartyRcommendationMode mode = 1;
    float variance = 2;
    float third_move_weight = 3;
}

// ref: Holoholo.Rpc.PasscodeRedeemTelemetry
message PasscodeRedeemTelemetry {
    string result = 1;
    string passcode = 2;
    string country_code = 3;
    string language_code = 4;
    string bundle_version = 5;
}

// ref: Holoholo.Rpc.PasscodeRewardsLogEntry
message PasscodeRewardsLogEntry {
    // ref: Holoholo.Rpc.PasscodeRewardsLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string passcode = 2;
    RedeemPasscodeRewardProto rewards = 3;
}

// ref: Holoholo.Rpc.PasscodeSettingsProto
message PasscodeSettingsProto {
    bool show_passcode_in_store = 1;
    bool use_passcode_v2 = 2;
}

// ref: Holoholo.Rpc.PermissionsFlowTelemetry
message PermissionsFlowTelemetry {
    PermissionContextTelemetryIds permission_context_telemetry_ids = 1;
    DeviceServiceTelemetryIds device_service_telemetry_ids = 2;
    PermissionFlowStepTelemetryIds permission_flow_step_telemetry_ids = 3;
    bool success = 4;
}

// ref: Holoholo.Rpc.PlannedDowntimeSettingsProto
message PlannedDowntimeSettingsProto {
    int64 downtime_timestamp_ms = 1;
    int64 no_actions_window_sec_from_downtime = 2;
}

// ref: Holoholo.Rpc.PlatformMetricData
message PlatformMetricData {
    // ref: Holoholo.Rpc.PlatformMetricData/DatapointValueOneofCase
    //oneof DatapointValue {
        //none = 0;
        //long_value = 2;
        //double_value = 3;
        //boolean_value = 4;
        //distribution = 5;
    //}

    // ref: Holoholo.Rpc.PlatformMetricData/Types/Kind
    enum Kind {
        UNSPECIFIED = 0;
        GAUGE = 1;
        DELTA = 2;
        CUMULATIVE = 3;
    }

    TelemetryCommon common_telemetry = 1;
    int64 long_value = 2;
    double double_value = 3;
    bool boolean_value = 4;
    Distribution distribution = 5;
    Kind metric_kind = 6;
}

// ref: Holoholo.Rpc.PlatypusRolloutSettingsProto
message PlatypusRolloutSettingsProto {
    int32 buddy_v2_min_player_level = 1;
    int32 buddy_multiplayer_min_player_level = 2;
    bool enable_monodepth = 3;
    WallabySettingsProto wallaby_settings = 4;
}

// ref: Holoholo.Rpc.PlayerAvatarProto
message PlayerAvatarProto {
    int32 skin = 2;
    int32 hair = 3;
    int32 shirt = 4;
    int32 pants = 5;
    int32 hat = 6;
    int32 shoes = 7;
    int32 avatar = 8;
    int32 eyes = 9;
    int32 backpack = 10;
    string avatar_hair = 11;
    string avatar_shirt = 12;
    string avatar_pants = 13;
    string avatar_hat = 14;
    string avatar_shoes = 15;
    string avatar_eyes = 16;
    string avatar_backpack = 17;
    string avatar_gloves = 18;
    string avatar_socks = 19;
    string avatar_belt = 20;
    string avatar_glasses = 21;
    string avatar_necklace = 22;
    string avatar_skin = 23;
    string avatar_pose = 24;
}

// ref: Holoholo.Rpc.PlayerBadgeProto
message PlayerBadgeProto {
    HoloBadgeType badge_type = 1;
    int32 rank = 2;
    int32 start_value = 3;
    int32 end_value = 4;
    double current_value = 5;
}

// ref: Holoholo.Rpc.PlayerCameraProto
message PlayerCameraProto {
    bool default_camera = 1;
}

// ref: Holoholo.Rpc.PlayerCombatBadgeStatsProto
message PlayerCombatBadgeStatsProto {
    int32 num_won = 1;
    int32 num_total = 2;
}

// ref: Holoholo.Rpc.PlayerCombatStatsProto
message PlayerCombatStatsProto {
    map<int32, PlayerCombatBadgeStatsProto> badges = 1;
}

// ref: Holoholo.Rpc.PlayerCurrencyProto
message PlayerCurrencyProto {
    int32 gems = 1;
}

// ref: Holoholo.Rpc.PlayerFriendDisplayProto
message PlayerFriendDisplayProto {
    PokemonDisplayProto buddy = 1;
    int32 buddy_display_pokemon_id = 2;
    string buddy_pokemon_nickname = 3;
    PokemonDisplayProto last_pokemon_caught = 4;
    int32 last_pokemon_caught_display_id = 5;
    int64 last_pokemon_caught_timestamp = 6;
    int32 buddy_candy_awarded = 7;
}

// ref: Holoholo.Rpc.PlayerHudNotificationClickTelemetry
message PlayerHudNotificationClickTelemetry {
    string notification_category = 1;
}

// ref: Holoholo.Rpc.PlayerLevelSettingsProto
message PlayerLevelSettingsProto {
    repeated int32 rank_num = 1;
    repeated int32 required_exp = 2;
    repeated float cp_multiplier = 3;
    int32 max_egg_player_level = 4;
    int32 max_encounter_player_level = 5;
    int32 max_raid_encounter_player_level = 6;
    int32 max_quest_encounter_player_level = 7;
    int32 max_vs_seeker_encounter_player_level = 8;
}

// ref: Holoholo.Rpc.PlayerLocaleProto
message PlayerLocaleProto {
    string country = 1;
    string language = 2;
    string timezone = 3;
}

// ref: Holoholo.Rpc.PlayerProfileOutProto
message PlayerProfileOutProto {
    // ref: Holoholo.Rpc.PlayerProfileOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    // ref: Holoholo.Rpc.PlayerProfileOutProto/Types/GymBadges
    message GymBadges {
        repeated AwardedGymBadge gym_badge = 1;
        int32 total = 2;
    }

    Result result = 1;
    int64 start_time = 2;
    repeated PlayerBadgeProto badges = 3;
    GymBadges gym_badges = 4;
}

// ref: Holoholo.Rpc.PlayerProfileProto
message PlayerProfileProto {
    string player_name = 1;
}

// ref: Holoholo.Rpc.PlayerPublicProfileProto
message PlayerPublicProfileProto {
    string name = 1;
    int32 level = 2;
    PlayerAvatarProto avatar = 3;
    Team team = 4;
    int32 battles_won = 5;
    float km_walked = 6;
    int32 caught_pokemon = 7;
    GymBadgeType gym_badge_type = 8;
    repeated PlayerBadgeProto badges = 9;
    int64 experience = 10;
    bool has_shared_ex_pass = 11;
    int32 combat_rank = 12;
    float combat_rating = 13;
}

// ref: Holoholo.Rpc.PlayerRaidInfoProto
message PlayerRaidInfoProto {
    int32 total_completed_raids = 3;
    int32 total_completed_legendary_raids = 4;
    repeated RaidProto raids = 5;
}

// ref: Holoholo.Rpc.PlayerStatsProto
message PlayerStatsProto {
    int32 level = 1;
    int64 experience = 2;
    int64 prev_level_exp = 3;
    int64 next_level_exp = 4;
    float km_walked = 5;
    int32 num_pokemon_encountered = 6;
    int32 num_unique_pokedex_entries = 7;
    int32 num_pokemon_captured = 8;
    int32 num_evolutions = 9;
    int32 poke_stop_visits = 10;
    int32 number_of_pokeball_thrown = 11;
    int32 num_eggs_hatched = 12;
    int32 big_magikarp_caught = 13;
    int32 num_battle_attack_won = 14;
    int32 num_battle_attack_total = 15;
    int32 num_battle_defended_won = 16;
    int32 num_battle_training_won = 17;
    int32 num_battle_training_total = 18;
    int32 prestige_raised_total = 19;
    int32 prestige_dropped_total = 20;
    int32 num_pokemon_deployed = 21;
    repeated int32 num_pokemon_caught_by_type = 22;
    int32 small_rattata_caught = 23;
    double used_km_pool = 24;
    int64 last_km_refill_ms = 25;
    int32 num_raid_battle_won = 26;
    int32 num_raid_battle_total = 27;
    int32 num_legendary_battle_won = 28;
    int32 num_legendary_battle_total = 29;
    int32 num_berries_fed = 30;
    int64 total_defended_ms = 31;
    repeated HoloBadgeType event_badges = 32;
    float km_walked_past_active_day = 33;
    int32 num_challenge_quests_completed = 34;
    int32 num_trades = 35;
    int32 num_max_level_friends = 36;
    int64 trade_accumulated_distance_km = 37;
    int64 fitness_report_last_check_bucket = 38;
    PlayerCombatStatsProto combat_stats = 39;
    int32 num_npc_combats_won = 40;
    int32 num_npc_combats_total = 41;
    int32 num_photobomb_seen = 42;
    int32 num_pokemon_purified = 43;
    int32 num_grunts_defeated = 44;
    int32 num_best_buddies = 47;
}

// ref: Holoholo.Rpc.PoiGlobalSettingsProto
message PoiGlobalSettingsProto {
    bool is_enabled = 1;
    repeated string player_submission_type_enabled = 2;
}

// ref: Holoholo.Rpc.PokeBallAttributesProto
message PokeBallAttributesProto {
    HoloItemEffect item_effect = 1;
    float capture_multi = 2;
    float capture_multi_effect = 3;
    float item_effect_mod = 4;
}

// ref: Holoholo.Rpc.PokeCandyProto
message PokeCandyProto {
    fixed64 pokemon_id = 1;
    int32 candy_count = 2;
}

// ref: Holoholo.Rpc.PokecoinPurchaseDisplayGmtProto
message PokecoinPurchaseDisplayGmtProto {
    bool feature_enabled = 1;
}

// ref: Holoholo.Rpc.PokecoinPurchaseDisplaySettingsProto
message PokecoinPurchaseDisplaySettingsProto {
    bool feature_enabled = 1;
    repeated string enabled_countries = 2;
    repeated string enabled_currencies = 3;
    bool use_pokecoin_purchase_display_gmt = 4;
}

// ref: Holoholo.Rpc.PokecoinSectionProto
message PokecoinSectionProto {
    int32 coins_earned_today = 1;
    int32 max_coins_per_day = 2;
    string coins_quest_id = 3;
}

// ref: Holoholo.Rpc.PokedexEntryProto
message PokedexEntryProto {
    int32 pokedex_entry_number = 1;
    int32 times_encountered = 2;
    int32 times_captured = 3;
    int32 evolution_stone_pieces = 4;
    int32 evolution_stones = 5;
    repeated PokemonDisplayProto.Costume captured_costumes = 6;
    repeated PokemonDisplayProto.Form captured_forms = 7;
    repeated PokemonDisplayProto.Gender captured_genders = 8;
    bool captured_shiny = 9;
    repeated PokemonDisplayProto.Costume encountered_costumes = 10;
    repeated PokemonDisplayProto.Form encountered_forms = 11;
    repeated PokemonDisplayProto.Gender encountered_genders = 12;
    bool encountered_shiny = 13;
    int32 times_lucky_received = 14;
    int32 times_purified = 15;
}

// ref: Holoholo.Rpc.PokemonBulkUpgradeSettingsProto
message PokemonBulkUpgradeSettingsProto {
    bool enable_client_side_change = 1;
}

// ref: Holoholo.Rpc.PokemonCameraAttributesProto
message PokemonCameraAttributesProto {
    float disk_radius_m = 1;
    float cyl_radius_m = 2;
    float cyl_height_m = 3;
    float cyl_ground_m = 4;
    float shoulder_mode_scale = 5;
}

// ref: Holoholo.Rpc.PokemonCandyRewardProto
message PokemonCandyRewardProto {
    HoloPokemonId pokemon_id = 1;
    int32 amount = 2;
}

// ref: Holoholo.Rpc.PokemonCombatStatsProto
message PokemonCombatStatsProto {
    int32 num_won = 1;
    int32 num_total = 2;
}

// ref: Holoholo.Rpc.PokemonDisplayProto
message PokemonDisplayProto {
    // ref: Holoholo.Rpc.PokemonDisplayProto/Types/Alignment
    enum Alignment {
        ALIGNMENT_UNSET = 0;
        SHADOW = 1;
        PURIFIED = 2;
    }

    // ref: Holoholo.Rpc.PokemonDisplayProto/Types/Costume
    enum Costume {
        UNSET = 0;
        HOLIDAY_2016 = 1;
        ANNIVERSARY = 2;
        ONE_YEAR_ANNIVERSARY = 3;
        HALLOWEEN_2017 = 4;
        SUMMER_2018 = 5;
        FALL_2018 = 6;
        NOVEMBER_2018 = 7;
        WINTER_2018 = 8;
        FEB_2019 = 9;
        MAY_2019_NOEVOLVE = 10;
        JAN_2020_NOEVOLVE = 11;
        APRIL_2020_NOEVOLVE = 12;
        SAFARI_2020_NOEVOLVE = 13;
        SPRING_2020_NOEVOLVE = 14;
        SUMMER_2020_NOEVOLVE = 15;
        FALL_2020_NOEVOLVE = 16;
        WINTER_2020_NOEVOLVE = 17;
        NOT_FOR_RELEASE_ALPHA = 18;
        NOT_FOR_RELEASE_BETA = 19;
        NOT_FOR_RELEASE_GAMMA = 20;
        NOT_FOR_RELEASE_NOEVOLVE = 21;
        KANTO_2020_NOEVOLVE = 22;
        JOHTO_2020_NOEVOLVE = 23;
        HOENN_2020_NOEVOLVE = 24;
        SINNOH_2020_NOEVOLVE = 25;
    }

    // ref: Holoholo.Rpc.PokemonDisplayProto/Types/Form
    enum Form {
        FORM_UNSET = 0;
        UNOWN_A = 1;
        UNOWN_B = 2;
        UNOWN_C = 3;
        UNOWN_D = 4;
        UNOWN_E = 5;
        UNOWN_F = 6;
        UNOWN_G = 7;
        UNOWN_H = 8;
        UNOWN_I = 9;
        UNOWN_J = 10;
        UNOWN_K = 11;
        UNOWN_L = 12;
        UNOWN_M = 13;
        UNOWN_N = 14;
        UNOWN_O = 15;
        UNOWN_P = 16;
        UNOWN_Q = 17;
        UNOWN_R = 18;
        UNOWN_S = 19;
        UNOWN_T = 20;
        UNOWN_U = 21;
        UNOWN_V = 22;
        UNOWN_W = 23;
        UNOWN_X = 24;
        UNOWN_Y = 25;
        UNOWN_Z = 26;
        UNOWN_EXCLAMATION_POINT = 27;
        UNOWN_QUESTION_MARK = 28;
        CASTFORM_NORMAL = 29;
        CASTFORM_SUNNY = 30;
        CASTFORM_RAINY = 31;
        CASTFORM_SNOWY = 32;
        DEOXYS_NORMAL = 33;
        DEOXYS_ATTACK = 34;
        DEOXYS_DEFENSE = 35;
        DEOXYS_SPEED = 36;
        SPINDA_00 = 37;
        SPINDA_01 = 38;
        SPINDA_02 = 39;
        SPINDA_03 = 40;
        SPINDA_04 = 41;
        SPINDA_05 = 42;
        SPINDA_06 = 43;
        SPINDA_07 = 44;
        RATTATA_NORMAL = 45;
        RATTATA_ALOLA = 46;
        RATICATE_NORMAL = 47;
        RATICATE_ALOLA = 48;
        RAICHU_NORMAL = 49;
        RAICHU_ALOLA = 50;
        SANDSHREW_NORMAL = 51;
        SANDSHREW_ALOLA = 52;
        SANDSLASH_NORMAL = 53;
        SANDSLASH_ALOLA = 54;
        VULPIX_NORMAL = 55;
        VULPIX_ALOLA = 56;
        NINETALES_NORMAL = 57;
        NINETALES_ALOLA = 58;
        DIGLETT_NORMAL = 59;
        DIGLETT_ALOLA = 60;
        DUGTRIO_NORMAL = 61;
        DUGTRIO_ALOLA = 62;
        MEOWTH_NORMAL = 63;
        MEOWTH_ALOLA = 64;
        PERSIAN_NORMAL = 65;
        PERSIAN_ALOLA = 66;
        GEODUDE_NORMAL = 67;
        GEODUDE_ALOLA = 68;
        GRAVELER_NORMAL = 69;
        GRAVELER_ALOLA = 70;
        GOLEM_NORMAL = 71;
        GOLEM_ALOLA = 72;
        GRIMER_NORMAL = 73;
        GRIMER_ALOLA = 74;
        MUK_NORMAL = 75;
        MUK_ALOLA = 76;
        EXEGGUTOR_NORMAL = 77;
        EXEGGUTOR_ALOLA = 78;
        MAROWAK_NORMAL = 79;
        MAROWAK_ALOLA = 80;
        ROTOM_NORMAL = 81;
        ROTOM_FROST = 82;
        ROTOM_FAN = 83;
        ROTOM_MOW = 84;
        ROTOM_WASH = 85;
        ROTOM_HEAT = 86;
        WORMADAM_PLANT = 87;
        WORMADAM_SANDY = 88;
        WORMADAM_TRASH = 89;
        GIRATINA_ALTERED = 90;
        GIRATINA_ORIGIN = 91;
        SHAYMIN_SKY = 92;
        SHAYMIN_LAND = 93;
        CHERRIM_OVERCAST = 94;
        CHERRIM_SUNNY = 95;
        SHELLOS_WEST_SEA = 96;
        SHELLOS_EAST_SEA = 97;
        GASTRODON_WEST_SEA = 98;
        GASTRODON_EAST_SEA = 99;
        ARCEUS_NORMAL = 100;
        ARCEUS_FIGHTING = 101;
        ARCEUS_FLYING = 102;
        ARCEUS_POISON = 103;
        ARCEUS_GROUND = 104;
        ARCEUS_ROCK = 105;
        ARCEUS_BUG = 106;
        ARCEUS_GHOST = 107;
        ARCEUS_STEEL = 108;
        ARCEUS_FIRE = 109;
        ARCEUS_WATER = 110;
        ARCEUS_GRASS = 111;
        ARCEUS_ELECTRIC = 112;
        ARCEUS_PSYCHIC = 113;
        ARCEUS_ICE = 114;
        ARCEUS_DRAGON = 115;
        ARCEUS_DARK = 116;
        ARCEUS_FAIRY = 117;
        BURMY_PLANT = 118;
        BURMY_SANDY = 119;
        BURMY_TRASH = 120;
        SPINDA_08 = 121;
        SPINDA_09 = 122;
        SPINDA_10 = 123;
        SPINDA_11 = 124;
        SPINDA_12 = 125;
        SPINDA_13 = 126;
        SPINDA_14 = 127;
        SPINDA_15 = 128;
        SPINDA_16 = 129;
        SPINDA_17 = 130;
        SPINDA_18 = 131;
        SPINDA_19 = 132;
        MEWTWO_A = 133;
        MEWTWO_NORMAL = 135;
        BASCULIN_RED_STRIPED = 136;
        BASCULIN_BLUE_STRIPED = 137;
        DARMANITAN_STANDARD = 138;
        DARMANITAN_ZEN = 139;
        TORNADUS_INCARNATE = 140;
        TORNADUS_THERIAN = 141;
        THUNDURUS_INCARNATE = 142;
        THUNDURUS_THERIAN = 143;
        LANDORUS_INCARNATE = 144;
        LANDORUS_THERIAN = 145;
        KYUREM_NORMAL = 146;
        KYUREM_BLACK = 147;
        KYUREM_WHITE = 148;
        KELDEO_ORDINARY = 149;
        KELDEO_RESOLUTE = 150;
        MELOETTA_ARIA = 151;
        MELOETTA_PIROUETTE = 152;
        RATTATA_SHADOW = 153;
        RATTATA_PURIFIED = 154;
        RATICATE_SHADOW = 155;
        RATICATE_PURIFIED = 156;
        ZUBAT_NORMAL = 157;
        ZUBAT_SHADOW = 158;
        ZUBAT_PURIFIED = 159;
        GOLBAT_NORMAL = 160;
        GOLBAT_SHADOW = 161;
        GOLBAT_PURIFIED = 162;
        BULBASAUR_NORMAL = 163;
        BULBASAUR_SHADOW = 164;
        BULBASAUR_PURIFIED = 165;
        IVYSAUR_NORMAL = 166;
        IVYSAUR_SHADOW = 167;
        IVYSAUR_PURIFIED = 168;
        VENUSAUR_NORMAL = 169;
        VENUSAUR_SHADOW = 170;
        VENUSAUR_PURIFIED = 171;
        CHARMANDER_NORMAL = 172;
        CHARMANDER_SHADOW = 173;
        CHARMANDER_PURIFIED = 174;
        CHARMELEON_NORMAL = 175;
        CHARMELEON_SHADOW = 176;
        CHARMELEON_PURIFIED = 177;
        CHARIZARD_NORMAL = 178;
        CHARIZARD_SHADOW = 179;
        CHARIZARD_PURIFIED = 180;
        SQUIRTLE_NORMAL = 181;
        SQUIRTLE_SHADOW = 182;
        SQUIRTLE_PURIFIED = 183;
        WARTORTLE_NORMAL = 184;
        WARTORTLE_SHADOW = 185;
        WARTORTLE_PURIFIED = 186;
        BLASTOISE_NORMAL = 187;
        BLASTOISE_SHADOW = 188;
        BLASTOISE_PURIFIED = 189;
        DRATINI_NORMAL = 190;
        DRATINI_SHADOW = 191;
        DRATINI_PURIFIED = 192;
        DRAGONAIR_NORMAL = 193;
        DRAGONAIR_SHADOW = 194;
        DRAGONAIR_PURIFIED = 195;
        DRAGONITE_NORMAL = 196;
        DRAGONITE_SHADOW = 197;
        DRAGONITE_PURIFIED = 198;
        SNORLAX_NORMAL = 199;
        SNORLAX_SHADOW = 200;
        SNORLAX_PURIFIED = 201;
        CROBAT_NORMAL = 202;
        CROBAT_SHADOW = 203;
        CROBAT_PURIFIED = 204;
        MUDKIP_NORMAL = 205;
        MUDKIP_SHADOW = 206;
        MUDKIP_PURIFIED = 207;
        MARSHTOMP_NORMAL = 208;
        MARSHTOMP_SHADOW = 209;
        MARSHTOMP_PURIFIED = 210;
        SWAMPERT_NORMAL = 211;
        SWAMPERT_SHADOW = 212;
        SWAMPERT_PURIFIED = 213;
        DROWZEE_NORMAL = 214;
        DROWZEE_SHADOW = 215;
        DROWZEE_PURIFIED = 216;
        HYPNO_NORMAL = 217;
        HYPNO_SHADOW = 218;
        HYPNO_PURIFIED = 219;
        GRIMER_SHADOW = 220;
        GRIMER_PURIFIED = 221;
        MUK_SHADOW = 222;
        MUK_PURIFIED = 223;
        CUBONE_NORMAL = 224;
        CUBONE_SHADOW = 225;
        CUBONE_PURIFIED = 226;
        MAROWAK_SHADOW = 227;
        MAROWAK_PURIFIED = 228;
        HOUNDOUR_NORMAL = 229;
        HOUNDOUR_SHADOW = 230;
        HOUNDOUR_PURIFIED = 231;
        HOUNDOOM_NORMAL = 232;
        HOUNDOOM_SHADOW = 233;
        HOUNDOOM_PURIFIED = 234;
        POLIWAG_NORMAL = 235;
        POLIWAG_SHADOW = 236;
        POLIWAG_PURIFIED = 237;
        POLIWHIRL_NORMAL = 238;
        POLIWHIRL_SHADOW = 239;
        POLIWHIRL_PURIFIED = 240;
        POLIWRATH_NORMAL = 241;
        POLIWRATH_SHADOW = 242;
        POLIWRATH_PURIFIED = 243;
        POLITOED_NORMAL = 244;
        POLITOED_SHADOW = 245;
        POLITOED_PURIFIED = 246;
        SCYTHER_NORMAL = 247;
        SCYTHER_SHADOW = 248;
        SCYTHER_PURIFIED = 249;
        SCIZOR_NORMAL = 250;
        SCIZOR_SHADOW = 251;
        SCIZOR_PURIFIED = 252;
        MAGIKARP_NORMAL = 253;
        MAGIKARP_SHADOW = 254;
        MAGIKARP_PURIFIED = 255;
        GYARADOS_NORMAL = 256;
        GYARADOS_SHADOW = 257;
        GYARADOS_PURIFIED = 258;
        VENONAT_NORMAL = 259;
        VENONAT_SHADOW = 260;
        VENONAT_PURIFIED = 261;
        VENOMOTH_NORMAL = 262;
        VENOMOTH_SHADOW = 263;
        VENOMOTH_PURIFIED = 264;
        ODDISH_NORMAL = 265;
        ODDISH_SHADOW = 266;
        ODDISH_PURIFIED = 267;
        GLOOM_NORMAL = 268;
        GLOOM_SHADOW = 269;
        GLOOM_PURIFIED = 270;
        VILEPLUME_NORMAL = 271;
        VILEPLUME_SHADOW = 272;
        VILEPLUME_PURIFIED = 273;
        BELLOSSOM_NORMAL = 274;
        BELLOSSOM_SHADOW = 275;
        BELLOSSOM_PURIFIED = 276;
        HITMONCHAN_NORMAL = 277;
        HITMONCHAN_SHADOW = 278;
        HITMONCHAN_PURIFIED = 279;
        GROWLITHE_NORMAL = 280;
        GROWLITHE_SHADOW = 281;
        GROWLITHE_PURIFIED = 282;
        ARCANINE_NORMAL = 283;
        ARCANINE_SHADOW = 284;
        ARCANINE_PURIFIED = 285;
        PSYDUCK_NORMAL = 286;
        PSYDUCK_SHADOW = 287;
        PSYDUCK_PURIFIED = 288;
        GOLDUCK_NORMAL = 289;
        GOLDUCK_SHADOW = 290;
        GOLDUCK_PURIFIED = 291;
        RALTS_NORMAL = 292;
        RALTS_SHADOW = 293;
        RALTS_PURIFIED = 294;
        KIRLIA_NORMAL = 295;
        KIRLIA_SHADOW = 296;
        KIRLIA_PURIFIED = 297;
        GARDEVOIR_NORMAL = 298;
        GARDEVOIR_SHADOW = 299;
        GARDEVOIR_PURIFIED = 300;
        GALLADE_NORMAL = 301;
        GALLADE_SHADOW = 302;
        GALLADE_PURIFIED = 303;
        ABRA_NORMAL = 304;
        ABRA_SHADOW = 305;
        ABRA_PURIFIED = 306;
        KADABRA_NORMAL = 307;
        KADABRA_SHADOW = 308;
        KADABRA_PURIFIED = 309;
        ALAKAZAM_NORMAL = 310;
        ALAKAZAM_SHADOW = 311;
        ALAKAZAM_PURIFIED = 312;
        LARVITAR_NORMAL = 313;
        LARVITAR_SHADOW = 314;
        LARVITAR_PURIFIED = 315;
        PUPITAR_NORMAL = 316;
        PUPITAR_SHADOW = 317;
        PUPITAR_PURIFIED = 318;
        TYRANITAR_NORMAL = 319;
        TYRANITAR_SHADOW = 320;
        TYRANITAR_PURIFIED = 321;
        LAPRAS_NORMAL = 322;
        LAPRAS_SHADOW = 323;
        LAPRAS_PURIFIED = 324;
        DEERLING_SPRING = 585;
        DEERLING_SUMMER = 586;
        DEERLING_AUTUMN = 587;
        DEERLING_WINTER = 588;
        SAWSBUCK_SPRING = 589;
        SAWSBUCK_SUMMER = 590;
        SAWSBUCK_AUTUMN = 591;
        SAWSBUCK_WINTER = 592;
        GENESECT_NORMAL = 593;
        GENESECT_SHOCK = 594;
        GENESECT_BURN = 595;
        GENESECT_CHILL = 596;
        GENESECT_DOUSE = 597;
        PIKACHU_NORMAL = 598;
        WURMPLE_NORMAL = 600;
        WOBBUFFET_NORMAL = 602;
        CACNEA_NORMAL = 610;
        CACNEA_SHADOW = 611;
        CACNEA_PURIFIED = 612;
        CACTURNE_NORMAL = 613;
        CACTURNE_SHADOW = 614;
        CACTURNE_PURIFIED = 615;
        WEEDLE_NORMAL = 616;
        WEEDLE_SHADOW = 617;
        WEEDLE_PURIFIED = 618;
        KAKUNA_NORMAL = 619;
        KAKUNA_SHADOW = 620;
        KAKUNA_PURIFIED = 621;
        BEEDRILL_NORMAL = 622;
        BEEDRILL_SHADOW = 623;
        BEEDRILL_PURIFIED = 624;
        SEEDOT_NORMAL = 625;
        SEEDOT_SHADOW = 626;
        SEEDOT_PURIFIED = 627;
        NUZLEAF_NORMAL = 628;
        NUZLEAF_SHADOW = 629;
        NUZLEAF_PURIFIED = 630;
        SHIFTRY_NORMAL = 631;
        SHIFTRY_SHADOW = 632;
        SHIFTRY_PURIFIED = 633;
        MAGMAR_NORMAL = 634;
        MAGMAR_SHADOW = 635;
        MAGMAR_PURIFIED = 636;
        MAGMORTAR_NORMAL = 637;
        MAGMORTAR_SHADOW = 638;
        MAGMORTAR_PURIFIED = 639;
        ELECTABUZZ_NORMAL = 640;
        ELECTABUZZ_SHADOW = 641;
        ELECTABUZZ_PURIFIED = 642;
        ELECTIVIRE_NORMAL = 643;
        ELECTIVIRE_SHADOW = 644;
        ELECTIVIRE_PURIFIED = 645;
        MAREEP_NORMAL = 646;
        MAREEP_SHADOW = 647;
        MAREEP_PURIFIED = 648;
        FLAAFFY_NORMAL = 649;
        FLAAFFY_SHADOW = 650;
        FLAAFFY_PURIFIED = 651;
        AMPHAROS_NORMAL = 652;
        AMPHAROS_SHADOW = 653;
        AMPHAROS_PURIFIED = 654;
        MAGNEMITE_NORMAL = 655;
        MAGNEMITE_SHADOW = 656;
        MAGNEMITE_PURIFIED = 657;
        MAGNETON_NORMAL = 658;
        MAGNETON_SHADOW = 659;
        MAGNETON_PURIFIED = 660;
        MAGNEZONE_NORMAL = 661;
        MAGNEZONE_SHADOW = 662;
        MAGNEZONE_PURIFIED = 663;
        BELLSPROUT_NORMAL = 664;
        BELLSPROUT_SHADOW = 665;
        BELLSPROUT_PURIFIED = 666;
        WEEPINBELL_NORMAL = 667;
        WEEPINBELL_SHADOW = 668;
        WEEPINBELL_PURIFIED = 669;
        VICTREEBEL_NORMAL = 670;
        VICTREEBEL_SHADOW = 671;
        VICTREEBEL_PURIFIED = 672;
        SANDSHREW_SHADOW = 673;
        SANDSHREW_PURIFIED = 674;
        SANDSLASH_SHADOW = 675;
        SANDSLASH_PURIFIED = 676;
        PORYGON_NORMAL = 677;
        PORYGON_SHADOW = 678;
        PORYGON_PURIFIED = 679;
        PORYGON2_NORMAL = 680;
        PORYGON2_SHADOW = 681;
        PORYGON2_PURIFIED = 682;
        PORYGON_Z_NORMAL = 683;
        PORYGON_Z_SHADOW = 684;
        PORYGON_Z_PURIFIED = 685;
        WOBBUFFET_SHADOW = 686;
        WOBBUFFET_PURIFIED = 687;
        TURTWIG_NORMAL = 688;
        TURTWIG_SHADOW = 689;
        TURTWIG_PURIFIED = 690;
        GROTLE_NORMAL = 691;
        GROTLE_SHADOW = 692;
        GROTLE_PURIFIED = 693;
        TORTERRA_NORMAL = 694;
        TORTERRA_SHADOW = 695;
        TORTERRA_PURIFIED = 696;
        EKANS_NORMAL = 697;
        EKANS_SHADOW = 698;
        EKANS_PURIFIED = 699;
        ARBOK_NORMAL = 700;
        ARBOK_SHADOW = 701;
        ARBOK_PURIFIED = 702;
        KOFFING_NORMAL = 703;
        KOFFING_SHADOW = 704;
        KOFFING_PURIFIED = 705;
        WEEZING_NORMAL = 706;
        WEEZING_SHADOW = 707;
        WEEZING_PURIFIED = 708;
        MEOWTH_SHADOW = 709;
        MEOWTH_PURIFIED = 710;
        PERSIAN_SHADOW = 711;
        PERSIAN_PURIFIED = 712;
        HITMONLEE_NORMAL = 713;
        HITMONLEE_SHADOW = 714;
        HITMONLEE_PURIFIED = 715;
        ARTICUNO_NORMAL = 716;
        ARTICUNO_SHADOW = 717;
        ARTICUNO_PURIFIED = 718;
        MISDREAVUS_NORMAL = 719;
        MISDREAVUS_SHADOW = 720;
        MISDREAVUS_PURIFIED = 721;
        MISMAGIUS_NORMAL = 722;
        MISMAGIUS_SHADOW = 723;
        MISMAGIUS_PURIFIED = 724;
        VULPIX_SHADOW = 725;
        VULPIX_PURIFIED = 726;
        NINETALES_SHADOW = 727;
        NINETALES_PURIFIED = 728;
        EXEGGCUTE_NORMAL = 729;
        EXEGGCUTE_SHADOW = 730;
        EXEGGCUTE_PURIFIED = 731;
        EXEGGUTOR_SHADOW = 732;
        EXEGGUTOR_PURIFIED = 733;
        CARVANHA_NORMAL = 734;
        CARVANHA_SHADOW = 735;
        CARVANHA_PURIFIED = 736;
        SHARPEDO_NORMAL = 737;
        SHARPEDO_SHADOW = 738;
        SHARPEDO_PURIFIED = 739;
        OMANYTE_NORMAL = 740;
        OMANYTE_SHADOW = 741;
        OMANYTE_PURIFIED = 742;
        OMASTAR_NORMAL = 743;
        OMASTAR_SHADOW = 744;
        OMASTAR_PURIFIED = 745;
        TRAPINCH_NORMAL = 746;
        TRAPINCH_SHADOW = 747;
        TRAPINCH_PURIFIED = 748;
        VIBRAVA_NORMAL = 749;
        VIBRAVA_SHADOW = 750;
        VIBRAVA_PURIFIED = 751;
        FLYGON_NORMAL = 752;
        FLYGON_SHADOW = 753;
        FLYGON_PURIFIED = 754;
        BAGON_NORMAL = 755;
        BAGON_SHADOW = 756;
        BAGON_PURIFIED = 757;
        SHELGON_NORMAL = 758;
        SHELGON_SHADOW = 759;
        SHELGON_PURIFIED = 760;
        SALAMENCE_NORMAL = 761;
        SALAMENCE_SHADOW = 762;
        SALAMENCE_PURIFIED = 763;
        BELDUM_NORMAL = 764;
        BELDUM_SHADOW = 765;
        BELDUM_PURIFIED = 766;
        METANG_NORMAL = 767;
        METANG_SHADOW = 768;
        METANG_PURIFIED = 769;
        METAGROSS_NORMAL = 770;
        METAGROSS_SHADOW = 771;
        METAGROSS_PURIFIED = 772;
        ZAPDOS_NORMAL = 773;
        ZAPDOS_SHADOW = 774;
        ZAPDOS_PURIFIED = 775;
        NIDORAN_NORMAL = 776;
        NIDORAN_SHADOW = 777;
        NIDORAN_PURIFIED = 778;
        NIDORINA_NORMAL = 779;
        NIDORINA_SHADOW = 780;
        NIDORINA_PURIFIED = 781;
        NIDOQUEEN_NORMAL = 782;
        NIDOQUEEN_SHADOW = 783;
        NIDOQUEEN_PURIFIED = 784;
        NIDORINO_NORMAL = 785;
        NIDORINO_SHADOW = 786;
        NIDORINO_PURIFIED = 787;
        NIDOKING_NORMAL = 788;
        NIDOKING_SHADOW = 789;
        NIDOKING_PURIFIED = 790;
        STUNKY_NORMAL = 791;
        STUNKY_SHADOW = 792;
        STUNKY_PURIFIED = 793;
        SKUNTANK_NORMAL = 794;
        SKUNTANK_SHADOW = 795;
        SKUNTANK_PURIFIED = 796;
        SNEASEL_NORMAL = 797;
        SNEASEL_SHADOW = 798;
        SNEASEL_PURIFIED = 799;
        WEAVILE_NORMAL = 800;
        WEAVILE_SHADOW = 801;
        WEAVILE_PURIFIED = 802;
        GLIGAR_NORMAL = 803;
        GLIGAR_SHADOW = 804;
        GLIGAR_PURIFIED = 805;
        GLISCOR_NORMAL = 806;
        GLISCOR_SHADOW = 807;
        GLISCOR_PURIFIED = 808;
        MACHOP_NORMAL = 809;
        MACHOP_SHADOW = 810;
        MACHOP_PURIFIED = 811;
        MACHOKE_NORMAL = 812;
        MACHOKE_SHADOW = 813;
        MACHOKE_PURIFIED = 814;
        MACHAMP_NORMAL = 815;
        MACHAMP_SHADOW = 816;
        MACHAMP_PURIFIED = 817;
        CHIMCHAR_NORMAL = 818;
        CHIMCHAR_SHADOW = 819;
        CHIMCHAR_PURIFIED = 820;
        MONFERNO_NORMAL = 821;
        MONFERNO_SHADOW = 822;
        MONFERNO_PURIFIED = 823;
        INFERNAPE_NORMAL = 824;
        INFERNAPE_SHADOW = 825;
        INFERNAPE_PURIFIED = 826;
        SHUCKLE_NORMAL = 827;
        SHUCKLE_SHADOW = 828;
        SHUCKLE_PURIFIED = 829;
        ABSOL_NORMAL = 830;
        ABSOL_SHADOW = 831;
        ABSOL_PURIFIED = 832;
        MAWILE_NORMAL = 833;
        MAWILE_SHADOW = 834;
        MAWILE_PURIFIED = 835;
        MOLTRES_NORMAL = 836;
        MOLTRES_SHADOW = 837;
        MOLTRES_PURIFIED = 838;
        KANGASKHAN_NORMAL = 839;
        KANGASKHAN_SHADOW = 840;
        KANGASKHAN_PURIFIED = 841;
        DIGLETT_SHADOW = 842;
        DIGLETT_PURIFIED = 843;
        DUGTRIO_SHADOW = 844;
        DUGTRIO_PURIFIED = 845;
        RHYHORN_NORMAL = 846;
        RHYHORN_SHADOW = 847;
        RHYHORN_PURIFIED = 848;
        RHYDON_NORMAL = 849;
        RHYDON_SHADOW = 850;
        RHYDON_PURIFIED = 851;
        RHYPERIOR_NORMAL = 852;
        RHYPERIOR_SHADOW = 853;
        RHYPERIOR_PURIFIED = 854;
        MURKROW_NORMAL = 855;
        MURKROW_SHADOW = 856;
        MURKROW_PURIFIED = 857;
        HONCHKROW_NORMAL = 858;
        HONCHKROW_SHADOW = 859;
        HONCHKROW_PURIFIED = 860;
        GIBLE_NORMAL = 861;
        GIBLE_SHADOW = 862;
        GIBLE_PURIFIED = 863;
        GABITE_NORMAL = 864;
        GABITE_SHADOW = 865;
        GABITE_PURIFIED = 866;
        GARCHOMP_NORMAL = 867;
        GARCHOMP_SHADOW = 868;
        GARCHOMP_PURIFIED = 869;
        KRABBY_NORMAL = 870;
        KRABBY_SHADOW = 871;
        KRABBY_PURIFIED = 872;
        KINGLER_NORMAL = 873;
        KINGLER_SHADOW = 874;
        KINGLER_PURIFIED = 875;
        SHELLDER_NORMAL = 876;
        SHELLDER_SHADOW = 877;
        SHELLDER_PURIFIED = 878;
        CLOYSTER_NORMAL = 879;
        CLOYSTER_SHADOW = 880;
        CLOYSTER_PURIFIED = 881;
        GEODUDE_SHADOW = 882;
        GEODUDE_PURIFIED = 883;
        GRAVELER_SHADOW = 884;
        GRAVELER_PURIFIED = 885;
        GOLEM_SHADOW = 886;
        GOLEM_PURIFIED = 887;
        HIPPOPOTAS_NORMAL = 888;
        HIPPOPOTAS_SHADOW = 889;
        HIPPOPOTAS_PURIFIED = 890;
        HIPPOWDON_NORMAL = 891;
        HIPPOWDON_SHADOW = 892;
        HIPPOWDON_PURIFIED = 893;
        PIKACHU_FALL_2019 = 894;
        SQUIRTLE_FALL_2019 = 895;
        CHARMANDER_FALL_2019 = 896;
        BULBASAUR_FALL_2019 = 897;
        PINSIR_NORMAL = 898;
        PINSIR_SHADOW = 899;
        PINSIR_PURIFIED = 900;
        PIKACHU_VS_2019 = 901;
        ONIX_NORMAL = 902;
        ONIX_SHADOW = 903;
        ONIX_PURIFIED = 904;
        STEELIX_NORMAL = 905;
        STEELIX_SHADOW = 906;
        STEELIX_PURIFIED = 907;
        SHUPPET_NORMAL = 908;
        SHUPPET_SHADOW = 909;
        SHUPPET_PURIFIED = 910;
        BANETTE_NORMAL = 911;
        BANETTE_SHADOW = 912;
        BANETTE_PURIFIED = 913;
        DUSKULL_NORMAL = 914;
        DUSKULL_SHADOW = 915;
        DUSKULL_PURIFIED = 916;
        DUSCLOPS_NORMAL = 917;
        DUSCLOPS_SHADOW = 918;
        DUSCLOPS_PURIFIED = 919;
        DUSKNOIR_NORMAL = 920;
        DUSKNOIR_SHADOW = 921;
        DUSKNOIR_PURIFIED = 922;
        SABLEYE_NORMAL = 923;
        SABLEYE_SHADOW = 924;
        SABLEYE_PURIFIED = 925;
        SNORUNT_NORMAL = 926;
        SNORUNT_SHADOW = 927;
        SNORUNT_PURIFIED = 928;
        GLALIE_NORMAL = 929;
        GLALIE_SHADOW = 930;
        GLALIE_PURIFIED = 931;
        SNOVER_NORMAL = 932;
        SNOVER_SHADOW = 933;
        SNOVER_PURIFIED = 934;
        ABOMASNOW_NORMAL = 935;
        ABOMASNOW_SHADOW = 936;
        ABOMASNOW_PURIFIED = 937;
        DELIBIRD_NORMAL = 938;
        DELIBIRD_SHADOW = 939;
        DELIBIRD_PURIFIED = 940;
        STANTLER_NORMAL = 941;
        STANTLER_SHADOW = 942;
        STANTLER_PURIFIED = 943;
        WEEZING_GALARIAN = 944;
        ZIGZAGOON_NORMAL = 945;
        ZIGZAGOON_GALARIAN = 946;
        LINOONE_NORMAL = 947;
        LINOONE_GALARIAN = 948;
        PIKACHU_COPY_2019 = 949;
        VENUSAUR_COPY_2019 = 950;
        CHARIZARD_COPY_2019 = 951;
        BLASTOISE_COPY_2019 = 952;
        CATERPIE_NORMAL = 953;
        CATERPIE_SHADOW = 954;
        CATERPIE_PURIFIED = 955;
        METAPOD_NORMAL = 956;
        METAPOD_SHADOW = 957;
        METAPOD_PURIFIED = 958;
        BUTTERFREE_NORMAL = 959;
        BUTTERFREE_SHADOW = 960;
        BUTTERFREE_PURIFIED = 961;
        PIDGEY_NORMAL = 962;
        PIDGEY_SHADOW = 963;
        PIDGEY_PURIFIED = 964;
        PIDGEOTTO_NORMAL = 965;
        PIDGEOTTO_SHADOW = 966;
        PIDGEOTTO_PURIFIED = 967;
        PIDGEOT_NORMAL = 968;
        PIDGEOT_SHADOW = 969;
        PIDGEOT_PURIFIED = 970;
        SPEAROW_NORMAL = 971;
        SPEAROW_SHADOW = 972;
        SPEAROW_PURIFIED = 973;
        FEAROW_NORMAL = 974;
        FEAROW_SHADOW = 975;
        FEAROW_PURIFIED = 976;
        PIKACHU_SHADOW = 977;
        PIKACHU_PURIFIED = 978;
        RAICHU_SHADOW = 979;
        RAICHU_PURIFIED = 980;
        CLEFAIRY_NORMAL = 981;
        CLEFAIRY_SHADOW = 982;
        CLEFAIRY_PURIFIED = 983;
        CLEFABLE_NORMAL = 984;
        CLEFABLE_SHADOW = 985;
        CLEFABLE_PURIFIED = 986;
        JIGGLYPUFF_NORMAL = 987;
        JIGGLYPUFF_SHADOW = 988;
        JIGGLYPUFF_PURIFIED = 989;
        WIGGLYTUFF_NORMAL = 990;
        WIGGLYTUFF_SHADOW = 991;
        WIGGLYTUFF_PURIFIED = 992;
        PARAS_NORMAL = 993;
        PARAS_SHADOW = 994;
        PARAS_PURIFIED = 995;
        PARASECT_NORMAL = 996;
        PARASECT_SHADOW = 997;
        PARASECT_PURIFIED = 998;
        MANKEY_NORMAL = 999;
        MANKEY_SHADOW = 1000;
        MANKEY_PURIFIED = 1001;
        PRIMEAPE_NORMAL = 1002;
        PRIMEAPE_SHADOW = 1003;
        PRIMEAPE_PURIFIED = 1004;
        TENTACOOL_NORMAL = 1005;
        TENTACOOL_SHADOW = 1006;
        TENTACOOL_PURIFIED = 1007;
        TENTACRUEL_NORMAL = 1008;
        TENTACRUEL_SHADOW = 1009;
        TENTACRUEL_PURIFIED = 1010;
        PONYTA_NORMAL = 1011;
        PONYTA_SHADOW = 1012;
        PONYTA_PURIFIED = 1013;
        RAPIDASH_NORMAL = 1014;
        RAPIDASH_SHADOW = 1015;
        RAPIDASH_PURIFIED = 1016;
        SLOWPOKE_NORMAL = 1017;
        SLOWPOKE_SHADOW = 1018;
        SLOWPOKE_PURIFIED = 1019;
        SLOWBRO_NORMAL = 1020;
        SLOWBRO_SHADOW = 1021;
        SLOWBRO_PURIFIED = 1022;
        FARFETCHD_NORMAL = 1023;
        FARFETCHD_SHADOW = 1024;
        FARFETCHD_PURIFIED = 1025;
        DODUO_NORMAL = 1026;
        DODUO_SHADOW = 1027;
        DODUO_PURIFIED = 1028;
        DODRIO_NORMAL = 1029;
        DODRIO_SHADOW = 1030;
        DODRIO_PURIFIED = 1031;
        SEEL_NORMAL = 1032;
        SEEL_SHADOW = 1033;
        SEEL_PURIFIED = 1034;
        DEWGONG_NORMAL = 1035;
        DEWGONG_SHADOW = 1036;
        DEWGONG_PURIFIED = 1037;
        GASTLY_NORMAL = 1038;
        GASTLY_SHADOW = 1039;
        GASTLY_PURIFIED = 1040;
        HAUNTER_NORMAL = 1041;
        HAUNTER_SHADOW = 1042;
        HAUNTER_PURIFIED = 1043;
        GENGAR_NORMAL = 1044;
        GENGAR_SHADOW = 1045;
        GENGAR_PURIFIED = 1046;
        VOLTORB_NORMAL = 1047;
        VOLTORB_SHADOW = 1048;
        VOLTORB_PURIFIED = 1049;
        ELECTRODE_NORMAL = 1050;
        ELECTRODE_SHADOW = 1051;
        ELECTRODE_PURIFIED = 1052;
        LICKITUNG_NORMAL = 1053;
        LICKITUNG_SHADOW = 1054;
        LICKITUNG_PURIFIED = 1055;
        CHANSEY_NORMAL = 1056;
        CHANSEY_SHADOW = 1057;
        CHANSEY_PURIFIED = 1058;
        TANGELA_NORMAL = 1059;
        TANGELA_SHADOW = 1060;
        TANGELA_PURIFIED = 1061;
        HORSEA_NORMAL = 1062;
        HORSEA_SHADOW = 1063;
        HORSEA_PURIFIED = 1064;
        SEADRA_NORMAL = 1065;
        SEADRA_SHADOW = 1066;
        SEADRA_PURIFIED = 1067;
        GOLDEEN_NORMAL = 1068;
        GOLDEEN_SHADOW = 1069;
        GOLDEEN_PURIFIED = 1070;
        SEAKING_NORMAL = 1071;
        SEAKING_SHADOW = 1072;
        SEAKING_PURIFIED = 1073;
        STARYU_NORMAL = 1074;
        STARYU_SHADOW = 1075;
        STARYU_PURIFIED = 1076;
        STARMIE_NORMAL = 1077;
        STARMIE_SHADOW = 1078;
        STARMIE_PURIFIED = 1079;
        MR_MIME_NORMAL = 1080;
        MR_MIME_SHADOW = 1081;
        MR_MIME_PURIFIED = 1082;
        JYNX_NORMAL = 1083;
        JYNX_SHADOW = 1084;
        JYNX_PURIFIED = 1085;
        TAUROS_NORMAL = 1086;
        TAUROS_SHADOW = 1087;
        TAUROS_PURIFIED = 1088;
        DITTO_NORMAL = 1089;
        DITTO_SHADOW = 1090;
        DITTO_PURIFIED = 1091;
        EEVEE_NORMAL = 1092;
        EEVEE_SHADOW = 1093;
        EEVEE_PURIFIED = 1094;
        VAPOREON_NORMAL = 1095;
        VAPOREON_SHADOW = 1096;
        VAPOREON_PURIFIED = 1097;
        JOLTEON_NORMAL = 1098;
        JOLTEON_SHADOW = 1099;
        JOLTEON_PURIFIED = 1100;
        FLAREON_NORMAL = 1101;
        FLAREON_SHADOW = 1102;
        FLAREON_PURIFIED = 1103;
        KABUTO_NORMAL = 1104;
        KABUTO_SHADOW = 1105;
        KABUTO_PURIFIED = 1106;
        KABUTOPS_NORMAL = 1107;
        KABUTOPS_SHADOW = 1108;
        KABUTOPS_PURIFIED = 1109;
        AERODACTYL_NORMAL = 1110;
        AERODACTYL_SHADOW = 1111;
        AERODACTYL_PURIFIED = 1112;
        MEWTWO_SHADOW = 1113;
        MEWTWO_PURIFIED = 1114;
        MEW_NORMAL = 1115;
        MEW_SHADOW = 1116;
        MEW_PURIFIED = 1117;
        CHIKORITA_NORMAL = 1118;
        CHIKORITA_SHADOW = 1119;
        CHIKORITA_PURIFIED = 1120;
        BAYLEEF_NORMAL = 1121;
        BAYLEEF_SHADOW = 1122;
        BAYLEEF_PURIFIED = 1123;
        MEGANIUM_NORMAL = 1124;
        MEGANIUM_SHADOW = 1125;
        MEGANIUM_PURIFIED = 1126;
        CYNDAQUIL_NORMAL = 1127;
        CYNDAQUIL_SHADOW = 1128;
        CYNDAQUIL_PURIFIED = 1129;
        QUILAVA_NORMAL = 1130;
        QUILAVA_SHADOW = 1131;
        QUILAVA_PURIFIED = 1132;
        TYPHLOSION_NORMAL = 1133;
        TYPHLOSION_SHADOW = 1134;
        TYPHLOSION_PURIFIED = 1135;
        TOTODILE_NORMAL = 1136;
        TOTODILE_SHADOW = 1137;
        TOTODILE_PURIFIED = 1138;
        CROCONAW_NORMAL = 1139;
        CROCONAW_SHADOW = 1140;
        CROCONAW_PURIFIED = 1141;
        FERALIGATR_NORMAL = 1142;
        FERALIGATR_SHADOW = 1143;
        FERALIGATR_PURIFIED = 1144;
        SENTRET_NORMAL = 1145;
        SENTRET_SHADOW = 1146;
        SENTRET_PURIFIED = 1147;
        FURRET_NORMAL = 1148;
        FURRET_SHADOW = 1149;
        FURRET_PURIFIED = 1150;
        HOOTHOOT_NORMAL = 1151;
        HOOTHOOT_SHADOW = 1152;
        HOOTHOOT_PURIFIED = 1153;
        NOCTOWL_NORMAL = 1154;
        NOCTOWL_SHADOW = 1155;
        NOCTOWL_PURIFIED = 1156;
        LEDYBA_NORMAL = 1157;
        LEDYBA_SHADOW = 1158;
        LEDYBA_PURIFIED = 1159;
        LEDIAN_NORMAL = 1160;
        LEDIAN_SHADOW = 1161;
        LEDIAN_PURIFIED = 1162;
        SPINARAK_NORMAL = 1163;
        SPINARAK_SHADOW = 1164;
        SPINARAK_PURIFIED = 1165;
        ARIADOS_NORMAL = 1166;
        ARIADOS_SHADOW = 1167;
        ARIADOS_PURIFIED = 1168;
        CHINCHOU_NORMAL = 1169;
        CHINCHOU_SHADOW = 1170;
        CHINCHOU_PURIFIED = 1171;
        LANTURN_NORMAL = 1172;
        LANTURN_SHADOW = 1173;
        LANTURN_PURIFIED = 1174;
        PICHU_NORMAL = 1175;
        PICHU_SHADOW = 1176;
        PICHU_PURIFIED = 1177;
        CLEFFA_NORMAL = 1178;
        CLEFFA_SHADOW = 1179;
        CLEFFA_PURIFIED = 1180;
        IGGLYBUFF_NORMAL = 1181;
        IGGLYBUFF_SHADOW = 1182;
        IGGLYBUFF_PURIFIED = 1183;
        TOGEPI_NORMAL = 1184;
        TOGEPI_SHADOW = 1185;
        TOGEPI_PURIFIED = 1186;
        TOGETIC_NORMAL = 1187;
        TOGETIC_SHADOW = 1188;
        TOGETIC_PURIFIED = 1189;
        NATU_NORMAL = 1190;
        NATU_SHADOW = 1191;
        NATU_PURIFIED = 1192;
        XATU_NORMAL = 1193;
        XATU_SHADOW = 1194;
        XATU_PURIFIED = 1195;
        MARILL_NORMAL = 1196;
        MARILL_SHADOW = 1197;
        MARILL_PURIFIED = 1198;
        AZUMARILL_NORMAL = 1199;
        AZUMARILL_SHADOW = 1200;
        AZUMARILL_PURIFIED = 1201;
        SUDOWOODO_NORMAL = 1202;
        SUDOWOODO_SHADOW = 1203;
        SUDOWOODO_PURIFIED = 1204;
        HOPPIP_NORMAL = 1205;
        HOPPIP_SHADOW = 1206;
        HOPPIP_PURIFIED = 1207;
        SKIPLOOM_NORMAL = 1208;
        SKIPLOOM_SHADOW = 1209;
        SKIPLOOM_PURIFIED = 1210;
        JUMPLUFF_NORMAL = 1211;
        JUMPLUFF_SHADOW = 1212;
        JUMPLUFF_PURIFIED = 1213;
        AIPOM_NORMAL = 1214;
        AIPOM_SHADOW = 1215;
        AIPOM_PURIFIED = 1216;
        SUNKERN_NORMAL = 1217;
        SUNKERN_SHADOW = 1218;
        SUNKERN_PURIFIED = 1219;
        SUNFLORA_NORMAL = 1220;
        SUNFLORA_SHADOW = 1221;
        SUNFLORA_PURIFIED = 1222;
        YANMA_NORMAL = 1223;
        YANMA_SHADOW = 1224;
        YANMA_PURIFIED = 1225;
        WOOPER_NORMAL = 1226;
        WOOPER_SHADOW = 1227;
        WOOPER_PURIFIED = 1228;
        QUAGSIRE_NORMAL = 1229;
        QUAGSIRE_SHADOW = 1230;
        QUAGSIRE_PURIFIED = 1231;
        ESPEON_NORMAL = 1232;
        ESPEON_SHADOW = 1233;
        ESPEON_PURIFIED = 1234;
        UMBREON_NORMAL = 1235;
        UMBREON_SHADOW = 1236;
        UMBREON_PURIFIED = 1237;
        SLOWKING_NORMAL = 1238;
        SLOWKING_SHADOW = 1239;
        SLOWKING_PURIFIED = 1240;
        GIRAFARIG_NORMAL = 1241;
        GIRAFARIG_SHADOW = 1242;
        GIRAFARIG_PURIFIED = 1243;
        PINECO_NORMAL = 1244;
        PINECO_SHADOW = 1245;
        PINECO_PURIFIED = 1246;
        FORRETRESS_NORMAL = 1247;
        FORRETRESS_SHADOW = 1248;
        FORRETRESS_PURIFIED = 1249;
        DUNSPARCE_NORMAL = 1250;
        DUNSPARCE_SHADOW = 1251;
        DUNSPARCE_PURIFIED = 1252;
        SNUBBULL_NORMAL = 1253;
        SNUBBULL_SHADOW = 1254;
        SNUBBULL_PURIFIED = 1255;
        GRANBULL_NORMAL = 1256;
        GRANBULL_SHADOW = 1257;
        GRANBULL_PURIFIED = 1258;
        QWILFISH_NORMAL = 1259;
        QWILFISH_SHADOW = 1260;
        QWILFISH_PURIFIED = 1261;
        HERACROSS_NORMAL = 1262;
        HERACROSS_SHADOW = 1263;
        HERACROSS_PURIFIED = 1264;
        TEDDIURSA_NORMAL = 1265;
        TEDDIURSA_SHADOW = 1266;
        TEDDIURSA_PURIFIED = 1267;
        URSARING_NORMAL = 1268;
        URSARING_SHADOW = 1269;
        URSARING_PURIFIED = 1270;
        SLUGMA_NORMAL = 1271;
        SLUGMA_SHADOW = 1272;
        SLUGMA_PURIFIED = 1273;
        MAGCARGO_NORMAL = 1274;
        MAGCARGO_SHADOW = 1275;
        MAGCARGO_PURIFIED = 1276;
        SWINUB_NORMAL = 1277;
        SWINUB_SHADOW = 1278;
        SWINUB_PURIFIED = 1279;
        PILOSWINE_NORMAL = 1280;
        PILOSWINE_SHADOW = 1281;
        PILOSWINE_PURIFIED = 1282;
        CORSOLA_NORMAL = 1283;
        CORSOLA_SHADOW = 1284;
        CORSOLA_PURIFIED = 1285;
        REMORAID_NORMAL = 1286;
        REMORAID_SHADOW = 1287;
        REMORAID_PURIFIED = 1288;
        OCTILLERY_NORMAL = 1289;
        OCTILLERY_SHADOW = 1290;
        OCTILLERY_PURIFIED = 1291;
        MANTINE_NORMAL = 1292;
        MANTINE_SHADOW = 1293;
        MANTINE_PURIFIED = 1294;
        SKARMORY_NORMAL = 1295;
        SKARMORY_SHADOW = 1296;
        SKARMORY_PURIFIED = 1297;
        KINGDRA_NORMAL = 1298;
        KINGDRA_SHADOW = 1299;
        KINGDRA_PURIFIED = 1300;
        PHANPY_NORMAL = 1301;
        PHANPY_SHADOW = 1302;
        PHANPY_PURIFIED = 1303;
        DONPHAN_NORMAL = 1304;
        DONPHAN_SHADOW = 1305;
        DONPHAN_PURIFIED = 1306;
        SMEARGLE_NORMAL = 1307;
        SMEARGLE_SHADOW = 1308;
        SMEARGLE_PURIFIED = 1309;
        TYROGUE_NORMAL = 1310;
        TYROGUE_SHADOW = 1311;
        TYROGUE_PURIFIED = 1312;
        HITMONTOP_NORMAL = 1313;
        HITMONTOP_SHADOW = 1314;
        HITMONTOP_PURIFIED = 1315;
        SMOOCHUM_NORMAL = 1316;
        SMOOCHUM_SHADOW = 1317;
        SMOOCHUM_PURIFIED = 1318;
        ELEKID_NORMAL = 1319;
        ELEKID_SHADOW = 1320;
        ELEKID_PURIFIED = 1321;
        MAGBY_NORMAL = 1322;
        MAGBY_SHADOW = 1323;
        MAGBY_PURIFIED = 1324;
        MILTANK_NORMAL = 1325;
        MILTANK_SHADOW = 1326;
        MILTANK_PURIFIED = 1327;
        BLISSEY_NORMAL = 1328;
        BLISSEY_SHADOW = 1329;
        BLISSEY_PURIFIED = 1330;
        RAIKOU_NORMAL = 1331;
        RAIKOU_SHADOW = 1332;
        RAIKOU_PURIFIED = 1333;
        ENTEI_NORMAL = 1334;
        ENTEI_SHADOW = 1335;
        ENTEI_PURIFIED = 1336;
        SUICUNE_NORMAL = 1337;
        SUICUNE_SHADOW = 1338;
        SUICUNE_PURIFIED = 1339;
        LUGIA_NORMAL = 1340;
        LUGIA_SHADOW = 1341;
        LUGIA_PURIFIED = 1342;
        HO_OH_NORMAL = 1343;
        HO_OH_SHADOW = 1344;
        HO_OH_PURIFIED = 1345;
        CELEBI_NORMAL = 1346;
        CELEBI_SHADOW = 1347;
        CELEBI_PURIFIED = 1348;
        TREECKO_NORMAL = 1349;
        TREECKO_SHADOW = 1350;
        TREECKO_PURIFIED = 1351;
        GROVYLE_NORMAL = 1352;
        GROVYLE_SHADOW = 1353;
        GROVYLE_PURIFIED = 1354;
        SCEPTILE_NORMAL = 1355;
        SCEPTILE_SHADOW = 1356;
        SCEPTILE_PURIFIED = 1357;
        TORCHIC_NORMAL = 1358;
        TORCHIC_SHADOW = 1359;
        TORCHIC_PURIFIED = 1360;
        COMBUSKEN_NORMAL = 1361;
        COMBUSKEN_SHADOW = 1362;
        COMBUSKEN_PURIFIED = 1363;
        BLAZIKEN_NORMAL = 1364;
        BLAZIKEN_SHADOW = 1365;
        BLAZIKEN_PURIFIED = 1366;
        POOCHYENA_NORMAL = 1367;
        POOCHYENA_SHADOW = 1368;
        POOCHYENA_PURIFIED = 1369;
        MIGHTYENA_NORMAL = 1370;
        MIGHTYENA_SHADOW = 1371;
        MIGHTYENA_PURIFIED = 1372;
        ZIGZAGOON_SHADOW = 1373;
        ZIGZAGOON_PURIFIED = 1374;
        LINOONE_SHADOW = 1375;
        LINOONE_PURIFIED = 1376;
        WURMPLE_SHADOW = 1377;
        WURMPLE_PURIFIED = 1378;
        SILCOON_NORMAL = 1379;
        SILCOON_SHADOW = 1380;
        SILCOON_PURIFIED = 1381;
        BEAUTIFLY_NORMAL = 1382;
        BEAUTIFLY_SHADOW = 1383;
        BEAUTIFLY_PURIFIED = 1384;
        CASCOON_NORMAL = 1385;
        CASCOON_SHADOW = 1386;
        CASCOON_PURIFIED = 1387;
        DUSTOX_NORMAL = 1388;
        DUSTOX_SHADOW = 1389;
        DUSTOX_PURIFIED = 1390;
        LOTAD_NORMAL = 1391;
        LOTAD_SHADOW = 1392;
        LOTAD_PURIFIED = 1393;
        LOMBRE_NORMAL = 1394;
        LOMBRE_SHADOW = 1395;
        LOMBRE_PURIFIED = 1396;
        LUDICOLO_NORMAL = 1397;
        LUDICOLO_SHADOW = 1398;
        LUDICOLO_PURIFIED = 1399;
        TAILLOW_NORMAL = 1400;
        TAILLOW_SHADOW = 1401;
        TAILLOW_PURIFIED = 1402;
        SWELLOW_NORMAL = 1403;
        SWELLOW_SHADOW = 1404;
        SWELLOW_PURIFIED = 1405;
        WINGULL_NORMAL = 1406;
        WINGULL_SHADOW = 1407;
        WINGULL_PURIFIED = 1408;
        PELIPPER_NORMAL = 1409;
        PELIPPER_SHADOW = 1410;
        PELIPPER_PURIFIED = 1411;
        SURSKIT_NORMAL = 1412;
        SURSKIT_SHADOW = 1413;
        SURSKIT_PURIFIED = 1414;
        MASQUERAIN_NORMAL = 1415;
        MASQUERAIN_SHADOW = 1416;
        MASQUERAIN_PURIFIED = 1417;
        SHROOMISH_NORMAL = 1418;
        SHROOMISH_SHADOW = 1419;
        SHROOMISH_PURIFIED = 1420;
        BRELOOM_NORMAL = 1421;
        BRELOOM_SHADOW = 1422;
        BRELOOM_PURIFIED = 1423;
        SLAKOTH_NORMAL = 1424;
        SLAKOTH_SHADOW = 1425;
        SLAKOTH_PURIFIED = 1426;
        VIGOROTH_NORMAL = 1427;
        VIGOROTH_SHADOW = 1428;
        VIGOROTH_PURIFIED = 1429;
        SLAKING_NORMAL = 1430;
        SLAKING_SHADOW = 1431;
        SLAKING_PURIFIED = 1432;
        NINCADA_NORMAL = 1433;
        NINCADA_SHADOW = 1434;
        NINCADA_PURIFIED = 1435;
        NINJASK_NORMAL = 1436;
        NINJASK_SHADOW = 1437;
        NINJASK_PURIFIED = 1438;
        SHEDINJA_NORMAL = 1439;
        SHEDINJA_SHADOW = 1440;
        SHEDINJA_PURIFIED = 1441;
        WHISMUR_NORMAL = 1442;
        WHISMUR_SHADOW = 1443;
        WHISMUR_PURIFIED = 1444;
        LOUDRED_NORMAL = 1445;
        LOUDRED_SHADOW = 1446;
        LOUDRED_PURIFIED = 1447;
        EXPLOUD_NORMAL = 1448;
        EXPLOUD_SHADOW = 1449;
        EXPLOUD_PURIFIED = 1450;
        MAKUHITA_NORMAL = 1451;
        MAKUHITA_SHADOW = 1452;
        MAKUHITA_PURIFIED = 1453;
        HARIYAMA_NORMAL = 1454;
        HARIYAMA_SHADOW = 1455;
        HARIYAMA_PURIFIED = 1456;
        AZURILL_NORMAL = 1457;
        AZURILL_SHADOW = 1458;
        AZURILL_PURIFIED = 1459;
        NOSEPASS_NORMAL = 1460;
        NOSEPASS_SHADOW = 1461;
        NOSEPASS_PURIFIED = 1462;
        SKITTY_NORMAL = 1463;
        SKITTY_SHADOW = 1464;
        SKITTY_PURIFIED = 1465;
        DELCATTY_NORMAL = 1466;
        DELCATTY_SHADOW = 1467;
        DELCATTY_PURIFIED = 1468;
        ARON_NORMAL = 1469;
        ARON_SHADOW = 1470;
        ARON_PURIFIED = 1471;
        LAIRON_NORMAL = 1472;
        LAIRON_SHADOW = 1473;
        LAIRON_PURIFIED = 1474;
        AGGRON_NORMAL = 1475;
        AGGRON_SHADOW = 1476;
        AGGRON_PURIFIED = 1477;
        MEDITITE_NORMAL = 1478;
        MEDITITE_SHADOW = 1479;
        MEDITITE_PURIFIED = 1480;
        MEDICHAM_NORMAL = 1481;
        MEDICHAM_SHADOW = 1482;
        MEDICHAM_PURIFIED = 1483;
        ELECTRIKE_NORMAL = 1484;
        ELECTRIKE_SHADOW = 1485;
        ELECTRIKE_PURIFIED = 1486;
        MANECTRIC_NORMAL = 1487;
        MANECTRIC_SHADOW = 1488;
        MANECTRIC_PURIFIED = 1489;
        PLUSLE_NORMAL = 1490;
        PLUSLE_SHADOW = 1491;
        PLUSLE_PURIFIED = 1492;
        MINUN_NORMAL = 1493;
        MINUN_SHADOW = 1494;
        MINUN_PURIFIED = 1495;
        VOLBEAT_NORMAL = 1496;
        VOLBEAT_SHADOW = 1497;
        VOLBEAT_PURIFIED = 1498;
        ILLUMISE_NORMAL = 1499;
        ILLUMISE_SHADOW = 1500;
        ILLUMISE_PURIFIED = 1501;
        ROSELIA_NORMAL = 1502;
        ROSELIA_SHADOW = 1503;
        ROSELIA_PURIFIED = 1504;
        GULPIN_NORMAL = 1505;
        GULPIN_SHADOW = 1506;
        GULPIN_PURIFIED = 1507;
        SWALOT_NORMAL = 1508;
        SWALOT_SHADOW = 1509;
        SWALOT_PURIFIED = 1510;
        WAILMER_NORMAL = 1511;
        WAILMER_SHADOW = 1512;
        WAILMER_PURIFIED = 1513;
        WAILORD_NORMAL = 1514;
        WAILORD_SHADOW = 1515;
        WAILORD_PURIFIED = 1516;
        NUMEL_NORMAL = 1517;
        NUMEL_SHADOW = 1518;
        NUMEL_PURIFIED = 1519;
        CAMERUPT_NORMAL = 1520;
        CAMERUPT_SHADOW = 1521;
        CAMERUPT_PURIFIED = 1522;
        TORKOAL_NORMAL = 1523;
        TORKOAL_SHADOW = 1524;
        TORKOAL_PURIFIED = 1525;
        SPOINK_NORMAL = 1526;
        SPOINK_SHADOW = 1527;
        SPOINK_PURIFIED = 1528;
        GRUMPIG_NORMAL = 1529;
        GRUMPIG_SHADOW = 1530;
        GRUMPIG_PURIFIED = 1531;
        SWABLU_NORMAL = 1532;
        SWABLU_SHADOW = 1533;
        SWABLU_PURIFIED = 1534;
        ALTARIA_NORMAL = 1535;
        ALTARIA_SHADOW = 1536;
        ALTARIA_PURIFIED = 1537;
        ZANGOOSE_NORMAL = 1538;
        ZANGOOSE_SHADOW = 1539;
        ZANGOOSE_PURIFIED = 1540;
        SEVIPER_NORMAL = 1541;
        SEVIPER_SHADOW = 1542;
        SEVIPER_PURIFIED = 1543;
        LUNATONE_NORMAL = 1544;
        LUNATONE_SHADOW = 1545;
        LUNATONE_PURIFIED = 1546;
        SOLROCK_NORMAL = 1547;
        SOLROCK_SHADOW = 1548;
        SOLROCK_PURIFIED = 1549;
        BARBOACH_NORMAL = 1550;
        BARBOACH_SHADOW = 1551;
        BARBOACH_PURIFIED = 1552;
        WHISCASH_NORMAL = 1553;
        WHISCASH_SHADOW = 1554;
        WHISCASH_PURIFIED = 1555;
        CORPHISH_NORMAL = 1556;
        CORPHISH_SHADOW = 1557;
        CORPHISH_PURIFIED = 1558;
        CRAWDAUNT_NORMAL = 1559;
        CRAWDAUNT_SHADOW = 1560;
        CRAWDAUNT_PURIFIED = 1561;
        BALTOY_NORMAL = 1562;
        BALTOY_SHADOW = 1563;
        BALTOY_PURIFIED = 1564;
        CLAYDOL_NORMAL = 1565;
        CLAYDOL_SHADOW = 1566;
        CLAYDOL_PURIFIED = 1567;
        LILEEP_NORMAL = 1568;
        LILEEP_SHADOW = 1569;
        LILEEP_PURIFIED = 1570;
        CRADILY_NORMAL = 1571;
        CRADILY_SHADOW = 1572;
        CRADILY_PURIFIED = 1573;
        ANORITH_NORMAL = 1574;
        ANORITH_SHADOW = 1575;
        ANORITH_PURIFIED = 1576;
        ARMALDO_NORMAL = 1577;
        ARMALDO_SHADOW = 1578;
        ARMALDO_PURIFIED = 1579;
        FEEBAS_NORMAL = 1580;
        FEEBAS_SHADOW = 1581;
        FEEBAS_PURIFIED = 1582;
        MILOTIC_NORMAL = 1583;
        MILOTIC_SHADOW = 1584;
        MILOTIC_PURIFIED = 1585;
        KECLEON_NORMAL = 1586;
        KECLEON_SHADOW = 1587;
        KECLEON_PURIFIED = 1588;
        TROPIUS_NORMAL = 1589;
        TROPIUS_SHADOW = 1590;
        TROPIUS_PURIFIED = 1591;
        CHIMECHO_NORMAL = 1592;
        CHIMECHO_SHADOW = 1593;
        CHIMECHO_PURIFIED = 1594;
        WYNAUT_NORMAL = 1595;
        WYNAUT_SHADOW = 1596;
        WYNAUT_PURIFIED = 1597;
        SPHEAL_NORMAL = 1598;
        SPHEAL_SHADOW = 1599;
        SPHEAL_PURIFIED = 1600;
        SEALEO_NORMAL = 1601;
        SEALEO_SHADOW = 1602;
        SEALEO_PURIFIED = 1603;
        WALREIN_NORMAL = 1604;
        WALREIN_SHADOW = 1605;
        WALREIN_PURIFIED = 1606;
        CLAMPERL_NORMAL = 1607;
        CLAMPERL_SHADOW = 1608;
        CLAMPERL_PURIFIED = 1609;
        HUNTAIL_NORMAL = 1610;
        HUNTAIL_SHADOW = 1611;
        HUNTAIL_PURIFIED = 1612;
        GOREBYSS_NORMAL = 1613;
        GOREBYSS_SHADOW = 1614;
        GOREBYSS_PURIFIED = 1615;
        RELICANTH_NORMAL = 1616;
        RELICANTH_SHADOW = 1617;
        RELICANTH_PURIFIED = 1618;
        LUVDISC_NORMAL = 1619;
        LUVDISC_SHADOW = 1620;
        LUVDISC_PURIFIED = 1621;
        REGIROCK_NORMAL = 1622;
        REGIROCK_SHADOW = 1623;
        REGIROCK_PURIFIED = 1624;
        REGICE_NORMAL = 1625;
        REGICE_SHADOW = 1626;
        REGICE_PURIFIED = 1627;
        REGISTEEL_NORMAL = 1628;
        REGISTEEL_SHADOW = 1629;
        REGISTEEL_PURIFIED = 1630;
        LATIAS_NORMAL = 1631;
        LATIAS_SHADOW = 1632;
        LATIAS_PURIFIED = 1633;
        LATIOS_NORMAL = 1634;
        LATIOS_SHADOW = 1635;
        LATIOS_PURIFIED = 1636;
        KYOGRE_NORMAL = 1637;
        KYOGRE_SHADOW = 1638;
        KYOGRE_PURIFIED = 1639;
        GROUDON_NORMAL = 1640;
        GROUDON_SHADOW = 1641;
        GROUDON_PURIFIED = 1642;
        RAYQUAZA_NORMAL = 1643;
        RAYQUAZA_SHADOW = 1644;
        RAYQUAZA_PURIFIED = 1645;
        JIRACHI_NORMAL = 1646;
        JIRACHI_SHADOW = 1647;
        JIRACHI_PURIFIED = 1648;
        PIPLUP_NORMAL = 1649;
        PIPLUP_SHADOW = 1650;
        PIPLUP_PURIFIED = 1651;
        PRINPLUP_NORMAL = 1652;
        PRINPLUP_SHADOW = 1653;
        PRINPLUP_PURIFIED = 1654;
        EMPOLEON_NORMAL = 1655;
        EMPOLEON_SHADOW = 1656;
        EMPOLEON_PURIFIED = 1657;
        STARLY_NORMAL = 1658;
        STARLY_SHADOW = 1659;
        STARLY_PURIFIED = 1660;
        STARAVIA_NORMAL = 1661;
        STARAVIA_SHADOW = 1662;
        STARAVIA_PURIFIED = 1663;
        STARAPTOR_NORMAL = 1664;
        STARAPTOR_SHADOW = 1665;
        STARAPTOR_PURIFIED = 1666;
        BIDOOF_NORMAL = 1667;
        BIDOOF_SHADOW = 1668;
        BIDOOF_PURIFIED = 1669;
        BIBAREL_NORMAL = 1670;
        BIBAREL_SHADOW = 1671;
        BIBAREL_PURIFIED = 1672;
        KRICKETOT_NORMAL = 1673;
        KRICKETOT_SHADOW = 1674;
        KRICKETOT_PURIFIED = 1675;
        KRICKETUNE_NORMAL = 1676;
        KRICKETUNE_SHADOW = 1677;
        KRICKETUNE_PURIFIED = 1678;
        SHINX_NORMAL = 1679;
        SHINX_SHADOW = 1680;
        SHINX_PURIFIED = 1681;
        LUXIO_NORMAL = 1682;
        LUXIO_SHADOW = 1683;
        LUXIO_PURIFIED = 1684;
        LUXRAY_NORMAL = 1685;
        LUXRAY_SHADOW = 1686;
        LUXRAY_PURIFIED = 1687;
        BUDEW_NORMAL = 1688;
        BUDEW_SHADOW = 1689;
        BUDEW_PURIFIED = 1690;
        ROSERADE_NORMAL = 1691;
        ROSERADE_SHADOW = 1692;
        ROSERADE_PURIFIED = 1693;
        CRANIDOS_NORMAL = 1694;
        CRANIDOS_SHADOW = 1695;
        CRANIDOS_PURIFIED = 1696;
        RAMPARDOS_NORMAL = 1697;
        RAMPARDOS_SHADOW = 1698;
        RAMPARDOS_PURIFIED = 1699;
        SHIELDON_NORMAL = 1700;
        SHIELDON_SHADOW = 1701;
        SHIELDON_PURIFIED = 1702;
        BASTIODON_NORMAL = 1703;
        BASTIODON_SHADOW = 1704;
        BASTIODON_PURIFIED = 1705;
        BURMY_NORMAL = 1706;
        BURMY_SHADOW = 1707;
        BURMY_PURIFIED = 1708;
        WORMADAM_NORMAL = 1709;
        WORMADAM_SHADOW = 1710;
        WORMADAM_PURIFIED = 1711;
        MOTHIM_NORMAL = 1712;
        MOTHIM_SHADOW = 1713;
        MOTHIM_PURIFIED = 1714;
        COMBEE_NORMAL = 1715;
        COMBEE_SHADOW = 1716;
        COMBEE_PURIFIED = 1717;
        VESPIQUEN_NORMAL = 1718;
        VESPIQUEN_SHADOW = 1719;
        VESPIQUEN_PURIFIED = 1720;
        PACHIRISU_NORMAL = 1721;
        PACHIRISU_SHADOW = 1722;
        PACHIRISU_PURIFIED = 1723;
        BUIZEL_NORMAL = 1724;
        BUIZEL_SHADOW = 1725;
        BUIZEL_PURIFIED = 1726;
        FLOATZEL_NORMAL = 1727;
        FLOATZEL_SHADOW = 1728;
        FLOATZEL_PURIFIED = 1729;
        CHERUBI_NORMAL = 1730;
        CHERUBI_SHADOW = 1731;
        CHERUBI_PURIFIED = 1732;
        CHERRIM_NORMAL = 1733;
        CHERRIM_SHADOW = 1734;
        CHERRIM_PURIFIED = 1735;
        SHELLOS_NORMAL = 1736;
        SHELLOS_SHADOW = 1737;
        SHELLOS_PURIFIED = 1738;
        GASTRODON_NORMAL = 1739;
        GASTRODON_SHADOW = 1740;
        GASTRODON_PURIFIED = 1741;
        AMBIPOM_NORMAL = 1742;
        AMBIPOM_SHADOW = 1743;
        AMBIPOM_PURIFIED = 1744;
        DRIFLOON_NORMAL = 1745;
        DRIFLOON_SHADOW = 1746;
        DRIFLOON_PURIFIED = 1747;
        DRIFBLIM_NORMAL = 1748;
        DRIFBLIM_SHADOW = 1749;
        DRIFBLIM_PURIFIED = 1750;
        BUNEARY_NORMAL = 1751;
        BUNEARY_SHADOW = 1752;
        BUNEARY_PURIFIED = 1753;
        LOPUNNY_NORMAL = 1754;
        LOPUNNY_SHADOW = 1755;
        LOPUNNY_PURIFIED = 1756;
        GLAMEOW_NORMAL = 1757;
        GLAMEOW_SHADOW = 1758;
        GLAMEOW_PURIFIED = 1759;
        PURUGLY_NORMAL = 1760;
        PURUGLY_SHADOW = 1761;
        PURUGLY_PURIFIED = 1762;
        CHINGLING_NORMAL = 1763;
        CHINGLING_SHADOW = 1764;
        CHINGLING_PURIFIED = 1765;
        BRONZOR_NORMAL = 1766;
        BRONZOR_SHADOW = 1767;
        BRONZOR_PURIFIED = 1768;
        BRONZONG_NORMAL = 1769;
        BRONZONG_SHADOW = 1770;
        BRONZONG_PURIFIED = 1771;
        BONSLY_NORMAL = 1772;
        BONSLY_SHADOW = 1773;
        BONSLY_PURIFIED = 1774;
        MIME_JR_NORMAL = 1775;
        MIME_JR_SHADOW = 1776;
        MIME_JR_PURIFIED = 1777;
        HAPPINY_NORMAL = 1778;
        HAPPINY_SHADOW = 1779;
        HAPPINY_PURIFIED = 1780;
        CHATOT_NORMAL = 1781;
        CHATOT_SHADOW = 1782;
        CHATOT_PURIFIED = 1783;
        SPIRITOMB_NORMAL = 1784;
        SPIRITOMB_SHADOW = 1785;
        SPIRITOMB_PURIFIED = 1786;
        MUNCHLAX_NORMAL = 1787;
        MUNCHLAX_SHADOW = 1788;
        MUNCHLAX_PURIFIED = 1789;
        RIOLU_NORMAL = 1790;
        RIOLU_SHADOW = 1791;
        RIOLU_PURIFIED = 1792;
        LUCARIO_NORMAL = 1793;
        LUCARIO_SHADOW = 1794;
        LUCARIO_PURIFIED = 1795;
        SKORUPI_NORMAL = 1796;
        SKORUPI_SHADOW = 1797;
        SKORUPI_PURIFIED = 1798;
        DRAPION_NORMAL = 1799;
        DRAPION_SHADOW = 1800;
        DRAPION_PURIFIED = 1801;
        CROAGUNK_NORMAL = 1802;
        CROAGUNK_SHADOW = 1803;
        CROAGUNK_PURIFIED = 1804;
        TOXICROAK_NORMAL = 1805;
        TOXICROAK_SHADOW = 1806;
        TOXICROAK_PURIFIED = 1807;
        CARNIVINE_NORMAL = 1808;
        CARNIVINE_SHADOW = 1809;
        CARNIVINE_PURIFIED = 1810;
        FINNEON_NORMAL = 1811;
        FINNEON_SHADOW = 1812;
        FINNEON_PURIFIED = 1813;
        LUMINEON_NORMAL = 1814;
        LUMINEON_SHADOW = 1815;
        LUMINEON_PURIFIED = 1816;
        MANTYKE_NORMAL = 1817;
        MANTYKE_SHADOW = 1818;
        MANTYKE_PURIFIED = 1819;
        LICKILICKY_NORMAL = 1820;
        LICKILICKY_SHADOW = 1821;
        LICKILICKY_PURIFIED = 1822;
        TANGROWTH_NORMAL = 1823;
        TANGROWTH_SHADOW = 1824;
        TANGROWTH_PURIFIED = 1825;
        TOGEKISS_NORMAL = 1826;
        TOGEKISS_SHADOW = 1827;
        TOGEKISS_PURIFIED = 1828;
        YANMEGA_NORMAL = 1829;
        YANMEGA_SHADOW = 1830;
        YANMEGA_PURIFIED = 1831;
        LEAFEON_NORMAL = 1832;
        LEAFEON_SHADOW = 1833;
        LEAFEON_PURIFIED = 1834;
        GLACEON_NORMAL = 1835;
        GLACEON_SHADOW = 1836;
        GLACEON_PURIFIED = 1837;
        MAMOSWINE_NORMAL = 1838;
        MAMOSWINE_SHADOW = 1839;
        MAMOSWINE_PURIFIED = 1840;
        PROBOPASS_NORMAL = 1841;
        PROBOPASS_SHADOW = 1842;
        PROBOPASS_PURIFIED = 1843;
        FROSLASS_NORMAL = 1844;
        FROSLASS_SHADOW = 1845;
        FROSLASS_PURIFIED = 1846;
        UXIE_NORMAL = 1847;
        UXIE_SHADOW = 1848;
        UXIE_PURIFIED = 1849;
        MESPRIT_NORMAL = 1850;
        MESPRIT_SHADOW = 1851;
        MESPRIT_PURIFIED = 1852;
        AZELF_NORMAL = 1853;
        AZELF_SHADOW = 1854;
        AZELF_PURIFIED = 1855;
        DIALGA_NORMAL = 1856;
        DIALGA_SHADOW = 1857;
        DIALGA_PURIFIED = 1858;
        PALKIA_NORMAL = 1859;
        PALKIA_SHADOW = 1860;
        PALKIA_PURIFIED = 1861;
        HEATRAN_NORMAL = 1862;
        HEATRAN_SHADOW = 1863;
        HEATRAN_PURIFIED = 1864;
        REGIGIGAS_NORMAL = 1865;
        REGIGIGAS_SHADOW = 1866;
        REGIGIGAS_PURIFIED = 1867;
        GIRATINA_NORMAL = 1868;
        GIRATINA_SHADOW = 1869;
        GIRATINA_PURIFIED = 1870;
        CRESSELIA_NORMAL = 1871;
        CRESSELIA_SHADOW = 1872;
        CRESSELIA_PURIFIED = 1873;
        PHIONE_NORMAL = 1874;
        PHIONE_SHADOW = 1875;
        PHIONE_PURIFIED = 1876;
        MANAPHY_NORMAL = 1877;
        MANAPHY_SHADOW = 1878;
        MANAPHY_PURIFIED = 1879;
        DARKRAI_NORMAL = 1880;
        DARKRAI_SHADOW = 1881;
        DARKRAI_PURIFIED = 1882;
        SHAYMIN_NORMAL = 1883;
        SHAYMIN_SHADOW = 1884;
        SHAYMIN_PURIFIED = 1885;
        VICTINI_NORMAL = 1886;
        VICTINI_SHADOW = 1887;
        VICTINI_PURIFIED = 1888;
        SNIVY_NORMAL = 1889;
        SNIVY_SHADOW = 1890;
        SNIVY_PURIFIED = 1891;
        SERVINE_NORMAL = 1892;
        SERVINE_SHADOW = 1893;
        SERVINE_PURIFIED = 1894;
        SERPERIOR_NORMAL = 1895;
        SERPERIOR_SHADOW = 1896;
        SERPERIOR_PURIFIED = 1897;
        TEPIG_NORMAL = 1898;
        TEPIG_SHADOW = 1899;
        TEPIG_PURIFIED = 1900;
        PIGNITE_NORMAL = 1901;
        PIGNITE_SHADOW = 1902;
        PIGNITE_PURIFIED = 1903;
        EMBOAR_NORMAL = 1904;
        EMBOAR_SHADOW = 1905;
        EMBOAR_PURIFIED = 1906;
        OSHAWOTT_NORMAL = 1907;
        OSHAWOTT_SHADOW = 1908;
        OSHAWOTT_PURIFIED = 1909;
        DEWOTT_NORMAL = 1910;
        DEWOTT_SHADOW = 1911;
        DEWOTT_PURIFIED = 1912;
        SAMUROTT_NORMAL = 1913;
        SAMUROTT_SHADOW = 1914;
        SAMUROTT_PURIFIED = 1915;
        PATRAT_NORMAL = 1916;
        PATRAT_SHADOW = 1917;
        PATRAT_PURIFIED = 1918;
        WATCHOG_NORMAL = 1919;
        WATCHOG_SHADOW = 1920;
        WATCHOG_PURIFIED = 1921;
        LILLIPUP_NORMAL = 1922;
        LILLIPUP_SHADOW = 1923;
        LILLIPUP_PURIFIED = 1924;
        HERDIER_NORMAL = 1925;
        HERDIER_SHADOW = 1926;
        HERDIER_PURIFIED = 1927;
        STOUTLAND_NORMAL = 1928;
        STOUTLAND_SHADOW = 1929;
        STOUTLAND_PURIFIED = 1930;
        PURRLOIN_NORMAL = 1931;
        PURRLOIN_SHADOW = 1932;
        PURRLOIN_PURIFIED = 1933;
        LIEPARD_NORMAL = 1934;
        LIEPARD_SHADOW = 1935;
        LIEPARD_PURIFIED = 1936;
        PANSAGE_NORMAL = 1937;
        PANSAGE_SHADOW = 1938;
        PANSAGE_PURIFIED = 1939;
        SIMISAGE_NORMAL = 1940;
        SIMISAGE_SHADOW = 1941;
        SIMISAGE_PURIFIED = 1942;
        PANSEAR_NORMAL = 1943;
        PANSEAR_SHADOW = 1944;
        PANSEAR_PURIFIED = 1945;
        SIMISEAR_NORMAL = 1946;
        SIMISEAR_SHADOW = 1947;
        SIMISEAR_PURIFIED = 1948;
        PANPOUR_NORMAL = 1949;
        PANPOUR_SHADOW = 1950;
        PANPOUR_PURIFIED = 1951;
        SIMIPOUR_NORMAL = 1952;
        SIMIPOUR_SHADOW = 1953;
        SIMIPOUR_PURIFIED = 1954;
        MUNNA_NORMAL = 1955;
        MUNNA_SHADOW = 1956;
        MUNNA_PURIFIED = 1957;
        MUSHARNA_NORMAL = 1958;
        MUSHARNA_SHADOW = 1959;
        MUSHARNA_PURIFIED = 1960;
        PIDOVE_NORMAL = 1961;
        PIDOVE_SHADOW = 1962;
        PIDOVE_PURIFIED = 1963;
        TRANQUILL_NORMAL = 1964;
        TRANQUILL_SHADOW = 1965;
        TRANQUILL_PURIFIED = 1966;
        UNFEZANT_NORMAL = 1967;
        UNFEZANT_SHADOW = 1968;
        UNFEZANT_PURIFIED = 1969;
        BLITZLE_NORMAL = 1970;
        BLITZLE_SHADOW = 1971;
        BLITZLE_PURIFIED = 1972;
        ZEBSTRIKA_NORMAL = 1973;
        ZEBSTRIKA_SHADOW = 1974;
        ZEBSTRIKA_PURIFIED = 1975;
        ROGGENROLA_NORMAL = 1976;
        ROGGENROLA_SHADOW = 1977;
        ROGGENROLA_PURIFIED = 1978;
        BOLDORE_NORMAL = 1979;
        BOLDORE_SHADOW = 1980;
        BOLDORE_PURIFIED = 1981;
        GIGALITH_NORMAL = 1982;
        GIGALITH_SHADOW = 1983;
        GIGALITH_PURIFIED = 1984;
        WOOBAT_NORMAL = 1985;
        WOOBAT_SHADOW = 1986;
        WOOBAT_PURIFIED = 1987;
        SWOOBAT_NORMAL = 1988;
        SWOOBAT_SHADOW = 1989;
        SWOOBAT_PURIFIED = 1990;
        DRILBUR_NORMAL = 1991;
        DRILBUR_SHADOW = 1992;
        DRILBUR_PURIFIED = 1993;
        EXCADRILL_NORMAL = 1994;
        EXCADRILL_SHADOW = 1995;
        EXCADRILL_PURIFIED = 1996;
        AUDINO_NORMAL = 1997;
        AUDINO_SHADOW = 1998;
        AUDINO_PURIFIED = 1999;
        TIMBURR_NORMAL = 2000;
        TIMBURR_SHADOW = 2001;
        TIMBURR_PURIFIED = 2002;
        GURDURR_NORMAL = 2003;
        GURDURR_SHADOW = 2004;
        GURDURR_PURIFIED = 2005;
        CONKELDURR_NORMAL = 2006;
        CONKELDURR_SHADOW = 2007;
        CONKELDURR_PURIFIED = 2008;
        TYMPOLE_NORMAL = 2009;
        TYMPOLE_SHADOW = 2010;
        TYMPOLE_PURIFIED = 2011;
        PALPITOAD_NORMAL = 2012;
        PALPITOAD_SHADOW = 2013;
        PALPITOAD_PURIFIED = 2014;
        SEISMITOAD_NORMAL = 2015;
        SEISMITOAD_SHADOW = 2016;
        SEISMITOAD_PURIFIED = 2017;
        THROH_NORMAL = 2018;
        THROH_SHADOW = 2019;
        THROH_PURIFIED = 2020;
        SAWK_NORMAL = 2021;
        SAWK_SHADOW = 2022;
        SAWK_PURIFIED = 2023;
        SEWADDLE_NORMAL = 2024;
        SEWADDLE_SHADOW = 2025;
        SEWADDLE_PURIFIED = 2026;
        SWADLOON_NORMAL = 2027;
        SWADLOON_SHADOW = 2028;
        SWADLOON_PURIFIED = 2029;
        LEAVANNY_NORMAL = 2030;
        LEAVANNY_SHADOW = 2031;
        LEAVANNY_PURIFIED = 2032;
        VENIPEDE_NORMAL = 2033;
        VENIPEDE_SHADOW = 2034;
        VENIPEDE_PURIFIED = 2035;
        WHIRLIPEDE_NORMAL = 2036;
        WHIRLIPEDE_SHADOW = 2037;
        WHIRLIPEDE_PURIFIED = 2038;
        SCOLIPEDE_NORMAL = 2039;
        SCOLIPEDE_SHADOW = 2040;
        SCOLIPEDE_PURIFIED = 2041;
        COTTONEE_NORMAL = 2042;
        COTTONEE_SHADOW = 2043;
        COTTONEE_PURIFIED = 2044;
        WHIMSICOTT_NORMAL = 2045;
        WHIMSICOTT_SHADOW = 2046;
        WHIMSICOTT_PURIFIED = 2047;
        PETILIL_NORMAL = 2048;
        PETILIL_SHADOW = 2049;
        PETILIL_PURIFIED = 2050;
        LILLIGANT_NORMAL = 2051;
        LILLIGANT_SHADOW = 2052;
        LILLIGANT_PURIFIED = 2053;
        SANDILE_NORMAL = 2054;
        SANDILE_SHADOW = 2055;
        SANDILE_PURIFIED = 2056;
        KROKOROK_NORMAL = 2057;
        KROKOROK_SHADOW = 2058;
        KROKOROK_PURIFIED = 2059;
        KROOKODILE_NORMAL = 2060;
        KROOKODILE_SHADOW = 2061;
        KROOKODILE_PURIFIED = 2062;
        DARUMAKA_NORMAL = 2063;
        DARUMAKA_SHADOW = 2064;
        DARUMAKA_PURIFIED = 2065;
        MARACTUS_NORMAL = 2066;
        MARACTUS_SHADOW = 2067;
        MARACTUS_PURIFIED = 2068;
        DWEBBLE_NORMAL = 2069;
        DWEBBLE_SHADOW = 2070;
        DWEBBLE_PURIFIED = 2071;
        CRUSTLE_NORMAL = 2072;
        CRUSTLE_SHADOW = 2073;
        CRUSTLE_PURIFIED = 2074;
        SCRAGGY_NORMAL = 2075;
        SCRAGGY_SHADOW = 2076;
        SCRAGGY_PURIFIED = 2077;
        SCRAFTY_NORMAL = 2078;
        SCRAFTY_SHADOW = 2079;
        SCRAFTY_PURIFIED = 2080;
        SIGILYPH_NORMAL = 2081;
        SIGILYPH_SHADOW = 2082;
        SIGILYPH_PURIFIED = 2083;
        YAMASK_NORMAL = 2084;
        YAMASK_SHADOW = 2085;
        YAMASK_PURIFIED = 2086;
        COFAGRIGUS_NORMAL = 2087;
        COFAGRIGUS_SHADOW = 2088;
        COFAGRIGUS_PURIFIED = 2089;
        TIRTOUGA_NORMAL = 2090;
        TIRTOUGA_SHADOW = 2091;
        TIRTOUGA_PURIFIED = 2092;
        CARRACOSTA_NORMAL = 2093;
        CARRACOSTA_SHADOW = 2094;
        CARRACOSTA_PURIFIED = 2095;
        ARCHEN_NORMAL = 2096;
        ARCHEN_SHADOW = 2097;
        ARCHEN_PURIFIED = 2098;
        ARCHEOPS_NORMAL = 2099;
        ARCHEOPS_SHADOW = 2100;
        ARCHEOPS_PURIFIED = 2101;
        TRUBBISH_NORMAL = 2102;
        TRUBBISH_SHADOW = 2103;
        TRUBBISH_PURIFIED = 2104;
        GARBODOR_NORMAL = 2105;
        GARBODOR_SHADOW = 2106;
        GARBODOR_PURIFIED = 2107;
        ZORUA_NORMAL = 2108;
        ZORUA_SHADOW = 2109;
        ZORUA_PURIFIED = 2110;
        ZOROARK_NORMAL = 2111;
        ZOROARK_SHADOW = 2112;
        ZOROARK_PURIFIED = 2113;
        MINCCINO_NORMAL = 2114;
        MINCCINO_SHADOW = 2115;
        MINCCINO_PURIFIED = 2116;
        CINCCINO_NORMAL = 2117;
        CINCCINO_SHADOW = 2118;
        CINCCINO_PURIFIED = 2119;
        GOTHITA_NORMAL = 2120;
        GOTHITA_SHADOW = 2121;
        GOTHITA_PURIFIED = 2122;
        GOTHORITA_NORMAL = 2123;
        GOTHORITA_SHADOW = 2124;
        GOTHORITA_PURIFIED = 2125;
        GOTHITELLE_NORMAL = 2126;
        GOTHITELLE_SHADOW = 2127;
        GOTHITELLE_PURIFIED = 2128;
        SOLOSIS_NORMAL = 2129;
        SOLOSIS_SHADOW = 2130;
        SOLOSIS_PURIFIED = 2131;
        DUOSION_NORMAL = 2132;
        DUOSION_SHADOW = 2133;
        DUOSION_PURIFIED = 2134;
        REUNICLUS_NORMAL = 2135;
        REUNICLUS_SHADOW = 2136;
        REUNICLUS_PURIFIED = 2137;
        DUCKLETT_NORMAL = 2138;
        DUCKLETT_SHADOW = 2139;
        DUCKLETT_PURIFIED = 2140;
        SWANNA_NORMAL = 2141;
        SWANNA_SHADOW = 2142;
        SWANNA_PURIFIED = 2143;
        VANILLITE_NORMAL = 2144;
        VANILLITE_SHADOW = 2145;
        VANILLITE_PURIFIED = 2146;
        VANILLISH_NORMAL = 2147;
        VANILLISH_SHADOW = 2148;
        VANILLISH_PURIFIED = 2149;
        VANILLUXE_NORMAL = 2150;
        VANILLUXE_SHADOW = 2151;
        VANILLUXE_PURIFIED = 2152;
        EMOLGA_NORMAL = 2153;
        EMOLGA_SHADOW = 2154;
        EMOLGA_PURIFIED = 2155;
        KARRABLAST_NORMAL = 2156;
        KARRABLAST_SHADOW = 2157;
        KARRABLAST_PURIFIED = 2158;
        ESCAVALIER_NORMAL = 2159;
        ESCAVALIER_SHADOW = 2160;
        ESCAVALIER_PURIFIED = 2161;
        FOONGUS_NORMAL = 2162;
        FOONGUS_SHADOW = 2163;
        FOONGUS_PURIFIED = 2164;
        AMOONGUSS_NORMAL = 2165;
        AMOONGUSS_SHADOW = 2166;
        AMOONGUSS_PURIFIED = 2167;
        FRILLISH_NORMAL = 2168;
        FRILLISH_SHADOW = 2169;
        FRILLISH_PURIFIED = 2170;
        JELLICENT_NORMAL = 2171;
        JELLICENT_SHADOW = 2172;
        JELLICENT_PURIFIED = 2173;
        ALOMOMOLA_NORMAL = 2174;
        ALOMOMOLA_SHADOW = 2175;
        ALOMOMOLA_PURIFIED = 2176;
        JOLTIK_NORMAL = 2177;
        JOLTIK_SHADOW = 2178;
        JOLTIK_PURIFIED = 2179;
        GALVANTULA_NORMAL = 2180;
        GALVANTULA_SHADOW = 2181;
        GALVANTULA_PURIFIED = 2182;
        FERROSEED_NORMAL = 2183;
        FERROSEED_SHADOW = 2184;
        FERROSEED_PURIFIED = 2185;
        FERROTHORN_NORMAL = 2186;
        FERROTHORN_SHADOW = 2187;
        FERROTHORN_PURIFIED = 2188;
        KLINK_NORMAL = 2189;
        KLINK_SHADOW = 2190;
        KLINK_PURIFIED = 2191;
        KLANG_NORMAL = 2192;
        KLANG_SHADOW = 2193;
        KLANG_PURIFIED = 2194;
        KLINKLANG_NORMAL = 2195;
        KLINKLANG_SHADOW = 2196;
        KLINKLANG_PURIFIED = 2197;
        TYNAMO_NORMAL = 2198;
        TYNAMO_SHADOW = 2199;
        TYNAMO_PURIFIED = 2200;
        EELEKTRIK_NORMAL = 2201;
        EELEKTRIK_SHADOW = 2202;
        EELEKTRIK_PURIFIED = 2203;
        EELEKTROSS_NORMAL = 2204;
        EELEKTROSS_SHADOW = 2205;
        EELEKTROSS_PURIFIED = 2206;
        ELGYEM_NORMAL = 2207;
        ELGYEM_SHADOW = 2208;
        ELGYEM_PURIFIED = 2209;
        BEHEEYEM_NORMAL = 2210;
        BEHEEYEM_SHADOW = 2211;
        BEHEEYEM_PURIFIED = 2212;
        LITWICK_NORMAL = 2213;
        LITWICK_SHADOW = 2214;
        LITWICK_PURIFIED = 2215;
        LAMPENT_NORMAL = 2216;
        LAMPENT_SHADOW = 2217;
        LAMPENT_PURIFIED = 2218;
        CHANDELURE_NORMAL = 2219;
        CHANDELURE_SHADOW = 2220;
        CHANDELURE_PURIFIED = 2221;
        AXEW_NORMAL = 2222;
        AXEW_SHADOW = 2223;
        AXEW_PURIFIED = 2224;
        FRAXURE_NORMAL = 2225;
        FRAXURE_SHADOW = 2226;
        FRAXURE_PURIFIED = 2227;
        HAXORUS_NORMAL = 2228;
        HAXORUS_SHADOW = 2229;
        HAXORUS_PURIFIED = 2230;
        CUBCHOO_NORMAL = 2231;
        CUBCHOO_SHADOW = 2232;
        CUBCHOO_PURIFIED = 2233;
        BEARTIC_NORMAL = 2234;
        BEARTIC_SHADOW = 2235;
        BEARTIC_PURIFIED = 2236;
        CRYOGONAL_NORMAL = 2237;
        CRYOGONAL_SHADOW = 2238;
        CRYOGONAL_PURIFIED = 2239;
        SHELMET_NORMAL = 2240;
        SHELMET_SHADOW = 2241;
        SHELMET_PURIFIED = 2242;
        ACCELGOR_NORMAL = 2243;
        ACCELGOR_SHADOW = 2244;
        ACCELGOR_PURIFIED = 2245;
        STUNFISK_NORMAL = 2246;
        STUNFISK_SHADOW = 2247;
        STUNFISK_PURIFIED = 2248;
        MIENFOO_NORMAL = 2249;
        MIENFOO_SHADOW = 2250;
        MIENFOO_PURIFIED = 2251;
        MIENSHAO_NORMAL = 2252;
        MIENSHAO_SHADOW = 2253;
        MIENSHAO_PURIFIED = 2254;
        DRUDDIGON_NORMAL = 2255;
        DRUDDIGON_SHADOW = 2256;
        DRUDDIGON_PURIFIED = 2257;
        GOLETT_NORMAL = 2258;
        GOLETT_SHADOW = 2259;
        GOLETT_PURIFIED = 2260;
        GOLURK_NORMAL = 2261;
        GOLURK_SHADOW = 2262;
        GOLURK_PURIFIED = 2263;
        PAWNIARD_NORMAL = 2264;
        PAWNIARD_SHADOW = 2265;
        PAWNIARD_PURIFIED = 2266;
        BISHARP_NORMAL = 2267;
        BISHARP_SHADOW = 2268;
        BISHARP_PURIFIED = 2269;
        BOUFFALANT_NORMAL = 2270;
        BOUFFALANT_SHADOW = 2271;
        BOUFFALANT_PURIFIED = 2272;
        RUFFLET_NORMAL = 2273;
        RUFFLET_SHADOW = 2274;
        RUFFLET_PURIFIED = 2275;
        BRAVIARY_NORMAL = 2276;
        BRAVIARY_SHADOW = 2277;
        BRAVIARY_PURIFIED = 2278;
        VULLABY_NORMAL = 2279;
        VULLABY_SHADOW = 2280;
        VULLABY_PURIFIED = 2281;
        MANDIBUZZ_NORMAL = 2282;
        MANDIBUZZ_SHADOW = 2283;
        MANDIBUZZ_PURIFIED = 2284;
        HEATMOR_NORMAL = 2285;
        HEATMOR_SHADOW = 2286;
        HEATMOR_PURIFIED = 2287;
        DURANT_NORMAL = 2288;
        DURANT_SHADOW = 2289;
        DURANT_PURIFIED = 2290;
        DEINO_NORMAL = 2291;
        DEINO_SHADOW = 2292;
        DEINO_PURIFIED = 2293;
        ZWEILOUS_NORMAL = 2294;
        ZWEILOUS_SHADOW = 2295;
        ZWEILOUS_PURIFIED = 2296;
        HYDREIGON_NORMAL = 2297;
        HYDREIGON_SHADOW = 2298;
        HYDREIGON_PURIFIED = 2299;
        LARVESTA_NORMAL = 2300;
        LARVESTA_SHADOW = 2301;
        LARVESTA_PURIFIED = 2302;
        VOLCARONA_NORMAL = 2303;
        VOLCARONA_SHADOW = 2304;
        VOLCARONA_PURIFIED = 2305;
        COBALION_NORMAL = 2306;
        COBALION_SHADOW = 2307;
        COBALION_PURIFIED = 2308;
        TERRAKION_NORMAL = 2309;
        TERRAKION_SHADOW = 2310;
        TERRAKION_PURIFIED = 2311;
        VIRIZION_NORMAL = 2312;
        VIRIZION_SHADOW = 2313;
        VIRIZION_PURIFIED = 2314;
        RESHIRAM_NORMAL = 2315;
        RESHIRAM_SHADOW = 2316;
        RESHIRAM_PURIFIED = 2317;
        ZEKROM_NORMAL = 2318;
        ZEKROM_SHADOW = 2319;
        ZEKROM_PURIFIED = 2320;
        MELTAN_NORMAL = 2321;
        MELTAN_SHADOW = 2322;
        MELTAN_PURIFIED = 2323;
        MELMETAL_NORMAL = 2324;
        MELMETAL_SHADOW = 2325;
        MELMETAL_PURIFIED = 2326;
        WURMPLE_SPRING_2020 = 2327;
        WOBBUFFET_SPRING_2020 = 2328;
        RATICATE_SPRING_2020 = 2329;
        FRILLISH_FEMALE = 2330;
        JELLICENT_FEMALE = 2331;
        PIKACHU_COSTUME_2020 = 2332;
        DRAGONITE_COSTUME_2020 = 2333;
        ONIX_COSTUME_2020 = 2334;
    }

    // ref: Holoholo.Rpc.PokemonDisplayProto/Types/Gender
    enum Gender {
        GENDER_UNSET = 0;
        MALE = 1;
        FEMALE = 2;
        GENDERLESS = 3;
    }

    Costume costume = 1;
    Gender gender = 2;
    bool shiny = 3;
    Form form = 4;
    GameplayWeatherProto.WeatherCondition weather_boosted_condition = 5;
    Alignment alignment = 6;
    PokemonBadge pokemon_badge = 7;
}

// ref: Holoholo.Rpc.PokemonEncounterAttributesProto
message PokemonEncounterAttributesProto {
    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;
    HoloPokemonMovementType movement_type = 6;
    float movement_timer_s = 7;
    float jump_time_s = 8;
    float attack_timer_s = 9;
    int32 bonus_candy_capture_reward = 10;
    int32 bonus_stardust_capture_reward = 11;
    float attack_probability = 12;
    float dodge_probability = 13;
    float dodge_duration_s = 14;
    float dodge_distance = 15;
    float camera_distance = 16;
    float min_pokemon_action_frequency_s = 17;
    float max_pokemon_action_frequency_s = 18;
}

// ref: Holoholo.Rpc.PokemonEncounterRewardProto
message PokemonEncounterRewardProto {
    // ref: Holoholo.Rpc.PokemonEncounterRewardProto/TypeOneofCase
    //oneof Type {
        //none = 0;
        //pokemon_id = 1;
        //use_quest_pokemon_encounter_distribuition = 2;
    //}

    HoloPokemonId pokemon_id = 1;
    bool use_quest_pokemon_encounter_distribuition = 2;
    PokemonDisplayProto pokemon_display = 3;
    bool is_hidden_ditto = 4;
    PokemonDisplayProto ditto_display = 5;
}

// ref: Holoholo.Rpc.PokemonFamilyProto
message PokemonFamilyProto {
    HoloPokemonFamilyId family_id = 1;
    int32 candy = 2;
}

// ref: Holoholo.Rpc.PokemonFortProto
message PokemonFortProto {
    string fort_id = 1;
    int64 last_modified_ms = 2;
    double latitude = 3;
    double longitude = 4;
    int32 team = 5;
    int32 guard_pokemon_id = 6;
    int32 guard_pokemon_level = 7;
    bool enabled = 8;
    FortType fort_type = 9;
    int64 gym_points = 10;
    bool is_in_battle = 11;
    repeated Item active_fort_modifier = 12;
    MapPokemonProto active_pokemon = 13;
    int64 cooldown_complete_ms = 14;
    FortSponsor.Sponsor sponsor = 15;
    FortRenderingType.RenderingType rendering_type = 16;
    int64 deploy_lockout_end_ms = 17;
    PokemonDisplayProto guard_pokemon_display = 18;
    bool closed = 19;
    RaidInfoProto raid_info = 20;
    GymDisplayProto gym_display = 21;
    bool visited = 22;
    int64 same_team_deploy_lockout_end_ms = 23;
    bool allow_checkin = 24;
    string image_url = 25;
    bool in_event = 26;
    string banner_url = 27;
    string partner_id = 28;
    bool challenge_quest_completed = 30;
    bool is_ex_raid_eligible = 31;
    PokestopIncidentDisplayProto pokestop_display = 32;
    repeated PokestopIncidentDisplayProto pokestop_displays = 33;
}

// ref: Holoholo.Rpc.PokemonGlobalSettingsProto
message PokemonGlobalSettingsProto {
    bool enable_camo_shader = 1;
    bool display_pokemon_badge_on_model = 2;
}

// ref: Holoholo.Rpc.PokemonGoPlusTelemetry
message PokemonGoPlusTelemetry {
    PokemonGoPlusIds pgp_event_ids = 1;
    int32 count = 2;
    int32 version = 3;
}

// ref: Holoholo.Rpc.PokemonInfo
message PokemonInfo {
    PokemonProto pokemon = 1;
    int32 current_health = 2;
    int32 current_energy = 3;
}

// ref: Holoholo.Rpc.PokemonInventoryTelemetry
message PokemonInventoryTelemetry {
    PokemonInventoryTelemetryIds pokemon_inventory_click_ids = 1;
    string sort_id = 2;
}

// ref: Holoholo.Rpc.PokemonProto
message PokemonProto {
    fixed64 id = 1;
    int32 pokemon_id = 2;
    int32 cp = 3;
    int32 stamina = 4;
    int32 max_stamina = 5;
    int32 move1 = 6;
    int32 move2 = 7;
    string deployed_fort_id = 8;
    string owner_name = 9;
    bool is_egg = 10;
    double egg_km_walked_target = 11;
    double egg_km_walked_start = 12;
    PokemonCreateContext origin = 14;
    float height_m = 15;
    float weight_kg = 16;
    int32 individual_attack = 17;
    int32 individual_defense = 18;
    int32 individual_stamina = 19;
    float cp_multiplier = 20;
    Item pokeball = 21;
    int64 captured_s2_cell_id = 22;
    int32 battles_attacked = 23;
    int32 battles_defended = 24;
    string egg_incubator_id = 25;
    int64 creation_time_ms = 26;
    int32 num_upgrades = 27;
    float additional_cp_multiplier = 28;
    bool favorite = 29;
    string nickname = 30;
    bool from_fort = 31;
    int32 buddy_candy_awarded = 32;
    float buddy_km_walked = 33;
    int32 display_pokemon_id = 34;
    int32 display_cp = 35;
    PokemonDisplayProto pokemon_display = 36;
    bool is_bad = 37;
    bool hatched_from_egg = 38;
    int32 coins_returned = 39;
    int64 deployed_duration_ms = 40;
    int64 deployed_returned_timestamp_ms = 41;
    float cp_multiplier_before_trading = 42;
    int32 trading_original_owner_hash = 43;
    string original_owner_nickname = 44;
    int64 traded_time_ms = 45;
    bool is_lucky = 46;
    int32 move3 = 47;
    PokemonCombatStatsProto pvp_combat_stats = 48;
    PokemonCombatStatsProto npc_combat_stats = 49;
    bool move2_is_purified_exclusive = 50;
    string limited_pokemon_identifier = 51;
    int32 pre_boosted_cp = 52;
    float pre_boosted_additional_cp_multiplier = 53;
    double deployed_gym_lat_degree = 55;
    double deployed_gym_lng_degree = 56;
    HoloPokemonEggType egg_type = 58;
}

// ref: Holoholo.Rpc.PokemonScaleSettingProto
message PokemonScaleSettingProto {
    // ref: Holoholo.Rpc.PokemonScaleSettingProto/Types/PokemonScaleMode
    enum PokemonScaleMode {
        natural_scale = 0;
        gui_scale = 1;
        battle_pokemon_scale = 2;
        raid_boss_scale = 3;
        gym_topper_scale = 4;
        map_pokemon_scale = 5;
    }

    PokemonScaleMode pokemon_scale_mode = 1;
    float min_height = 2;
    float max_height = 3;
}

// ref: Holoholo.Rpc.PokemonSettingsProto
message PokemonSettingsProto {
    // ref: Holoholo.Rpc.PokemonSettingsProto/Types/BuddySize
    enum BuddySize {
        BUDDY_MEDIUM = 0;
        BUDDY_SHOULDER = 1;
        BUDDY_BIG = 2;
        BUDDY_FLYING = 3;
        BUDDY_BABY = 4;
    }

    HoloPokemonId unique_id = 1;
    float model_scale = 3;
    HoloPokemonType type1 = 4;
    HoloPokemonType type2 = 5;
    PokemonCameraAttributesProto camera = 6;
    PokemonEncounterAttributesProto encounter = 7;
    PokemonStatsAttributesProto stats = 8;
    repeated HoloPokemonMove quick_moves = 9;
    repeated HoloPokemonMove cinematic_moves = 10;
    repeated float anim_time = 11;
    repeated HoloPokemonId evolution = 12;
    int32 evolution_pips = 13;
    HoloPokemonClass pokemon_class = 14;
    float pokedex_height_m = 15;
    float pokedex_weight_kg = 16;
    HoloPokemonId parent_id = 17;
    float height_std_dev = 18;
    float weight_std_dev = 19;
    float km_distance_to_hatch = 20;
    HoloPokemonFamilyId family_id = 21;
    int32 candy_to_evolve = 22;
    float km_buddy_distance = 23;
    BuddySize buddy_size = 24;
    float model_height = 25;
    repeated EvolutionBranchProto evolution_branch = 26;
    float model_scale_v2 = 27;
    PokemonDisplayProto.Form form = 28;
    HoloPokemonMove event_quick_move = 29;
    HoloPokemonMove event_cinematic_move = 30;
    repeated float buddy_offset_male = 31;
    repeated float buddy_offset_female = 32;
    float buddy_scale = 33;
    repeated float buddy_portrait_offset = 34;
    PokemonDisplayProto.Form parent_form = 35;
    PokemonThirdMoveAttributesProto third_move = 36;
    bool is_transferable = 37;
    bool is_deployable = 38;
    repeated float combat_shoulder_camera_angle = 39;
    bool is_tradable = 40;
    repeated float combat_default_camera_angle = 41;
    repeated float combat_opponent_focus_camera_angle = 42;
    repeated float combat_player_focus_camera_angle = 43;
    repeated float combat_player_pokemon_position_offset = 44;
    repeated AnimationOverrideProto photobomb_animation_overrides = 45;
    ShadowAttributesProto shadow = 46;
    int32 buddy_group_number = 47;
    int32 additional_cp_boost_level = 48;
    repeated HoloPokemonMove elite_quick_move = 49;
    repeated HoloPokemonMove elite_cinematic_move = 50;
}

// ref: Holoholo.Rpc.PokemonStaminaUpdateProto
message PokemonStaminaUpdateProto {
    fixed64 pokemon_id = 1;
    int32 updated_stamina = 2;
}

// ref: Holoholo.Rpc.PokemonStatsAttributesProto
message PokemonStatsAttributesProto {
    int32 base_stamina = 1;
    int32 base_attack = 2;
    int32 base_defense = 3;
    int32 dodge_energy_delta = 8;
}

// ref: Holoholo.Rpc.PokemonSummaryFortProto
message PokemonSummaryFortProto {
    string fort_summary_id = 1;
    int64 last_modified_ms = 2;
    double latitude = 3;
    double longitude = 4;
}

// ref: Holoholo.Rpc.PokemonTelemetry
message PokemonTelemetry {
    int32 pokemon_id = 1;
    int32 cp = 2;
    float weight_kg = 3;
    float height_m = 4;
    int32 pokemon_level = 5;
}

// ref: Holoholo.Rpc.PokemonThirdMoveAttributesProto
message PokemonThirdMoveAttributesProto {
    int32 stardust_to_unlock = 1;
    int32 candy_to_unlock = 2;
}

// ref: Holoholo.Rpc.PokemonUpgradeSettingsProto
message PokemonUpgradeSettingsProto {
    int32 upgrades_per_level = 1;
    int32 allowed_levels_above_player = 2;
    repeated int32 candy_cost = 3;
    repeated int32 stardust_cost = 4;
    float shadow_stardust_multiplier = 5;
    float shadow_candy_multiplier = 6;
    float purified_stardust_multiplier = 7;
    float purified_candy_multiplier = 8;
    int32 max_normal_upgrade_level = 9;
    int32 default_cp_boost_additional_level = 10;
}

// ref: Holoholo.Rpc.PokestopIncidentDisplayProto
message PokestopIncidentDisplayProto {
    // ref: Holoholo.Rpc.PokestopIncidentDisplayProto/MapDisplayOneofCase
    //oneof MapDisplay {
        //none = 0;
        //character_display = 10;
        //invasion_finished = 11;
    //}

    string incident_id = 1;
    int64 incident_start_ms = 2;
    int64 incident_expiration_ms = 3;
    bool hide_incident = 4;
    bool incident_completed = 5;
    IncidentDisplayType incident_display_type = 6;
    int32 incident_display_order_priority = 7;
    bool continue_displaying_incident = 8;
    CharacterDisplayProto character_display = 10;
    InvasionFinishedDisplayProto invasion_finished = 11;
}

// ref: Holoholo.Rpc.PokestopReward
message PokestopReward {
    int32 item_id = 1;
    int32 item_count = 2;
}

// ref: Holoholo.Rpc.PotionAttributesProto
message PotionAttributesProto {
    float sta_percent = 1;
    int32 sta_amount = 2;
}

// ref: Holoholo.Rpc.ProbeProto
message ProbeProto {
    string id = 1;
    string payload = 2;
}

// ref: Holoholo.Rpc.ProbeSettingsProto
message ProbeSettingsProto {
    bool enable_sidechannel = 1;
    bool enable_adhoc = 2;
    int32 adhoc_frequency_sec = 3;
}

// ref: Holoholo.Rpc.ProfilePageTelemetry
message ProfilePageTelemetry {
    ProfilePageTelemetryIds profile_page_click_id = 1;
}

// ref: Holoholo.Rpc.ProjectVacationProto
message ProjectVacationProto {
    bool enable2020 = 1;
}

// ref: Holoholo.Rpc.PtcToken
message PtcToken {
    string token = 1;
    int32 expiration = 2;
}

// ref: Holoholo.Rpc.PurifyPokemonLogEntry
message PurifyPokemonLogEntry {
    HoloPokemonId pokemon_id = 1;
    PokemonDisplayProto pokemon_display = 2;
    fixed64 purified_pokemon_uuid = 3;
}

// ref: Holoholo.Rpc.PurifyPokemonOutProto
message PurifyPokemonOutProto {
    // ref: Holoholo.Rpc.PurifyPokemonOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INSUFFICIENT_FUNDS = 3;
        ERROR_POKEMON_DEPLOYED = 4;
        ERROR_POKEMON_NOT_FOUND = 5;
        ERROR_POKEMON_NOT_SHADOW = 6;
    }

    Status status = 1;
    PokemonProto purified_pokemon = 2;
}

// ref: Holoholo.Rpc.PurifyPokemonProto
message PurifyPokemonProto {
    fixed64 pokemon_id = 1;
}

// ref: Holoholo.Rpc.PushNotificationTelemetry
message PushNotificationTelemetry {
    PushNotificationTelemetryIds notification_id = 1;
    string category = 2;
}

// ref: Holoholo.Rpc.QuestConditionProto
message QuestConditionProto {
    // ref: Holoholo.Rpc.QuestConditionProto/ConditionOneofCase
    //oneof Condition {
        //none = 0;
        //with_pokemon_type = 2;
        //with_pokemon_category = 3;
        //with_weather_boost = 4;
        //with_daily_capture_bonus = 5;
        //with_daily_spin_bonus = 6;
        //with_win_raid_status = 7;
        //with_raid_level = 8;
        //with_throw_type = 9;
        //with_win_gym_battle_status = 10;
        //with_super_effective_charge_move = 11;
        //with_item = 12;
        //with_unique_pokestop = 13;
        //with_quest_context = 14;
        //with_badge_type = 15;
        //with_player_level = 16;
        //with_win_battle_status = 17;
        //with_unique_pokemon = 18;
        //with_npc_combat = 19;
        //with_pvp_combat = 20;
        //with_location = 21;
        //with_distance = 22;
        //with_invasion_character = 23;
        //with_pokemon_alignment = 24;
        //with_buddy = 25;
        //with_daily_buddy_affection = 26;
    //}

    // ref: Holoholo.Rpc.QuestConditionProto/Types/ConditionType
    enum ConditionType {
        UNSET = 0;
        WITH_POKEMON_TYPE = 1;
        WITH_POKEMON_CATEGORY = 2;
        WITH_WEATHER_BOOST = 3;
        WITH_DAILY_CAPTURE_BONUS = 4;
        WITH_DAILY_SPIN_BONUS = 5;
        WITH_WIN_RAID_STATUS = 6;
        WITH_RAID_LEVEL = 7;
        WITH_THROW_TYPE = 8;
        WITH_WIN_GYM_BATTLE_STATUS = 9;
        WITH_SUPER_EFFECTIVE_CHARGE = 10;
        WITH_ITEM = 11;
        WITH_UNIQUE_POKESTOP = 12;
        WITH_QUEST_CONTEXT = 13;
        WITH_THROW_TYPE_IN_A_ROW = 14;
        WITH_CURVE_BALL = 15;
        WITH_BADGE_TYPE = 16;
        WITH_PLAYER_LEVEL = 17;
        WITH_WIN_BATTLE_STATUS = 18;
        WITH_NEW_FRIEND = 19;
        WITH_DAYS_IN_A_ROW = 20;
        WITH_UNIQUE_POKEMON = 21;
        WITH_NPC_COMBAT = 22;
        WITH_PVP_COMBAT = 23;
        WITH_LOCATION = 24;
        WITH_DISTANCE = 25;
        WITH_POKEMON_ALIGNMENT = 26;
        WITH_INVASION_CHARACTER = 27;
        WITH_BUDDY = 28;
        WITH_BUDDY_INTERESTING_POI = 29;
        WITH_DAILY_BUDDY_AFFECTION = 30;
    }

    ConditionType type = 1;
    WithPokemonTypeProto with_pokemon_type = 2;
    WithPokemonCategoryProto with_pokemon_category = 3;
    WithWeatherBoostProto with_weather_boost = 4;
    WithDailyCaptureBonusProto with_daily_capture_bonus = 5;
    WithDailySpinBonusProto with_daily_spin_bonus = 6;
    WithWinRaidStatusProto with_win_raid_status = 7;
    WithRaidLevelProto with_raid_level = 8;
    WithThrowTypeProto with_throw_type = 9;
    WithWinGymBattleStatusProto with_win_gym_battle_status = 10;
    WithSuperEffectiveChargeMoveProto with_super_effective_charge_move = 11;
    WithItemProto with_item = 12;
    WithUniquePokestopProto with_unique_pokestop = 13;
    WithQuestContextProto with_quest_context = 14;
    WithBadgeTypeProto with_badge_type = 15;
    WithPlayerLevelProto with_player_level = 16;
    WithWinBattleStatusProto with_win_battle_status = 17;
    WithUniquePokemonProto with_unique_pokemon = 18;
    WithNpcCombatProto with_npc_combat = 19;
    WithPvpCombatProto with_pvp_combat = 20;
    WithLocationProto with_location = 21;
    WithDistanceProto with_distance = 22;
    WithInvasionCharacterProto with_invasion_character = 23;
    WithPokemonAlignmentProto with_pokemon_alignment = 24;
    WithBuddyProto with_buddy = 25;
    WithDailyBuddyAffectionProto with_daily_buddy_affection = 26;
}

// ref: Holoholo.Rpc.QuestDialogProto
message QuestDialogProto {
    // ref: Holoholo.Rpc.QuestDialogProto/Types/Character
    enum Character {
        CHARACTER_UNSET = 0;
        PROFESSOR_WILLOW = 1;
    }

    // ref: Holoholo.Rpc.QuestDialogProto/Types/CharacterExpression
    enum CharacterExpression {
        EXPRESSION_UNSET = 0;
        HAPPY = 1;
        SYMPATHETIC = 2;
        ENERGETIC = 3;
        PUSHY = 4;
        IMPATIENT = 5;
        ADMIRATION = 6;
    }

    string text = 1;
    CharacterExpression expression = 2;
    string image_uri = 3;
    Character character = 4;
}

// ref: Holoholo.Rpc.QuestDisplayProto
message QuestDisplayProto {
    string quest_id = 1;
    repeated QuestDialogProto dialog = 2;
    string description = 3;
    string title = 4;
    int32 slot = 5;
    repeated QuestDisplayProto subquest_displays = 6;
    bool story_ending_quest = 7;
    string story_ending_description = 8;
    string tag_color = 9;
    string tag_string = 10;
    string sponsor_string = 11;
    string partner_id = 12;
}

// ref: Holoholo.Rpc.QuestEncounterOutProto
message QuestEncounterOutProto {
    // ref: Holoholo.Rpc.QuestEncounterOutProto/Types/Result
    enum Result {
        QUEST_ENCOUNTER_UNKNOWN = 0;
        QUEST_ENCOUNTER_SUCCESS = 1;
        QUEST_ENCOUNTER_NOT_AVAILABLE = 2;
        QUEST_ENCOUNTER_ALREADY_FINISHED = 3;
        POKEMON_INVENTORY_FULL = 4;
    }

    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;
}

// ref: Holoholo.Rpc.QuestEncounterProto
message QuestEncounterProto {
    fixed64 pokemon_id = 1;
    string quest_id = 2;
}

// ref: Holoholo.Rpc.QuestGlobalSettingsProto
message QuestGlobalSettingsProto {
    bool enable_quests = 1;
    int32 max_challenge_quests = 2;
    bool enable_show_sponsor_name = 3;
}

// ref: Holoholo.Rpc.QuestGoalProto
message QuestGoalProto {
    repeated QuestConditionProto condition = 1;
    int32 target = 2;
}

// ref: Holoholo.Rpc.QuestPokemonEncounterProto
message QuestPokemonEncounterProto {
    string quest_id = 1;
    PokemonProto pokemon = 2;
    EncounterType encounter_type = 3;
    bool is_hidden_ditto = 4;
    PokemonProto ditto = 5;
}

// ref: Holoholo.Rpc.QuestPreconditionProto
message QuestPreconditionProto {
    // ref: Holoholo.Rpc.QuestPreconditionProto/ConditionOneofCase
    //oneof Condition {
        //none = 0;
        //quest_template_id = 2;
        //level = 3;
        //medal = 4;
        //quests = 5;
        //month_year_bucket = 6;
        //group = 7;
    //}

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Group/Types/Name
    enum Name {
        UNSET_NAME = 0;
        GIOVANNI = 1;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Operator
    enum Operator {
        UNSET_OPERATOR = 0;
        EQUALS = 1;
        GREATER_THAN = 2;
        LESS_THAN = 3;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/QuestPreconditionType
    enum QuestPreconditionType {
        QUEST_PRECONDITION_UNSET_QUESTPRECONDITIONTYPE = 0;
        QUEST_PRECONDITION_QUEST = 1;
        QUEST_PRECONDITION_LEVEL = 2;
        QUEST_PRECONDITION_MEDAL = 3;
        QUEST_PRECONDITION_IS_MINOR = 4;
        QUEST_PRECONDITION_EXCLUSIVE_QUESTS = 5;
        QUEST_PRECONDITION_NEVER = 6;
        QUEST_PRECONDITION_RECEIVED_ANY_LISTED_QUEST = 7;
        QUEST_PRECONDITION_MONTH_YEAR_BUCKET = 8;
        QUEST_PRECONDITION_EXCLUSIVE_IN_PROGRESS_GROUP = 9;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Group
    message Group {
        // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Group/Types/Name
        enum Name {
            UNSET_NAME = 0;
            GIOVANNI = 1;
        }

        Name name = 1;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Level
    message Level {
        Operator operator = 1;
        int32 level = 2;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Medal
    message Medal {
        HoloBadgeType type = 1;
        Operator operator = 2;
        int32 badge_rank = 3;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/MonthYearBucket
    message MonthYearBucket {
        int32 year = 1;
        int32 month = 2;
    }

    // ref: Holoholo.Rpc.QuestPreconditionProto/Types/Quests
    message Quests {
        repeated string quest_template_ids = 1;
    }

    QuestPreconditionType type = 1;
    string quest_template_id = 2;
    Level level = 3;
    Medal medal = 4;
    Quests quests = 5;
    MonthYearBucket month_year_bucket = 6;
    Group group = 7;
}

// ref: Holoholo.Rpc.QuestProto
message QuestProto {
    // ref: Holoholo.Rpc.QuestProto/Types/Context
    enum Context {
        UNSET = 0;
        STORY_QUEST = 1;
        CHALLENGE_QUEST = 2;
        DAILY_COIN_QUEST = 3;
        TIMED_STORY_QUEST = 4;
    }

    // ref: Holoholo.Rpc.QuestProto/QuestOneofCase
    //oneof Quest {
        //none = 0;
        //daily_quest = 2;
        //multi_part = 3;
        //catch_pokemon = 4;
        //add_friend = 5;
        //trade_pokemon = 6;
        //daily_buddy_affection = 7;
        //quest_walk = 8;
        //evolve_into_pokemon = 9;
    //}

    // ref: Holoholo.Rpc.QuestProto/Types/Status
    enum Status {
        STATUS_UNDEFINED = 0;
        STATUS_ACTIVE = 1;
        STATUS_COMPLETED = 2;
    }

    QuestType quest_type = 1;
    DailyQuestProto daily_quest = 2;
    MultiPartQuestProto multi_part = 3;
    CatchPokemonQuestProto catch_pokemon = 4;
    AddFriendQuestProto add_friend = 5;
    TradePokemonQuestProto trade_pokemon = 6;
    DailyBuddyAffectionQuestProto daily_buddy_affection = 7;
    QuestWalkProto quest_walk = 8;
    EvolveIntoPokemonQuestProto evolve_into_pokemon = 9;
    DaysWithARowQuestProto days_in_arow = 99;
    string quest_id = 100;
    int64 quest_seed = 101;
    Context quest_context = 102;
    string template_id = 103;
    int32 progress = 104;
    QuestGoalProto goal = 105;
    Status status = 106;
    repeated QuestRewardProto quest_rewards = 107;
    int64 creation_timestamp_ms = 108;
    int64 last_update_timestamp_ms = 109;
    int64 compeletion_timestamp_ms = 110;
    string fort_id = 111;
    bool admin_generated = 112;
    bool stamp_count_override_enabled = 113;
    int32 stamp_count_override = 114;
    int64 s2_cell_id = 115;
    int32 story_quest_template_version = 116;
    DailyCounterProto daily_counter = 117;
    string reward_pokemon_icon_url = 118;
    int64 end_timestamp_ms = 119;
}

// ref: Holoholo.Rpc.QuestRewardProto
message QuestRewardProto {
    // ref: Holoholo.Rpc.QuestRewardProto/RewardOneofCase
    //oneof Reward {
        //none = 0;
        //exp = 2;
        //item = 3;
        //stardust = 4;
        //candy = 5;
        //avatar_template_id = 6;
        //quest_template_id = 7;
        //pokemon_encounter = 8;
        //pokecoin = 9;
    //}

    // ref: Holoholo.Rpc.QuestRewardProto/Types/Type
    enum Type {
        UNSET = 0;
        EXPERIENCE = 1;
        ITEM = 2;
        STARDUST = 3;
        CANDY = 4;
        AVATAR_CLOTHING = 5;
        QUEST = 6;
        POKEMON_ENCOUNTER = 7;
        POKECOIN = 8;
    }

    Type type = 1;
    int32 exp = 2;
    ItemRewardProto item = 3;
    int32 stardust = 4;
    PokemonCandyRewardProto candy = 5;
    string avatar_template_id = 6;
    string quest_template_id = 7;
    PokemonEncounterRewardProto pokemon_encounter = 8;
    int32 pokecoin = 9;
}

// ref: Holoholo.Rpc.QuestSettingsProto
message QuestSettingsProto {
    QuestType quest_type = 1;
    DailyQuestSettings daily_quest = 2;
}

// ref: Holoholo.Rpc.QuestsProto
message QuestsProto {
    repeated QuestProto quest = 1;
    repeated string completed_story_quest = 2;
    repeated QuestPokemonEncounterProto quest_pokemon_encounter = 3;
    QuestStampCardProto stamp_card = 4;
}

// ref: Holoholo.Rpc.QuestStampCardProto
message QuestStampCardProto {
    repeated QuestStampProto stamp = 1;
    int32 target = 2;
    int32 remaining_daily_stamps = 3;
    string id = 4;
    string icon_url = 5;
}

// ref: Holoholo.Rpc.QuestStampProto
message QuestStampProto {
    QuestProto.Context context = 1;
    uint64 timestamp_ms = 2;
}

// ref: Holoholo.Rpc.QuestWalkProto
message QuestWalkProto {
    float quest_start_km_walked = 1;
}

// ref: Holoholo.Rpc.QuitCombatOutProto
message QuitCombatOutProto {
    // ref: Holoholo.Rpc.QuitCombatOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_COMBAT_NOT_FOUND = 2;
        ERROR_INVALID_COMBAT_STATE = 3;
        ERROR_PLAYER_NOT_IN_COMBAT = 4;
    }

    Result result = 1;
    CombatProto combat = 2;
}

// ref: Holoholo.Rpc.QuitCombatProto
message QuitCombatProto {
    string combat_id = 1;
}

// ref: Holoholo.Rpc.RaidClientSettingsProto
message RaidClientSettingsProto {
    bool remote_raid_enabled = 1;
    int32 max_remote_raid_passes = 2;
    float remote_damage_modifier = 3;
    int32 remote_raids_min_player_level = 4;
    int32 max_num_friend_invites = 5;
    int32 friend_invite_cutoff_time_sec = 6;
    bool can_invite_friends_in_person = 7;
    bool can_invite_friends_remotely = 8;
}

// ref: Holoholo.Rpc.RaidEncounterProto
message RaidEncounterProto {
    PokemonProto pokemon = 1;
    int64 encounter_id = 2;
    string spawnpoint_id = 3;
    CaptureProbabilityProto capture_probabilities = 4;
    int32 throws_remaining = 5;
    RaidLevel raid_level = 6;
    string fort_id = 7;
    bool is_exclusive = 8;
    bool is_event_legendary = 9;
}

// ref: Holoholo.Rpc.RaidInfoProto
message RaidInfoProto {
    int64 raid_seed = 1;
    int64 raid_spawn_ms = 2;
    int64 raid_battle_ms = 3;
    int64 raid_end_ms = 4;
    PokemonProto raid_pokemon = 5;
    RaidLevel raid_level = 6;
    bool complete = 7;
    bool is_exclusive = 8;
    bool is_raid_hidden = 9;
    bool is_scheduled_raid = 10;
    bool is_free = 11;
    string campaign_id = 12;
}

// ref: Holoholo.Rpc.RaidInviteFriendsSettingsProto
message RaidInviteFriendsSettingsProto {
    int32 raid_invite_min_level = 1;
}

// ref: Holoholo.Rpc.RaidProto
message RaidProto {
    int64 raid_seed = 1;
    int64 started_ms = 2;
    int64 completed_ms = 3;
    HoloPokemonId encounter_pokemon_id = 4;
    bool completed_battle = 5;
    bool received_rewards = 6;
    bool finished_encounter = 7;
    bool received_default_rewards = 8;
    bool incremented_raid_friends = 9;
    int64 completed_battle_ms = 10;
    int32 num_friend_invites = 11;
    bool is_remote = 12;
}

// ref: Holoholo.Rpc.RaidRewardsLogEntry
message RaidRewardsLogEntry {
    // ref: Holoholo.Rpc.RaidRewardsLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    bool is_exclusive = 2;
    repeated ItemProto items = 3;
    repeated ItemProto default_rewards = 4;
    int32 stardust = 5;
}

// ref: Holoholo.Rpc.RaidTelemetry
message RaidTelemetry {
    RaidTelemetryIds raid_telemetry_id = 1;
    string bundle_version = 2;
    float time_since_enter_raid = 3;
    float time_since_last_raid_telemetry = 4;
    int32 raid_level = 5;
    bool private_lobby = 6;
    string ticket_item = 7;
    int32 num_players_in_lobby = 8;
    int32 battle_party_number = 9;
}

// ref: Holoholo.Rpc.RaidTicketProto
message RaidTicketProto {
    string ticket_id = 1;
    Item item = 2;
    ExclusiveTicketInfoProto exclusive_info = 4;
}

// ref: Holoholo.Rpc.RaidTicketsProto
message RaidTicketsProto {
    repeated RaidTicketProto raid_ticket = 1;
}

// ref: Holoholo.Rpc.RangeProto
message RangeProto {
    int32 min = 1;
    int32 max = 2;
}

// ref: Holoholo.Rpc.ReadPointOfInterestDescriptionTelemetry
message ReadPointOfInterestDescriptionTelemetry {
    string result = 1;
    string fort_id = 2;
    int32 fort_type = 3;
    string partner_id = 4;
    string campaign_id = 5;
}

// ref: Holoholo.Rpc.ReassignPlayerOutProto
message ReassignPlayerOutProto {
    // ref: Holoholo.Rpc.ReassignPlayerOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    int32 reassigned_instance = 2;
}

// ref: Holoholo.Rpc.ReassignPlayerProto
message ReassignPlayerProto {
    int32 current_instance = 1;
}

// ref: Holoholo.Rpc.RecycleItemOutProto
message RecycleItemOutProto {
    // ref: Holoholo.Rpc.RecycleItemOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_ENOUGH_COPIES = 2;
        ERROR_CANNOT_RECYCLE_INCUBATORS = 3;
    }

    Result result = 1;
    int32 new_count = 2;
}

// ref: Holoholo.Rpc.RecycleItemProto
message RecycleItemProto {
    Item item = 1;
    int32 count = 2;
}

// ref: Holoholo.Rpc.RedeemedAvatarItemProto
message RedeemedAvatarItemProto {
    string avatar_template_id = 1;
    int32 item_count = 2;
}

// ref: Holoholo.Rpc.RedeemedItemProto
message RedeemedItemProto {
    Item item = 1;
    int32 item_count = 2;
}

// ref: Holoholo.Rpc.RedeemPasscodeRewardProto
message RedeemPasscodeRewardProto {
    repeated RedeemedItemProto items = 1;
    repeated RedeemedAvatarItemProto avatar_items = 2;
    repeated PokemonProto egg_pokemon = 3;
    repeated PokemonProto pokemon = 4;
    repeated PokeCandyProto poke_candy = 5;
    int32 stardust = 6;
    int32 pokecoins = 7;
    repeated HoloBadgeType badges = 8;
}

// ref: Holoholo.Rpc.RegisterBackgroundDeviceActionProto
message RegisterBackgroundDeviceActionProto {
    string device_type = 1;
    string device_id = 2;
}

// ref: Holoholo.Rpc.RegisterBackgroundDeviceResponseProto
message RegisterBackgroundDeviceResponseProto {
    // ref: Holoholo.Rpc.RegisterBackgroundDeviceResponseProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR = 2;
    }

    Status status = 1;
    BackgroundToken token = 2;
}

// ref: Holoholo.Rpc.RegisterSfidaRequest
message RegisterSfidaRequest {
    string sfida_id = 1;
}

// ref: Holoholo.Rpc.RegisterSfidaResponse
message RegisterSfidaResponse {
    bytes access_token = 1;
}

// ref: Holoholo.Rpc.ReleasePokemonOutProto
message ReleasePokemonOutProto {
    // ref: Holoholo.Rpc.ReleasePokemonOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        POKEMON_DEPLOYED = 2;
        FAILED = 3;
        ERROR_POKEMON_IS_EGG = 4;
        ERROR_POKEMON_IS_BUDDY = 5;
    }

    Status status = 1;
    int32 candy_awarded = 2;
    int32 xl_candy_awarded = 3;
}

// ref: Holoholo.Rpc.ReleasePokemonProto
message ReleasePokemonProto {
    fixed64 pokemon_id = 1;
    repeated fixed64 pokemon_ids = 2;
}

// ref: Holoholo.Rpc.ReleasePokemonTelemetry
message ReleasePokemonTelemetry {
    PokemonTelemetry pokemon = 1;
}

// ref: Holoholo.Rpc.RemoteGiftPingRequestProto
message RemoteGiftPingRequestProto {
}

// ref: Holoholo.Rpc.RemoteGiftPingResponseProto
message RemoteGiftPingResponseProto {
    // ref: Holoholo.Rpc.RemoteGiftPingResponseProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        STILL_IN_COOL_DOWN = 2;
        BUDDY_NOT_SET = 3;
        ERROR_INVENTORY_FULL = 4;
        ERROR_NO_REMOTE_GIFTS = 5;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.RemoteRaidTelemetry
message RemoteRaidTelemetry {
    RemoteRaidTelemetryIds remote_raid_telemetry_id = 1;
    RemoteRaidJoinSource remote_raid_join_source = 2;
    RemoteRaidInviteAcceptSource remote_raid_invite_accept_source = 3;
}

// ref: Holoholo.Rpc.RemoveQuestOutProto
message RemoveQuestOutProto {
    // ref: Holoholo.Rpc.RemoveQuestOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_QUEST_NOT_FOUND = 2;
        ERROR_STORY_QUEST_NOT_REMOVABLE = 3;
    }

    Status status = 1;
}

// ref: Holoholo.Rpc.RemoveQuestProto
message RemoveQuestProto {
    string quest_id = 1;
}

// ref: Holoholo.Rpc.ReviveAttributesProto
message ReviveAttributesProto {
    float sta_percent = 1;
}

// ref: Holoholo.Rpc.RpcResponseTelemetry
message RpcResponseTelemetry {
    float window_duration = 1;
    repeated RpcResponseTime response_timings = 2;
}

// ref: Holoholo.Rpc.RpcResponseTime
message RpcResponseTime {
    Method rpc_id = 1;
    int32 count_call = 2;
    float average_response_time = 3;
}

// ref: Holoholo.Rpc.RpcSocketResponseTelemetry
message RpcSocketResponseTelemetry {
    float window_duration = 1;
    repeated RpcSocketResponseTime response_timings = 2;
}

// ref: Holoholo.Rpc.RpcSocketResponseTime
message RpcSocketResponseTime {
    uint64 request_id = 1;
    string probe_id = 2;
    float response_time = 3;
    bool side_channel = 4;
    bool ad_hoc = 5;
    float ad_hoc_delay = 6;
}

// ref: Holoholo.Rpc.SaveCombatPlayerPreferencesOutProto
message SaveCombatPlayerPreferencesOutProto {
    // ref: Holoholo.Rpc.SaveCombatPlayerPreferencesOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.SaveCombatPlayerPreferencesProto
message SaveCombatPlayerPreferencesProto {
    CombatPlayerPreferencesProto preferences = 1;
}

// ref: Holoholo.Rpc.SavePlayerSnapshotOutProto
message SavePlayerSnapshotOutProto {
    // ref: Holoholo.Rpc.SavePlayerSnapshotOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        TOO_SOON_TO_UPDATE = 2;
        ERROR_FAILED_TO_UPDATE = 3;
        ERROR_REQUEST_TIMED_OUT = 4;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.SavePlayerSnapshotProto
message SavePlayerSnapshotProto {
}

// ref: Holoholo.Rpc.SaveSocialPlayerSettingsOutProto
message SaveSocialPlayerSettingsOutProto {
    // ref: Holoholo.Rpc.SaveSocialPlayerSettingsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.SaveSocialPlayerSettingsProto
message SaveSocialPlayerSettingsProto {
    SocialPlayerSettingsProto settings = 1;
}

// ref: Holoholo.Rpc.ScreenResolutionTelemetry
message ScreenResolutionTelemetry {
    int32 device_width = 1;
    int32 device_height = 2;
}

// ref: Holoholo.Rpc.SendGiftLogEntry
message SendGiftLogEntry {
    // ref: Holoholo.Rpc.SendGiftLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string friend_codename = 2;
}

// ref: Holoholo.Rpc.SendGiftOutProto
message SendGiftOutProto {
    // ref: Holoholo.Rpc.SendGiftOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_PLAYER_DOES_NOT_EXIST = 3;
        ERROR_GIFT_DOES_NOT_EXIST = 4;
        ERROR_GIFT_ALREADY_SENT_TODAY = 5;
        ERROR_PLAYER_HAS_UNOPENED_GIFT = 6;
        ERROR_FRIEND_UPDATE = 7;
    }

    Result result = 1;
    int32 awarded_xp = 2;
}

// ref: Holoholo.Rpc.SendGiftProto
message SendGiftProto {
    fixed64 giftbox_id = 1;
    string player_id = 2;
}

// ref: Holoholo.Rpc.SendProbeOutProto
message SendProbeOutProto {
    // ref: Holoholo.Rpc.SendProbeOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string id = 2;
    int64 server_timestamp_ms = 3;
}

// ref: Holoholo.Rpc.SendProbeProto
message SendProbeProto {
}

// ref: Holoholo.Rpc.SendRaidInvitationOutProto
message SendRaidInvitationOutProto {
    // ref: Holoholo.Rpc.SendRaidInvitationOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NO_PERMISSION = 2;
        ERROR_GYM_NOT_FOUND = 3;
        ERROR_LOBBY_NOT_FOUND = 4;
        ERROR_PAST_CUT_OFF_TIME = 5;
        ERROR_NO_INVITES_REMAINING = 6;
        ERROR_LOBBY_FULL = 7;
    }

    Result result = 1;
    int32 num_friend_invites_remaining = 2;
}

// ref: Holoholo.Rpc.SendRaidInvitationProto
message SendRaidInvitationProto {
    repeated string invitee_ids = 1;
    string gym_id = 2;
    repeated int32 lobby_id = 3;
    double gym_lat_degrees = 4;
    double gym_lng_degrees = 5;
}

// ref: Holoholo.Rpc.SetAvatarItemAsViewedOutProto
message SetAvatarItemAsViewedOutProto {
    // ref: Holoholo.Rpc.SetAvatarItemAsViewedOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.SetAvatarItemAsViewedProto
message SetAvatarItemAsViewedProto {
    repeated string avatar_template_id = 1;
}

// ref: Holoholo.Rpc.SetAvatarOutProto
message SetAvatarOutProto {
    // ref: Holoholo.Rpc.SetAvatarOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        AVATAR_ALREADY_SET = 2;
        FAILURE = 3;
        SLOT_NOT_ALLOWED = 4;
        ITEM_NOT_OWNED = 5;
        INVALID_AVATAR_TYPE = 6;
    }

    Status status = 1;
    ClientPlayerProto player = 2;
}

// ref: Holoholo.Rpc.SetAvatarProto
message SetAvatarProto {
    PlayerAvatarProto player_avatar_proto = 2;
}

// ref: Holoholo.Rpc.SetBuddyPokemonOutProto
message SetBuddyPokemonOutProto {
    // ref: Holoholo.Rpc.SetBuddyPokemonOutProto/Types/Result
    enum Result {
        UNEST = 0;
        SUCCESS = 1;
        ERROR_POKEMON_DEPLOYED = 2;
        ERROR_POKEMON_NOT_OWNED = 3;
        ERROR_POKEMON_IS_EGG = 4;
        ERROR_INVALID_POKEMON = 5;
        ERROR_BUDDY_SWAP_LIMIT_EXCEEDED = 6;
    }

    Result result = 1;
    BuddyPokemonProto updated_buddy = 2;
    BuddyObservedData observed_data = 3;
    double km_remaining = 4;
}

// ref: Holoholo.Rpc.SetBuddyPokemonProto
message SetBuddyPokemonProto {
    fixed64 pokemon_id = 1;
}

// ref: Holoholo.Rpc.SetContactSettingsOutProto
message SetContactSettingsOutProto {
    // ref: Holoholo.Rpc.SetContactSettingsOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        FAILURE = 2;
    }

    Status status = 1;
    ClientPlayerProto player = 2;
}

// ref: Holoholo.Rpc.SetContactSettingsProto
message SetContactSettingsProto {
    ContactSettingsProto contact_settings_proto = 1;
}

// ref: Holoholo.Rpc.SetFavoritePokemonOutProto
message SetFavoritePokemonOutProto {
    // ref: Holoholo.Rpc.SetFavoritePokemonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_POKEMON_NOT_FOUND = 2;
        ERROR_POKEMON_IS_EGG = 3;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.SetFavoritePokemonProto
message SetFavoritePokemonProto {
    int64 pokemon_id = 1;
    bool is_favorite = 2;
}

// ref: Holoholo.Rpc.SetFriendNicknameOutProto
message SetFriendNicknameOutProto {
    // ref: Holoholo.Rpc.SetFriendNicknameOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_NOT_FRIENDS = 3;
        ERROR_EXCEEDED_NICKNAME_LENGTH = 4;
        ERROR_SOCIAL_UPDATE = 5;
        ERROR_FILTERED_NICKNAME = 6;
        ERROR_EXCEEDED_CHANGE_LIMIT = 7;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.SetFriendNicknameProto
message SetFriendNicknameProto {
    string friend_id = 1;
    string friend_nickname = 2;
}

// ref: Holoholo.Rpc.SetLobbyPokemonOutProto
message SetLobbyPokemonOutProto {
    // ref: Holoholo.Rpc.SetLobbyPokemonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_LOBBY_NOT_FOUND = 2;
        ERROR_RAID_UNAVAILABLE = 3;
        ERROR_INVALID_POKEMON = 4;
    }

    Result result = 1;
    LobbyProto lobby = 2;
}

// ref: Holoholo.Rpc.SetLobbyPokemonProto
message SetLobbyPokemonProto {
    int64 raid_seed = 1;
    string gym_id = 2;
    repeated int32 lobby_id = 3;
    repeated fixed64 pokemon_id = 4;
}

// ref: Holoholo.Rpc.SetLobbyVisibilityOutProto
message SetLobbyVisibilityOutProto {
    // ref: Holoholo.Rpc.SetLobbyVisibilityOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_LOBBY_CREATOR = 2;
        ERROR_LOBBY_NOT_FOUND = 3;
        ERROR_RAID_UNAVAILABLE = 4;
    }

    Result result = 1;
    LobbyProto lobby = 2;
}

// ref: Holoholo.Rpc.SetLobbyVisibilityProto
message SetLobbyVisibilityProto {
    int64 raid_seed = 1;
    string gym_id = 2;
    repeated int32 lobby_id = 3;
}

// ref: Holoholo.Rpc.SetPlayerTeamOutProto
message SetPlayerTeamOutProto {
    // ref: Holoholo.Rpc.SetPlayerTeamOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        TEAM_ALREADY_SET = 2;
        FAILURE = 3;
    }

    Status status = 1;
    ClientPlayerProto player = 2;
}

// ref: Holoholo.Rpc.SetPlayerTeamProto
message SetPlayerTeamProto {
    Team team = 1;
}

// ref: Holoholo.Rpc.SfidaGlobalSettingsProto
message SfidaGlobalSettingsProto {
    float low_battery_threshold = 1;
}

// ref: Holoholo.Rpc.ShadowAttributesProto
message ShadowAttributesProto {
    uint32 purification_stardust_needed = 1;
    uint32 purification_candy_needed = 2;
    HoloPokemonMove purified_charge_move = 3;
    HoloPokemonMove shadow_charge_move = 4;
}

// ref: Holoholo.Rpc.SharedExclusiveTicketTrainerInfo
message SharedExclusiveTicketTrainerInfo {
    string codename = 1;
    string player_id = 2;
}

// ref: Holoholo.Rpc.ShareExRaidPassLogEntry
message ShareExRaidPassLogEntry {
    // ref: Holoholo.Rpc.ShareExRaidPassLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string friend_codename = 2;
}

// ref: Holoholo.Rpc.ShareExRaidPassOutProto
message ShareExRaidPassOutProto {
    ShareExRaidPassResult result = 1;
    FriendshipLevelDataProto updated_friendship_data = 2;
    PlayerPublicProfileProto friend_profile = 3;
}

// ref: Holoholo.Rpc.ShareExRaidPassProto
message ShareExRaidPassProto {
    string friend_id = 1;
    string fort_id = 2;
    int64 raid_seed = 3;
}

// ref: Holoholo.Rpc.ShoppingPageClickTelemetry
message ShoppingPageClickTelemetry {
    ShoppingPageTelemetryIds shopping_page_click_id = 1;
    ShoppingPageTelemetrySource shopping_page_click_source = 2;
    string item_sku = 3;
    bool has_item = 4;
}

// ref: Holoholo.Rpc.ShoppingPageScrollTelemetry
message ShoppingPageScrollTelemetry {
    ShoppingPageScrollIds scroll_type = 1;
    int32 scroll_row = 2;
    int32 total_rows = 3;
}

// ref: Holoholo.Rpc.ShoppingPageTelemetry
message ShoppingPageTelemetry {
    ShoppingPageTelemetryIds shopping_page_click_id = 1;
}

// ref: Holoholo.Rpc.SmeargleMovesSettingsProto
message SmeargleMovesSettingsProto {
    repeated HoloPokemonMove quick_moves = 1;
    repeated HoloPokemonMove cinematic_moves = 2;
}

// ref: Holoholo.Rpc.SocialClientSettingsProto
message SocialClientSettingsProto {
    bool enable_social = 1;
    int32 max_friend_details = 2;
    int32 player_level_gate = 3;
    int32 max_friend_nickname_length = 4;
    bool enable_add_friend_via_qr_code = 5;
    bool enable_share_ex_pass = 6;
    bool enable_facebook_friends = 7;
    int32 facebook_friend_limit_per_request = 8;
    bool disable_facebook_friends_opening_prompt = 9;
    bool enable_remote_gifting = 12;
}

// ref: Holoholo.Rpc.SocialGiftCountTelemetry
message SocialGiftCountTelemetry {
    int32 unopened_gift_count = 1;
    int32 unsent_gift_count = 2;
}

// ref: Holoholo.Rpc.SocialPlayerSettingsProto
message SocialPlayerSettingsProto {
    bool disable_last_pokemon_caught = 1;
}

// ref: Holoholo.Rpc.SocialTelemetry
message SocialTelemetry {
    SocialTelemetryIds social_click_id = 1;
    int32 pages_scrolled_in_friends_list = 2;
}

// ref: Holoholo.Rpc.SouvenirProto
message SouvenirProto {
    // ref: Holoholo.Rpc.SouvenirProto/Types/SouvenirDetails
    message SouvenirDetails {
        int64 time_picked_up = 1;
        double latitude = 3;
        double longitude = 4;
    }

    SouvenirTypeId souvenir_type_id = 1;
    repeated SouvenirDetails souvenirs_details = 2;
}

// ref: Holoholo.Rpc.SpawnTablePokemonProto
message SpawnTablePokemonProto {
    HoloPokemonId pokemon_id = 1;
    float weight = 2;
    PokemonDisplayProto.Form form = 3;
}

// ref: Holoholo.Rpc.SpinPokestopTelemetry
message SpinPokestopTelemetry {
    string result = 1;
    string fort_id = 2;
    int32 fort_type = 3;
    repeated PokestopReward pokestop_rewards = 4;
    int32 total_rewards = 5;
}

// ref: Holoholo.Rpc.SponsoredDetailsProto
message SponsoredDetailsProto {
    // ref: Holoholo.Rpc.SponsoredDetailsProto/Types/PromoButtonMessageType
    enum PromoButtonMessageType {
        UNSET = 0;
        LEARN_MORE = 1;
        OFFER = 2;
    }

    repeated string promo_image_url = 1;
    repeated string promo_description = 2;
    string call_to_action_link = 3;
    PromoButtonMessageType promo_button_message_type = 4;
    string campaign_id = 5;
    ImageTextCreativeProto promo_image_creative = 6;
}

// ref: Holoholo.Rpc.StardustBoostAttributesProto
message StardustBoostAttributesProto {
    float stardust_multiplier = 1;
    int32 boost_duration_ms = 2;
}

// ref: Holoholo.Rpc.StartGymBattleOutProto
message StartGymBattleOutProto {
    // ref: Holoholo.Rpc.StartGymBattleOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_GYM_NOT_FOUND = 2;
        ERROR_GYM_NEUTRAL = 3;
        ERROR_GYM_WRONG_TEAM = 4;
        ERROR_GYM_EMPTY = 5;
        ERROR_INVALID_DEFENDER = 6;
        ERROR_TRAINING_INVALID_ATTACKER_COUNT = 7;
        ERROR_ALL_POKEMON_FAINTED = 8;
        ERROR_TOO_MANY_BATTLES = 9;
        ERROR_TOO_MANY_PLAYERS = 10;
        ERROR_GYM_BATTLE_LOCKOUT = 11;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 12;
        ERROR_NOT_IN_RANGE = 13;
        ERROR_POI_INACCESSIBLE = 14;
    }

    Result result = 1;
    int64 battle_start_ms = 2;
    int64 battle_end_ms = 3;
    string battle_id = 4;
    BattleParticipantProto defender = 5;
    BattleLogProto battle_log = 6;
    BattleParticipantProto attacker = 7;
    BattleProto battle = 8;
}

// ref: Holoholo.Rpc.StartGymBattleProto
message StartGymBattleProto {
    string gym_id = 1;
    repeated fixed64 attacking_pokemon_id = 2;
    fixed64 defending_pokemon_id = 3;
    double player_lat_degrees = 4;
    double player_lng_degrees = 5;
}

// ref: Holoholo.Rpc.StartIncidentOutProto
message StartIncidentOutProto {
    // ref: Holoholo.Rpc.StartIncidentOutProto/Types/Status
    enum Status {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NOT_IN_RANGE = 2;
        ERROR_INCIDENT_COMPLETED = 3;
        ERROR_INCIDENT_NOT_FOUND = 4;
        ERROR_PLAYER_BELOW_MIN_LEVEL = 5;
        ERROR = 6;
    }

    Status status = 1;
    ClientIncidentProto incident = 2;
}

// ref: Holoholo.Rpc.StartIncidentProto
message StartIncidentProto {
    IncidentLookupProto incident_lookup = 1;
}

// ref: Holoholo.Rpc.StartRaidBattleOutProto
message StartRaidBattleOutProto {
    // ref: Holoholo.Rpc.StartRaidBattleOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_GYM_NOT_FOUND = 2;
        ERROR_RAID_UNAVAILABLE = 3;
        ERROR_RAID_COMPLETED = 4;
        ERROR_INVALID_ATTACKERS = 5;
        ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 6;
        ERROR_NOT_IN_RANGE = 7;
        ERROR_POI_INACCESSIBLE = 8;
        ERROR_LOBBY_NOT_FOUND = 9;
        ERROR_NO_TICKET = 10;
        ERROR_INVALID_SERVER = 11;
        ERROR_NEVER_JOINED_BATTLE = 12;
    }

    Result result = 1;
    BattleProto battle = 2;
}

// ref: Holoholo.Rpc.StartRaidBattleProto
message StartRaidBattleProto {
    string gym_id = 1;
    int64 raid_seed = 2;
    repeated int32 lobby_id = 4;
    repeated fixed64 attacking_pokemon_id = 5;
    double player_lat_degrees = 6;
    double player_lng_degrees = 7;
    double gym_lat_degrees = 8;
    double gym_lng_degrees = 9;
}

// ref: Holoholo.Rpc.StartTutorialOutProto
message StartTutorialOutProto {
    // ref: Holoholo.Rpc.StartTutorialOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_PLAYER_ALREADY_STARTED_TUTORIAL = 2;
        ERROR_FAILED_TO_START = 3;
    }

    Result result = 1;
}

// ref: Holoholo.Rpc.StartTutorialProto
message StartTutorialProto {
    bool onboarding_v2_enabled = 1;
}

// ref: Holoholo.Rpc.SubmitCombatChallengePokemonsOutProto
message SubmitCombatChallengePokemonsOutProto {
    // ref: Holoholo.Rpc.SubmitCombatChallengePokemonsOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_CHALLENGE_STATE = 2;
        ERROR_CHALLENGE_NOT_FOUND = 3;
        ERROR_POKEMON_NOT_IN_INVENTORY = 4;
        ERROR_NOT_ELIGIBLE_LEAGUE = 5;
        ERROR_ALREADY_TIMEDOUT = 6;
        ERROR_ALREADY_CANCELLED = 7;
        ERROR_ACCESS_DENIED = 8;
        ERROR_ALREADY_DECLINED = 9;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
}

// ref: Holoholo.Rpc.SubmitCombatChallengePokemonsProto
message SubmitCombatChallengePokemonsProto {
    string challenge_id = 1;
    repeated fixed64 attacking_pokemon_id = 2;
}

// ref: Holoholo.Rpc.TeamChangeInfoProto
message TeamChangeInfoProto {
    int64 last_acquired_time = 1;
    int32 num_items_acquired = 2;
}

// ref: Holoholo.Rpc.TelemetryCommon
message TelemetryCommon {
    int64 timestamp = 1;
    string correlation_vector = 2;
    string event_id = 3;
    int64 client_timestamp_ms = 4;
}

// ref: Holoholo.Rpc.TelemetryGlobalSettingsProto
message TelemetryGlobalSettingsProto {
    bool enabled = 1;
    double session_sampling_fraction = 2;
    int32 max_buffer_size_kb = 3;
    int32 batch_size = 4;
    int64 update_interval_ms = 5;
    int64 frame_rate_sample_interval_ms = 6;
    int64 frame_rate_sample_period_ms = 7;
    bool enable_omni_wrapper_sending = 8;
}

// ref: Holoholo.Rpc.ThirdMoveGlobalSettingsProto
message ThirdMoveGlobalSettingsProto {
    bool unlock_enabled = 1;
}

// ref: Holoholo.Rpc.TimedQuestSectionProto
message TimedQuestSectionProto {
    string quest_id = 1;
}

// ref: Holoholo.Rpc.TodayViewProto
message TodayViewProto {
    repeated TodayViewSectionProto sections = 1;
}

// ref: Holoholo.Rpc.TodayViewSectionProto
message TodayViewSectionProto {
    // ref: Holoholo.Rpc.TodayViewSectionProto/SectionOneofCase
    //oneof Section {
        //none = 0;
        //pokecoin = 1;
        //gym_pokemon = 2;
        //streaks = 3;
        //event = 4;
        //up_next = 5;
        //timed_quest = 6;
    //}

    PokecoinSectionProto pokecoin = 1;
    GymPokemonSectionProto gym_pokemon = 2;
    DailyStreaksProto streaks = 3;
    EventSectionProto event = 4;
    UpNextSectionProto up_next = 5;
    TimedQuestSectionProto timed_quest = 6;
}

// ref: Holoholo.Rpc.TradePokemonQuestProto
message TradePokemonQuestProto {
    repeated string friend_id = 1;
}

// ref: Holoholo.Rpc.TradingGlobalSettingsProto
message TradingGlobalSettingsProto {
    bool enable_trading = 1;
    uint32 min_player_level = 2;
}

// ref: Holoholo.Rpc.TradingLogEntry
message TradingLogEntry {
    // ref: Holoholo.Rpc.TradingLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    string friend_codename = 2;
    PokemonProto trade_out_pokemon = 3;
    PokemonProto trade_in_pokemon = 4;
    LootProto rewards = 5;
    LootProto price = 6;
}

// ref: Holoholo.Rpc.TradingProto
message TradingProto {
    // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto/Types/ExcludedPokemon/Types/ExclusionReason
    enum ExclusionReason {
        UNSET_EXCLUSIONREASON = 0;
        MYTHICAL_POKEMON = 1;
        SLASHED = 2;
        GYM_DEPLOYED = 3;
        BUDDY = 4;
        STAMINA_NOT_FULL = 5;
        EGG_NOT_HATCHED = 6;
        FRIENDSHIP_LEVEL_LOW = 7;
        FRIEND_CANNOT_AFFORD = 8;
        FRIEND_REACHED_DAILY_LIMIT = 9;
        ALREADY_TRADED = 10;
        PLAYER_CANNOT_AFFORD = 11;
        PLAYER_REACHED_DAILY_LIMIT = 12;
        FAVORITE = 13;
    }

    // ref: Holoholo.Rpc.TradingProto/Types/TradingState
    enum TradingState {
        UNSET_TRADINGSTATE = 0;
        PRIMORDIAL = 1;
        WAIT = 2;
        ACTIVE = 3;
        CONFIRMED = 4;
        FINISHED = 5;
    }

    // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto/Types/ExcludedPokemon
    message ExcludedPokemon {
        // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto/Types/ExcludedPokemon/Types/ExclusionReason
        enum ExclusionReason {
            UNSET_EXCLUSIONREASON = 0;
            MYTHICAL_POKEMON = 1;
            SLASHED = 2;
            GYM_DEPLOYED = 3;
            BUDDY = 4;
            STAMINA_NOT_FULL = 5;
            EGG_NOT_HATCHED = 6;
            FRIENDSHIP_LEVEL_LOW = 7;
            FRIEND_CANNOT_AFFORD = 8;
            FRIEND_REACHED_DAILY_LIMIT = 9;
            ALREADY_TRADED = 10;
            PLAYER_CANNOT_AFFORD = 11;
            PLAYER_REACHED_DAILY_LIMIT = 12;
            FAVORITE = 13;
        }

        fixed64 pokemon_id = 1;
        ExclusionReason exclusion_reason = 2;
    }

    // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto
    message TradingPlayerProto {
        // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto/Types/ExcludedPokemon/Types/ExclusionReason
        enum ExclusionReason {
            UNSET_EXCLUSIONREASON = 0;
            MYTHICAL_POKEMON = 1;
            SLASHED = 2;
            GYM_DEPLOYED = 3;
            BUDDY = 4;
            STAMINA_NOT_FULL = 5;
            EGG_NOT_HATCHED = 6;
            FRIENDSHIP_LEVEL_LOW = 7;
            FRIEND_CANNOT_AFFORD = 8;
            FRIEND_REACHED_DAILY_LIMIT = 9;
            ALREADY_TRADED = 10;
            PLAYER_CANNOT_AFFORD = 11;
            PLAYER_REACHED_DAILY_LIMIT = 12;
            FAVORITE = 13;
        }

        // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto/Types/ExcludedPokemon
        message ExcludedPokemon {
            // ref: Holoholo.Rpc.TradingProto/Types/TradingPlayerProto/Types/ExcludedPokemon/Types/ExclusionReason
            enum ExclusionReason {
                UNSET_EXCLUSIONREASON = 0;
                MYTHICAL_POKEMON = 1;
                SLASHED = 2;
                GYM_DEPLOYED = 3;
                BUDDY = 4;
                STAMINA_NOT_FULL = 5;
                EGG_NOT_HATCHED = 6;
                FRIENDSHIP_LEVEL_LOW = 7;
                FRIEND_CANNOT_AFFORD = 8;
                FRIEND_REACHED_DAILY_LIMIT = 9;
                ALREADY_TRADED = 10;
                PLAYER_CANNOT_AFFORD = 11;
                PLAYER_REACHED_DAILY_LIMIT = 12;
                FAVORITE = 13;
            }

            fixed64 pokemon_id = 1;
            ExclusionReason exclusion_reason = 2;
        }

        string player_id = 1;
        PlayerPublicProfileProto public_profile = 2;
        repeated ExcludedPokemon excluded_pokemon = 3;
        TradingPokemonProto trading_pokemon = 4;
        LootProto bonus = 5;
        LootProto price = 6;
        bool can_afford_trading = 7;
        bool has_confirmed = 8;
    }

    // ref: Holoholo.Rpc.TradingProto/Types/TradingPokemonProto
    message TradingPokemonProto {
        fixed64 pokemon_id = 1;
        int32 pokedex_entry_number = 2;
        int32 original_cp = 3;
        int32 adjusted_cp_min = 4;
        int32 adjusted_cp_max = 5;
        int32 original_stamina = 6;
        int32 adjusted_stamina_min = 7;
        int32 adjusted_stamina_max = 8;
        bool friend_level_cap = 9;
        int32 move1 = 10;
        int32 move2 = 11;
        PokemonDisplayProto pokemon_display = 12;
        int64 captured_s2_cell_id = 13;
        PokemonProto traded_pokemon = 14;
        Item pokeball = 15;
        int32 individual_attack = 16;
        int32 individual_defense = 17;
        int32 individual_stamina = 18;
        string nickname = 19;
        bool favorite = 20;
        int32 move3 = 21;
        int64 creation_time_ms = 22;
    }

    TradingState state = 1;
    uint64 expiration_ms = 2;
    TradingPlayerProto player = 3;
    TradingPlayerProto friend = 4;
    int64 trading_s2_cell_id = 5;
    string transaction_log = 6;
    FriendshipLevelDataProto friendship_level_data = 7;
    bool is_special_trading = 8;
    FriendshipLevelDataProto pre_trading_friendship_level = 9;
}

// ref: Holoholo.Rpc.TranslationSettingsProto
message TranslationSettingsProto {
    repeated string translation_bundle_ids = 1;
}

// ref: Holoholo.Rpc.TwoWaySharedFriendshipDataProto
message TwoWaySharedFriendshipDataProto {
    // ref: Holoholo.Rpc.TwoWaySharedFriendshipDataProto/Types/SharedMigrations
    message SharedMigrations {
        bool is_gifting_migrated = 1;
    }

    bool is_lucky = 1;
    int32 lucky_count = 2;
    SharedMigrations shared_migrations = 3;
}

// ref: Holoholo.Rpc.TypeEffectiveSettingsProto
message TypeEffectiveSettingsProto {
    repeated float attack_scalar = 1;
    HoloPokemonType attack_type = 2;
}

// ref: Holoholo.Rpc.UncommentAnnotationTestProto
message UncommentAnnotationTestProto {
    string string_property = 1;
    int64 long_property = 2;
}

// ref: Holoholo.Rpc.UnlockPokemonMoveOutProto
message UnlockPokemonMoveOutProto {
    // ref: Holoholo.Rpc.UnlockPokemonMoveOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_POKEMON_NOT_FOUND = 2;
        ERROR_UNLOCK_NOT_AVAILABLE = 3;
        ERROR_ALREADY_UNLOCKED = 4;
        ERROR_INSUFFICIENT_RESOURCES = 5;
        ERROR_DISABLED = 6;
    }

    Result result = 1;
    PokemonProto unlocked_pokemon = 2;
}

// ref: Holoholo.Rpc.UnlockPokemonMoveProto
message UnlockPokemonMoveProto {
    fixed64 pokemon_id = 1;
}

// ref: Holoholo.Rpc.UpdateCombatOutProto
message UpdateCombatOutProto {
    // ref: Holoholo.Rpc.UpdateCombatOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_COMBAT_STATE = 2;
        ERROR_COMBAT_NOT_FOUND = 3;
        ERROR_PLAYER_NOT_IN_COMBAT = 4;
        ERROR_ILLEGAL_ACTION = 5;
        ERROR_INVALID_SUBMIT_TIME = 6;
        ERROR_PLAYER_IN_MINIGAME = 7;
        ERROR_EXISTING_QUEUED_ATTACK = 8;
        ERROR_INVALID_CHANGE_POKEMON = 9;
        ERROR_INSUFFICIENT_ENERGY = 10;
        ERROR_INVALID_MOVE = 11;
        ERROR_INVALID_DURATION_TURNS = 12;
        ERROR_INVALID_MINIGAME_STATE = 13;
        ERROR_INVALID_QUICK_SWAP_POKEMON = 14;
        ERROR_QUICK_SWAP_NOT_AVAILABLE = 15;
    }

    Result result = 1;
    CombatProto combat = 2;
}

// ref: Holoholo.Rpc.UpdateCombatProto
message UpdateCombatProto {
    string combat_id = 1;
    CombatActionProto action = 2;
    string debug_log = 3;
}

// ref: Holoholo.Rpc.UpdateInvasionBattleOutProto
message UpdateInvasionBattleOutProto {
    InvasionStatus.Status status = 1;
    LootProto rewards = 2;
    bool map_fragment_upgraded = 3;
}

// ref: Holoholo.Rpc.UpdateInvasionBattleProto
message UpdateInvasionBattleProto {
    // ref: Holoholo.Rpc.UpdateInvasionBattleProto/Types/UpdateType
    enum UpdateType {
        POKEMON_HEALTH = 0;
        WIN_BATTLE = 1;
        LOSE_BATTLE = 2;
    }

    IncidentLookupProto incident_lookup = 1;
    int32 step = 2;
    repeated PokemonStaminaUpdateProto health_update = 3;
    bool complete_battle = 4;
    UpdateType update_type = 5;
}

// ref: Holoholo.Rpc.UpdateTradingOutProto
message UpdateTradingOutProto {
    // ref: Holoholo.Rpc.UpdateTradingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_UNKNOWN = 2;
        ERROR_FRIEND_NOT_FOUND = 3;
        ERROR_INVALID_PLAYER_ID = 4;
        ERROR_INVALID_STATE = 5;
        ERROR_STATE_HANDLER = 6;
        ERROR_INVALID_POKEMON = 7;
        ERROR_INSUFFICIENT_PAYMENT = 8;
        ERROR_TRADING_EXPIRED = 9;
        ERROR_TRADING_FINISHED = 10;
    }

    Result result = 1;
    TradingProto trading = 2;
}

// ref: Holoholo.Rpc.UpdateTradingProto
message UpdateTradingProto {
    string player_id = 1;
    fixed64 pokemon_id = 2;
}

// ref: Holoholo.Rpc.UpgradePokemonOutProto
message UpgradePokemonOutProto {
    // ref: Holoholo.Rpc.UpgradePokemonOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_POKEMON_NOT_FOUND = 2;
        ERROR_INSUFFICIENT_RESOURCES = 3;
        ERROR_UPGRADE_NOT_AVAILABLE = 4;
        ERROR_POKEMON_IS_DEPLOYED = 5;
        ERROR_DUPLICATE_REQUEST = 6;
    }

    // ref: Holoholo.Rpc.UpgradePokemonOutProto/Types/BulkUpgradesCost
    message BulkUpgradesCost {
        int32 number_of_upgrades = 1;
        int32 pokemon_level = 2;
        int32 pokemon_cp = 3;
        int32 total_stardust_cost = 4;
        int32 total_candy_cost = 5;
        float total_cp_multiplier = 6;
        int32 total_xl_candy_cost = 7;
    }

    Result result = 1;
    PokemonProto upgraded_pokemon = 2;
    PokemonProto next_upgraded_pokemon = 3;
    repeated BulkUpgradesCost bulk_upgrades_cost_table = 4;
}

// ref: Holoholo.Rpc.UpgradePokemonProto
message UpgradePokemonProto {
    fixed64 pokemon_id = 1;
    bool preview = 2;
    uint32 number_of_upgrades = 3;
    int32 pokemon_current_cp = 4;
}

// ref: Holoholo.Rpc.UpNextSectionProto
message UpNextSectionProto {
    repeated string event_id = 1;
}

// ref: Holoholo.Rpc.UpsightLoggingSettingsProto
message UpsightLoggingSettingsProto {
    bool use_verbose_logging = 1;
    int32 logging_percentage = 2;
    bool disable_logging = 3;
}

// ref: Holoholo.Rpc.UseIncenseActionOutProto
message UseIncenseActionOutProto {
    // ref: Holoholo.Rpc.UseIncenseActionOutProto/Types/Result
    enum Result {
        UNKNOWN = 0;
        SUCCESS = 1;
        INCENSE_ALREADY_ACTIVE = 2;
        NONE_IN_INVENTORY = 3;
        LOCATION_UNSET = 4;
    }

    Result result = 1;
    AppliedItemProto applied_incense = 2;
}

// ref: Holoholo.Rpc.UseIncenseActionProto
message UseIncenseActionProto {
    Item incense_type = 1;
}

// ref: Holoholo.Rpc.UseItemCaptureOutProto
message UseItemCaptureOutProto {
    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;
}

// ref: Holoholo.Rpc.UseItemCaptureProto
message UseItemCaptureProto {
    Item item = 1;
    fixed64 encounter_id = 2;
    string spawn_point_guid = 3;
}

// ref: Holoholo.Rpc.UseItemEggIncubatorOutProto
message UseItemEggIncubatorOutProto {
    // ref: Holoholo.Rpc.UseItemEggIncubatorOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INCUBATOR_NOT_FOUND = 2;
        ERROR_POKEMON_EGG_NOT_FOUND = 3;
        ERROR_POKEMON_ID_NOT_EGG = 4;
        ERROR_INCUBATOR_ALREADY_IN_USE = 5;
        ERROR_POKEMON_ALREADY_INCUBATING = 6;
        ERROR_INCUBATOR_NO_USES_REMAINING = 7;
    }

    Result result = 1;
    EggIncubatorProto egg_incubator = 2;
}

// ref: Holoholo.Rpc.UseItemEggIncubatorProto
message UseItemEggIncubatorProto {
    string item_id = 1;
    int64 pokemond_id = 2;
}

// ref: Holoholo.Rpc.UseItemEncounterOutProto
message UseItemEncounterOutProto {
    // ref: Holoholo.Rpc.UseItemEncounterOutProto/Types/Status
    enum Status {
        SUCCESS = 0;
        ALREADY_COMPLETED = 1;
        ACTIVE_ITEM_EXISTS = 2;
        NO_ITEM_IN_INVENTORY = 3;
        INVALID_ITEM_CATEGORY = 4;
    }

    Status status = 1;
    CaptureProbabilityProto capture_probability = 2;
    Item active_item = 3;
}

// ref: Holoholo.Rpc.UseItemEncounterProto
message UseItemEncounterProto {
    Item item = 1;
    fixed64 encounter_id = 2;
    string spawn_point_guid = 3;
}

// ref: Holoholo.Rpc.UseItemMoveRerollOutProto
message UseItemMoveRerollOutProto {
    // ref: Holoholo.Rpc.UseItemMoveRerollOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        NO_POKEMON = 2;
        NO_OTHER_MOVES = 3;
        NO_PLAYER = 4;
        WRONG_ITEM_TYPE = 5;
        ITEM_NOT_IN_INVENTORY = 6;
        INVALID_POKEMON = 7;
        MOVE_LOCKED = 8;
        MOVE_CANNOT_BE_REROLLED = 9;
        INVALID_ELITE_MOVE = 10;
    }

    Result result = 1;
    PokemonProto updated_pokemon = 2;
}

// ref: Holoholo.Rpc.UseItemMoveRerollProto
message UseItemMoveRerollProto {
    Item item = 1;
    fixed64 pokemon_id = 2;
    bool reroll_unlocked_move = 3;
    HoloPokemonMove target_elite_move = 4;
}

// ref: Holoholo.Rpc.UseItemPotionOutProto
message UseItemPotionOutProto {
    // ref: Holoholo.Rpc.UseItemPotionOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NO_POKEMON = 2;
        ERROR_CANNOT_USE = 3;
        ERROR_DEPLOYED_TO_FORT = 4;
    }

    Result result = 1;
    int32 stamina = 2;
}

// ref: Holoholo.Rpc.UseItemPotionProto
message UseItemPotionProto {
    Item item = 1;
    fixed64 pokemon_id = 2;
}

// ref: Holoholo.Rpc.UseItemRareCandyOutProto
message UseItemRareCandyOutProto {
    // ref: Holoholo.Rpc.UseItemRareCandyOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        INVALID_POKEMON_ID = 2;
        NO_PLAYER = 3;
        WRONG_ITEM_TYPE = 4;
        ITEM_NOT_IN_INVENTORY = 5;
        NOT_ENOUGH_ITEMS = 6;
    }

    Result result = 1;
    HoloPokemonId pokemon_id = 2;
}

// ref: Holoholo.Rpc.UseItemRareCandyProto
message UseItemRareCandyProto {
    Item item = 1;
    HoloPokemonId pokemon_id = 2;
    int32 candy_count = 3;
}

// ref: Holoholo.Rpc.UseItemReviveOutProto
message UseItemReviveOutProto {
    // ref: Holoholo.Rpc.UseItemReviveOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_NO_POKEMON = 2;
        ERROR_CANNOT_USE = 3;
        ERROR_DEPLOYED_TO_FORT = 4;
    }

    Result result = 1;
    int32 stamina = 2;
}

// ref: Holoholo.Rpc.UseItemReviveProto
message UseItemReviveProto {
    Item item = 1;
    fixed64 pokemon_id = 2;
}

// ref: Holoholo.Rpc.UseItemStardustBoostOutProto
message UseItemStardustBoostOutProto {
    // ref: Holoholo.Rpc.UseItemStardustBoostOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_ITEM_TYPE = 2;
        ERROR_STARDUST_BOOST_ALREADY_ACTIVE = 3;
        ERROR_NO_ITEMS_REMAINING = 4;
        ERROR_LOCATION_UNSET = 5;
    }

    Result result = 1;
    AppliedItemsProto applied_items = 2;
}

// ref: Holoholo.Rpc.UseItemStardustBoostProto
message UseItemStardustBoostProto {
    Item item = 1;
}

// ref: Holoholo.Rpc.UseItemXpBoostOutProto
message UseItemXpBoostOutProto {
    // ref: Holoholo.Rpc.UseItemXpBoostOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
        ERROR_INVALID_ITEM_TYPE = 2;
        ERROR_XP_BOOST_ALREADY_ACTIVE = 3;
        ERROR_NO_ITEMS_REMAINING = 4;
        ERROR_LOCATION_UNSET = 5;
    }

    Result result = 1;
    AppliedItemsProto applied_items = 2;
}

// ref: Holoholo.Rpc.UseItemXpBoostProto
message UseItemXpBoostProto {
    Item item = 1;
}

// ref: Holoholo.Rpc.UserAttributesProto
message UserAttributesProto {
    int32 level = 1;
    int64 xp_percentage = 2;
    int64 pokecoin_count = 3;
    int32 team = 4;
    int32 catch_streak = 5;
    int32 spin_streak = 6;
    string buddy_name = 7;
    bool is_egg_incubating = 8;
    bool has_eggs = 9;
    int32 star_piece_count = 10;
    int32 lucky_egg_count = 11;
    int32 incense_ordinary_count = 12;
    int32 incense_spicy_count = 13;
    int32 incense_cool_count = 14;
    int32 incense_floral_count = 15;
    int32 lure_ordinary_count = 16;
    int32 lure_mossy_count = 17;
    int32 lure_glacial_count = 18;
    int32 lure_magnetic_count = 19;
    bool using_star_piece = 20;
    bool using_lucky_egg = 21;
    bool using_incense_ordinary = 22;
    bool using_incense_spicy = 23;
    bool using_incense_cool = 24;
    bool using_incense_floral = 25;
    bool using_lure_ordinary = 26;
    bool using_lure_mossy = 27;
    bool using_lure_glacial = 28;
    bool using_lure_magnetic = 29;
    bool adventure_sync_opt_in = 30;
    bool geo_fence_opt_in = 31;
    int32 kanto_dex_count = 32;
    int32 johto_dex_count = 33;
    int32 hoenn_dex_count = 34;
    int32 sinnoh_dex_count = 35;
    int32 friend_count = 36;
    int32 field_research_stamp_progress = 37;
    int32 level_up = 38;
    bool sent_friend_request = 39;
    string is_egg_incubating_v2 = 40;
    string has_eggs_v2 = 41;
    string using_star_piece_v2 = 42;
    string using_lucky_egg_v2 = 43;
    string using_incense_ordinary_v2 = 44;
    string using_incense_spicy_v2 = 45;
    string using_incense_cool_v2 = 46;
    string using_incense_floral_v2 = 47;
    string using_lure_ordinary_v2 = 48;
    string using_lure_mossy_v2 = 49;
    string using_lure_glacial_v2 = 50;
    string using_lure_magnetic_v2 = 51;
    string adventure_sync_opt_in_v2 = 52;
    string geo_fence_opt_in_v2 = 53;
    int32 unova_dex_count = 54;
}

// ref: Holoholo.Rpc.UserIssueWeatherReport
message UserIssueWeatherReport {
    string gameplayer_weather = 1;
    bool alert_active = 2;
    int32 severity = 3;
    int32 user_report = 4;
}

// ref: Holoholo.Rpc.VerifyChallengeOutProto
message VerifyChallengeOutProto {
    bool success = 1;
}

// ref: Holoholo.Rpc.VerifyChallengeProto
message VerifyChallengeProto {
    string token = 1;
}

// ref: Holoholo.Rpc.ViewPointOfInterestImageTelemetry
message ViewPointOfInterestImageTelemetry {
    string result = 1;
    string fort_id = 2;
    int32 fort_type = 3;
    bool in_range = 4;
    bool was_gym_interior = 5;
    string partner_id = 6;
    string campaign_id = 7;
}

// ref: Holoholo.Rpc.VsSeekerAttributesProto
message VsSeekerAttributesProto {
    // ref: Holoholo.Rpc.VsSeekerAttributesProto/Types/VsSeekerStatus
    enum VsSeekerStatus {
        UNSET = 0;
        STARTED_CHARGING = 1;
        FULLY_CHARGED = 2;
        ACTIVATED = 3;
    }

    VsSeekerStatus vs_seeker_status = 1;
    double start_km_walked = 2;
    double target_km_walked = 3;
    int32 battle_granted_remaining = 4;
    int32 max_battles_in_set = 6;
    VsSeekerRewardTrack reward_track = 7;
    string battle_now_sku_id = 8;
    bool additional_battles_granted = 9;
}

// ref: Holoholo.Rpc.VsSeekerBattleResult
message VsSeekerBattleResult {
    CombatPlayerFinishState battle_result = 1;
    bool rewards_claimed = 2;
    bool is_pending_pokemon_reward = 3;
}

// ref: Holoholo.Rpc.VsSeekerClientSettingsProto
message VsSeekerClientSettingsProto {
    string upgrade_iap_sku_id = 1;
    repeated string allowed_vs_seeker_league_template_id = 2;
}

// ref: Holoholo.Rpc.VsSeekerCompleteSeasonLogEntry
message VsSeekerCompleteSeasonLogEntry {
    // ref: Holoholo.Rpc.VsSeekerCompleteSeasonLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    LootProto rewards = 2;
    int32 rank = 3;
    float rating = 4;
}

// ref: Holoholo.Rpc.VsSeekerLootProto
message VsSeekerLootProto {
    // ref: Holoholo.Rpc.VsSeekerLootProto/Types/RewardProto/RewardTypeOneofCase
    //oneof RewardType {
        //none = 0;
        //item = 1;
        //pokemon_reward = 2;
        //item_loot_table = 3;
        //item_loot_table_count = 4;
        //item_ranking_loot_table_count = 5;
    //}

    // ref: Holoholo.Rpc.VsSeekerLootProto/Types/RewardProto
    message RewardProto {
        // ref: Holoholo.Rpc.VsSeekerLootProto/Types/RewardProto/RewardTypeOneofCase
        //oneof RewardType {
            //none = 0;
            //item = 1;
            //pokemon_reward = 2;
            //item_loot_table = 3;
            //item_loot_table_count = 4;
            //item_ranking_loot_table_count = 5;
        //}

        LootItemProto item = 1;
        bool pokemon_reward = 2;
        bool item_loot_table = 3;
        int32 item_loot_table_count = 4;
        int32 item_ranking_loot_table_count = 5;
    }

    int32 rank_level = 1;
    repeated RewardProto reward = 2;
    VsSeekerRewardTrack reward_track = 3;
}

// ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto
message VsSeekerPokemonRewardsProto {
    // ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto/Types/OverrideIvRangeProto/OverrideTypeOneofCase
    //oneof OverrideType {
        //none = 0;
        //range = 1;
        //zero = 2;
    //}

    // ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto/Types/PokemonUnlockProto/RewardTypeOneofCase
    //oneof RewardType {
        //none = 0;
        //pokemon = 1;
        //limited_pokemon_reward = 2;
        //guaranteed_limited_pokemon_reward = 3;
    //}

    // ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto/Types/OverrideIvRangeProto
    message OverrideIvRangeProto {
        // ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto/Types/OverrideIvRangeProto/OverrideTypeOneofCase
        //oneof OverrideType {
            //none = 0;
            //range = 1;
            //zero = 2;
        //}

        RangeProto range = 1;
        bool zero = 2;
    }

    // ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto/Types/PokemonUnlockProto
    message PokemonUnlockProto {
        // ref: Holoholo.Rpc.VsSeekerPokemonRewardsProto/Types/PokemonUnlockProto/RewardTypeOneofCase
        //oneof RewardType {
            //none = 0;
            //pokemon = 1;
            //limited_pokemon_reward = 2;
            //guaranteed_limited_pokemon_reward = 3;
        //}

        PokemonEncounterRewardProto pokemon = 1;
        LimitedEditionPokemonEncounterRewardProto limited_pokemon_reward = 2;
        LimitedEditionPokemonEncounterRewardProto guaranteed_limited_pokemon_reward = 3;
        int32 unlocked_at_rank = 4;
        float weight = 5;
        OverrideIvRangeProto attack_iv_override = 6;
        OverrideIvRangeProto defense_iv_override = 7;
        OverrideIvRangeProto stamina_iv_override = 8;
    }

    repeated PokemonUnlockProto available_pokemon = 1;
    VsSeekerRewardTrack reward_track = 2;
}

// ref: Holoholo.Rpc.VsSeekerRewardEncounterOutProto
message VsSeekerRewardEncounterOutProto {
    // ref: Holoholo.Rpc.VsSeekerRewardEncounterOutProto/Types/Result
    enum Result {
        VS_SEEKER_ENCOUNTER_UNKNOWN = 0;
        VS_SEEKER_ENCOUNTER_SUCCESS = 1;
        VS_SEEKER_ENCOUNTER_ALREADY_FINISHED = 2;
        ERROR_PLAYER_NOT_ENOUGH_VICTORIES = 3;
        ERROR_POKEMON_INVENTORY_FULL = 4;
        ERROR_REDEEM_ITEM = 5;
    }

    Result result = 1;
    PokemonProto pokemon = 2;
    CaptureProbabilityProto capture_probability = 3;
    Item active_item = 4;
    fixed64 encounter_id = 5;
}

// ref: Holoholo.Rpc.VsSeekerRewardEncounterProto
message VsSeekerRewardEncounterProto {
    int32 win_index = 1;
}

// ref: Holoholo.Rpc.VsSeekerSetLogEntry
message VsSeekerSetLogEntry {
    // ref: Holoholo.Rpc.VsSeekerSetLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    LootProto rewards = 2;
    int32 new_rank = 3;
    float new_rating = 4;
    int32 previous_rank = 5;
    float previous_rating = 6;
    int32 number_of_wins = 7;
    int32 number_of_battles = 8;
}

// ref: Holoholo.Rpc.VsSeekerStartMatchmakingOutProto
message VsSeekerStartMatchmakingOutProto {
    // ref: Holoholo.Rpc.VsSeekerStartMatchmakingOutProto/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS_OPPONENT_FOUND = 1;
        SUCCESS_QUEUED = 2;
        ERROR_NO_BATTLE_PASSES_LEFT = 3;
        ERROR_ALREADY_IN_QUEUE = 4;
        ERROR_VS_SEEKER_PLAYER_IN_WRONG_SEASON = 5;
        ERROR_PLAYER_HAS_NO_VS_SEEKER = 6;
        ERROR_ACCESS_DENIED = 7;
        ERROR_POKEMON_LINEUP_INELIGIBLE_FOR_LEAGUE = 8;
        ERROR_VS_SEEKER_NOT_ACTIVATED = 9;
        ERROR_TEMPORARILY_UNAVAILABLE = 10;
        ERROR_EXCEEDED_LIMIT = 11;
    }

    Result result = 1;
    CombatChallengeProto challenge = 2;
    string queue_id = 3;
}

// ref: Holoholo.Rpc.VsSeekerStartMatchmakingProto
message VsSeekerStartMatchmakingProto {
    string combat_league_template_id = 1;
    repeated fixed64 attacking_pokemon_id = 2;
}

// ref: Holoholo.Rpc.VsSeekerWinRewardsLogEntry
message VsSeekerWinRewardsLogEntry {
    // ref: Holoholo.Rpc.VsSeekerWinRewardsLogEntry/Types/Result
    enum Result {
        UNSET = 0;
        SUCCESS = 1;
    }

    Result result = 1;
    LootProto rewards = 2;
    int32 rank = 3;
    int32 win_number = 4;
}

// ref: Holoholo.Rpc.WallabySettingsProto
message WallabySettingsProto {
    bool enable = 1;
    float activity_length_s = 2;
    uint32 test_mask = 3;
}

// ref: Holoholo.Rpc.WeatherAffinityProto
message WeatherAffinityProto {
    GameplayWeatherProto.WeatherCondition weather_condition = 1;
    repeated HoloPokemonType pokemon_type = 2;
    repeated HoloPokemonType weakness_pokemon_type = 3;
}

// ref: Holoholo.Rpc.WeatherBonusProto
message WeatherBonusProto {
    int32 cp_base_level_bonus = 1;
    int32 guaranteed_individual_values = 2;
    double stardust_bonus_multiplier = 3;
    double attack_bonus_multiplier = 4;
    int32 raid_encounter_cp_base_level_bonus = 5;
    int32 raid_encounter_guaranteed_individual_values = 6;
    int32 buddy_emotion_favorite_weather_increment = 7;
    int32 buddy_emotion_dislike_weather_decrement = 8;
}

// ref: Holoholo.Rpc.WeatherDetailClickTelemetry
message WeatherDetailClickTelemetry {
    string gameplay_weather_type = 1;
    bool alert_active = 2;
    int32 severity = 3;
}

// ref: Holoholo.Rpc.WebTelemetry
message WebTelemetry {
    WebTelemetryIds web_click_ids = 1;
    string url = 2;
    string fort_id = 3;
    string partner_id = 4;
    string campaign_id = 5;
}

// ref: Holoholo.Rpc.WildPokemonProto
message WildPokemonProto {
    fixed64 encounter_id = 1;
    int64 last_modified_ms = 2;
    double latitude = 3;
    double longitude = 4;
    string spawn_point_id = 5;
    PokemonProto pokemon = 7;
    int32 time_till_hidden_ms = 11;
}

// ref: Holoholo.Rpc.WithBadgeTypeProto
message WithBadgeTypeProto {
    repeated HoloBadgeType badge_type = 1;
    int32 badge_rank = 2;
    int32 amount = 3;
}

// ref: Holoholo.Rpc.WithBuddyProto
message WithBuddyProto {
    BuddyLevel min_buddy_level = 1;
    bool must_be_on_map = 2;
}

// ref: Holoholo.Rpc.WithCurveBallProto
message WithCurveBallProto {
}

// ref: Holoholo.Rpc.WithDailyBuddyAffectionProto
message WithDailyBuddyAffectionProto {
    int32 min_buddy_affection_earned_today = 1;
}

// ref: Holoholo.Rpc.WithDailyCaptureBonusProto
message WithDailyCaptureBonusProto {
}

// ref: Holoholo.Rpc.WithDailySpinBonusProto
message WithDailySpinBonusProto {
}

// ref: Holoholo.Rpc.WithDistanceProto
message WithDistanceProto {
    double distance_km = 1;
}

// ref: Holoholo.Rpc.WithInvasionCharacterProto
message WithInvasionCharacterProto {
    repeated EnumWrapper.CharacterCategory category = 1;
}

// ref: Holoholo.Rpc.WithItemProto
message WithItemProto {
    Item item = 1;
}

// ref: Holoholo.Rpc.WithLocationProto
message WithLocationProto {
    repeated int64 s2_cell_id = 1;
}

// ref: Holoholo.Rpc.WithNpcCombatProto
message WithNpcCombatProto {
    bool requires_win = 1;
    repeated string combat_npc_trainer_id = 2;
}

// ref: Holoholo.Rpc.WithPlayerLevelProto
message WithPlayerLevelProto {
    int32 level = 1;
}

// ref: Holoholo.Rpc.WithPokemonAlignmentProto
message WithPokemonAlignmentProto {
    repeated PokemonDisplayProto.Alignment alignment = 1;
}

// ref: Holoholo.Rpc.WithPokemonCategoryProto
message WithPokemonCategoryProto {
    string category_name = 1;
    repeated HoloPokemonId pokemon_ids = 2;
}

// ref: Holoholo.Rpc.WithPokemonCpLimitProto
message WithPokemonCpLimitProto {
    int32 min_cp = 1;
    int32 max_cp = 2;
}

// ref: Holoholo.Rpc.WithPokemonTypeProto
message WithPokemonTypeProto {
    repeated HoloPokemonType pokemon_type = 1;
}

// ref: Holoholo.Rpc.WithPvpCombatProto
message WithPvpCombatProto {
    bool requires_win = 1;
    repeated string combat_league_template_id = 2;
}

// ref: Holoholo.Rpc.WithQuestContextProto
message WithQuestContextProto {
    QuestProto.Context context = 1;
}

// ref: Holoholo.Rpc.WithRaidLevelProto
message WithRaidLevelProto {
    repeated RaidLevel raid_level = 1;
}

// ref: Holoholo.Rpc.WithSuperEffectiveChargeMoveProto
message WithSuperEffectiveChargeMoveProto {
}

// ref: Holoholo.Rpc.WithThrowTypeProto
message WithThrowTypeProto {
    // ref: Holoholo.Rpc.WithThrowTypeProto/ThrowOneofCase
    //oneof Throw {
        //none = 0;
        //throw_type = 1;
        //hit = 2;
    //}

    HoloActivityType throw_type = 1;
    bool hit = 2;
}

// ref: Holoholo.Rpc.WithUniquePokemonProto
message WithUniquePokemonProto {
}

// ref: Holoholo.Rpc.WithUniquePokestopProto
message WithUniquePokestopProto {
}

// ref: Holoholo.Rpc.WithWeatherBoostProto
message WithWeatherBoostProto {
}

// ref: Holoholo.Rpc.WithWinBattleStatusProto
message WithWinBattleStatusProto {
}

// ref: Holoholo.Rpc.WithWinGymBattleStatusProto
message WithWinGymBattleStatusProto {
}

// ref: Holoholo.Rpc.WithWinRaidStatusProto
message WithWinRaidStatusProto {
}

//----- End rpc -----
//------------------------------
//----- Begin rpc -----

// ref: Niantic.Platform.Rpc.ClientUpgradeRequestProto
message ClientUpgradeRequestProto {
    string version = 1;
    ClientOperatingSystem operating_system = 2;
}

// ref: Niantic.Platform.Rpc.ClientUpgradeResponseProto
message ClientUpgradeResponseProto {
    bool needs_upgrade = 1;
}

//----- End rpc -----
//------------------------------
//----- Begin rpc -----

// ref: Niantic.Rpc.ClientWeatherProto
message ClientWeatherProto {
    int64 s2_cell_id = 1;
    DisplayWeatherProto display_weather = 2;
    GameplayWeatherProto gameplay_weather = 3;
    repeated WeatherAlertProto alerts = 4;
}

// ref: Niantic.Rpc.DisplayWeatherProto
message DisplayWeatherProto {
    // ref: Niantic.Rpc.DisplayWeatherProto/Types/DisplayLevel
    enum DisplayLevel {
        LEVEL_0 = 0;
        LEVEL_1 = 1;
        LEVEL_2 = 2;
        LEVEL_3 = 3;
    }

    DisplayLevel cloud_level = 1;
    DisplayLevel rain_level = 2;
    DisplayLevel wind_level = 3;
    DisplayLevel snow_level = 4;
    DisplayLevel fog_level = 5;
    int32 wind_direction = 6;
    DisplayLevel special_effect_level = 7;
}

// ref: Niantic.Rpc.GameplayWeatherProto
message GameplayWeatherProto {
    // ref: Niantic.Rpc.GameplayWeatherProto/Types/WeatherCondition
    enum WeatherCondition {
        NONE = 0;
        CLEAR = 1;
        RAINY = 2;
        PARTLY_CLOUDY = 3;
        OVERCAST = 4;
        WINDY = 5;
        SNOW = 6;
        FOG = 7;
    }

    WeatherCondition gameplay_condition = 1;
}

// ref: Niantic.Rpc.WeatherAlertProto
message WeatherAlertProto {
    // ref: Niantic.Rpc.WeatherAlertProto/Types/Severity
    enum Severity {
        NONE = 0;
        MODERATE = 1;
        EXTREME = 2;
    }

    Severity severity = 1;
    bool warn_weather = 2;
}

//----- End rpc -----
//------------------------------
//----- Begin shared -----

// ref: Com.Nianticproject.Partner.Passcode.Shared.PasscodeRedemptionFlowRequest
message PasscodeRedemptionFlowRequest {
    // ref: Com.Nianticproject.Partner.Passcode.Shared.PasscodeRedemptionFlowRequest/Types/DevicePlatform
    enum DevicePlatform {
        PLATFORM_UNKNOWN = 0;
        PLATFORM_ANDROID = 1;
        PLATFORM_IOS = 2;
        PLATFORM_WEB = 3;
    }

    string passcode = 1;
    string poi_guid = 2;
    DevicePlatform device_platform = 3;
    string carrier = 4;
}

// ref: Com.Nianticproject.Partner.Passcode.Shared.PasscodeRedemptionFlowResponse
message PasscodeRedemptionFlowResponse {
    // ref: Com.Nianticproject.Partner.Passcode.Shared.PasscodeRedemptionFlowResponse/Types/Status
    enum Status {
        STATUS_UNKNOWN = 0;
        STATUS_SUCCESS = 1;
        STATUS_ALREADY_REDEEMED = 2;
        STATUS_FAILED_INVENTORY_CHECK = 3;
        STATUS_OUT_OF_RANGE = 4;
        STATUS_WRONG_LOCATION = 5;
        STATUS_RATE_LIMITED = 6;
        STATUS_INVALID = 7;
        STATUS_FULLY_REDEEMED = 8;
        STATUS_EXPIRED = 9;
    }

    // ref: Com.Nianticproject.Partner.Passcode.Shared.PasscodeRedemptionFlowResponse/Types/Reward
    message Reward {
        string item = 1;
        int32 count = 2;
    }

    Status status = 1;
    int32 inventory_check_failed_reason = 2;
    repeated Reward rewards = 3;
    string passcode_batch_id = 5;
    bytes in_game_reward = 6;
}

//----- End shared -----
//------------------------------
//----- Begin stage -----

// ref: Niantic.Holoholo.Combat.Stage.CameraType
enum CameraType {
    DEFAULT = 0;
    SHOULDER = 1;
    ENEMY_POKEMON_FOCUS = 2;
    MY_POKEMON_FOCUS = 3;
}

// ref: Niantic.Holoholo.Combat.Stage.CameraZoomInLevel
enum CameraZoomInLevel {
    DEFAULT = 0;
    NICE = 1;
    GREAT = 2;
    EXCELLENT = 3;
}

//----- End stage -----
//------------------------------
//----- Begin storefront -----

// ref: Niantic.Holoholo.Storefront.CurrencyType
enum CurrencyType {
    UNKNOWN = 0;
    POKECOIN = 1;
    STARDUST = 2;
}

// ref: Niantic.Holoholo.Storefront.PresentationType
enum PresentationType {
    UNKNOWN = 0;
    CATEGORY = 1;
    SORT = 2;
    SALE = 3;
}

//----- End storefront -----
//------------------------------
//----- Begin telemetry -----

// ref: Niantic.Platform.Analytics.Telemetry.PoiImageType
enum PoiImageType {
    UNSET = 0;
    MAIN = 1;
    SURROUNDING = 2;
}

// ref: Niantic.Platform.Analytics.Telemetry.ApprovedCommonTelemetryProto
message ApprovedCommonTelemetryProto {
    // ref: Niantic.Platform.Analytics.Telemetry.ApprovedCommonTelemetryProto/TelemetryDataOneofCase
    //oneof TelemetryData {
        //none = 0;
        //boot_time = 1;
        //shop_click = 2;
        //shop_view = 3;
        //poi_submission_telemetry = 4;
        //poi_submission_photo_upload_error_telemetry = 5;
        //log_in = 6;
    //}

    CommonTelemetryBootTime boot_time = 1;
    CommonTelemetryShopClick shop_click = 2;
    CommonTelemetryShopView shop_view = 3;
    PoiSubmissionTelemetry poi_submission_telemetry = 4;
    PoiSubmissionPhotoUploadErrorTelemetry poi_submission_photo_upload_error_telemetry = 5;
    CommonTelemetryLogIn log_in = 6;
    ServerRecordMetadata server_data = 7;
    ClientTelemetryCommonFilterProto common_filters = 8;
}

// ref: Niantic.Platform.Analytics.Telemetry.ClientTelemetryBatchProto
message ClientTelemetryBatchProto {
    // ref: Niantic.Platform.Analytics.Telemetry.ClientTelemetryBatchProto/Types/TelemetryScopeId
    enum TelemetryScopeId {
        UNSET = 0;
        DITTO = 1;
        GAME = 2;
        TITAN = 3;
        COMMON = 4;
    }

    TelemetryScopeId telemetry_scope_id = 1;
    repeated ClientTelemetryRecordProto events = 2;
    repeated ClientTelemetryRecordProto metrics = 3;
    string api_version = 4;
    string message_version = 5;
}

// ref: Niantic.Platform.Analytics.Telemetry.ClientTelemetryClientSettingsProto
message ClientTelemetryClientSettingsProto {
    bool is_upload_enabled = 1;
    int64 max_upload_size_in_bytes = 2;
    int64 update_interval_in_sec = 3;
    int64 settings_update_interval_in_sec = 4;
    int64 max_envelope_queue_size = 5;
    double sampling_probability = 6;
    bool use_player_based_sampling = 7;
    double player_hash = 8;
    string player_external_omni_id = 9;
    bool disable_omni_sending = 10;
    map<string, double> special_sampling_probability_map = 11;
    string player_external_ua_id = 12;
}

// ref: Niantic.Platform.Analytics.Telemetry.ClientTelemetryCommonFilterProto
message ClientTelemetryCommonFilterProto {
    string application_identifier = 1;
    string operating_system_name = 2;
    string device_model = 3;
    string locale_country_code = 4;
    string locale_language_code = 5;
    double sampling_probability = 6;
}

// ref: Niantic.Platform.Analytics.Telemetry.ClientTelemetryRecordProto
message ClientTelemetryRecordProto {
    string record_id = 1;
    bytes encoded_message = 2;
    int64 client_timestamp_ms = 3;
    int64 metric_id = 4;
    ClientTelemetryCommonFilterProto common_filters = 5;
}

// ref: Niantic.Platform.Analytics.Telemetry.ClientTelemetrySettingsRequestProto
message ClientTelemetrySettingsRequestProto {
}

// ref: Niantic.Platform.Analytics.Telemetry.CommonTelemetryBootTime
message CommonTelemetryBootTime {
    string boot_phase = 1;
    int64 duration_ms = 2;
}

// ref: Niantic.Platform.Analytics.Telemetry.CommonTelemetryLogIn
message CommonTelemetryLogIn {
    int64 timestamp_ms = 1;
}

// ref: Niantic.Platform.Analytics.Telemetry.CommonTelemetryShopClick
message CommonTelemetryShopClick {
    // ref: Niantic.Platform.Analytics.Telemetry.CommonTelemetryShopClick/Types/AccessType
    enum AccessType {
        UNSPECIFIED = 0;
        PASSIVE = 1;
        ACTIVE = 2;
    }

    string shopping_page_click_id = 1;
    string sku_id = 2;
    string item_id = 3;
    string consolidated_item_id = 4;
    string currency = 5;
    int64 fiat_price = 6;
    repeated InGamePurchaseDetails in_game_purchase_details = 7;
    bool is_item_free_fiat = 8;
    bool is_item_free_ingame = 9;
    int64 time_elapsed_since_enter_page = 10;
    string root_store_page_session_id = 11;
    int64 pair_id = 12;
    string store_page_name = 13;
    string root_store_page_name = 14;
    AccessType access_type = 15;
    string fiat_formatted_price = 16;
}

// ref: Niantic.Platform.Analytics.Telemetry.CommonTelemetryShopView
message CommonTelemetryShopView {
    string shopping_page_view_type_id = 1;
    int64 view_start_timestamp_ms = 2;
    int64 view_end_timestamp_ms = 3;
    repeated string consolidated_item_id = 4;
    string root_store_page_session_id = 5;
}

// ref: Niantic.Platform.Analytics.Telemetry.Distribution
message Distribution {
    // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/BucketTypeOneofCase
    //oneof BucketType {
        //none = 0;
        //linear_buckets = 1;
        //exponential_buckets = 2;
        //explicit_buckets = 3;
    //}

    // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions
    message BucketOptions {
        // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/BucketTypeOneofCase
        //oneof BucketType {
            //none = 0;
            //linear_buckets = 1;
            //exponential_buckets = 2;
            //explicit_buckets = 3;
        //}

        // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/Types/ExplicitBuckets
        message ExplicitBuckets {
            repeated int64 bounds = 1;
        }

        // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/Types/ExponentialBuckets
        message ExponentialBuckets {
            int64 num_finite_buckets = 1;
            float growth_factor = 2;
            float scale = 3;
        }

        // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/Types/LinearBuckets
        message LinearBuckets {
            int64 num_finite_buckets = 1;
            int64 width = 2;
            int64 offset = 3;
        }

        LinearBuckets linear_buckets = 1;
        ExponentialBuckets exponential_buckets = 2;
        ExplicitBuckets explicit_buckets = 3;
    }

    // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/Types/ExplicitBuckets
    message ExplicitBuckets {
        repeated int64 bounds = 1;
    }

    // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/Types/ExponentialBuckets
    message ExponentialBuckets {
        int64 num_finite_buckets = 1;
        float growth_factor = 2;
        float scale = 3;
    }

    // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/BucketOptions/Types/LinearBuckets
    message LinearBuckets {
        int64 num_finite_buckets = 1;
        int64 width = 2;
        int64 offset = 3;
    }

    // ref: Niantic.Platform.Analytics.Telemetry.Distribution/Types/Range
    message Range {
        int64 min = 1;
        int64 max = 2;
    }

    int64 count = 1;
    float mean = 2;
    double sum_of_squared_deviation = 3;
    Range range = 4;
    BucketOptions bucket_options = 5;
    repeated int64 bucket_counts = 6;
}

// ref: Niantic.Platform.Analytics.Telemetry.InGamePurchaseDetails
message InGamePurchaseDetails {
    string ingame_type = 1;
    int64 ingame_price = 2;
    int64 remaining_ingame_balance = 3;
}

// ref: Niantic.Platform.Analytics.Telemetry.PlatformCommonFilterProto
message PlatformCommonFilterProto {
    string application_identifier = 1;
    string operating_system_name = 2;
    string device_model = 3;
    string locale_country_code = 4;
    string locale_language_code = 5;
    double sampling_probability = 6;
}

// ref: Niantic.Platform.Analytics.Telemetry.PlatformMetricData
message PlatformMetricData {
    // ref: Niantic.Platform.Analytics.Telemetry.PlatformMetricData/DatapointValueOneofCase
    //oneof DatapointValue {
        //none = 0;
        //long_value = 2;
        //double_value = 3;
        //boolean_value = 4;
        //distribution = 5;
    //}

    // ref: Niantic.Platform.Analytics.Telemetry.PlatformMetricData/Types/Kind
    enum Kind {
        UNSPECIFIED = 0;
        GAUGE = 1;
        DELTA = 2;
        CUMULATIVE = 3;
    }

    TelemetryCommon common_telemetry = 1;
    int64 long_value = 2;
    double double_value = 3;
    bool boolean_value = 4;
    Distribution distribution = 5;
    Kind metric_kind = 6;
}

// ref: Niantic.Platform.Analytics.Telemetry.PlatformServerData
message PlatformServerData {
    string user_id = 1;
    string telemetry_id = 2;
    string session_id = 3;
    repeated int32 experiment_ids = 4;
    string event_request_id = 5;
    int64 server_timestamp_ms = 6;
}

// ref: Niantic.Platform.Analytics.Telemetry.PoiSubmissionPhotoUploadErrorTelemetry
message PoiSubmissionPhotoUploadErrorTelemetry {
    // ref: Niantic.Platform.Analytics.Telemetry.PoiSubmissionPhotoUploadErrorTelemetry/Types/PoiSubmissionPhotoUploadErrorIds
    enum PoiSubmissionPhotoUploadErrorIds {
        UNSET = 0;
        POI_PHOTO_UPLOAD_ERROR = 1;
        POI_PHOTO_UPLOAD_TIMEOUT = 2;
    }

    PoiSubmissionPhotoUploadErrorIds error_id = 1;
    PoiImageType image_type = 2;
    string error_message = 3;
}

// ref: Niantic.Platform.Analytics.Telemetry.PoiSubmissionTelemetry
message PoiSubmissionTelemetry {
    // ref: Niantic.Platform.Analytics.Telemetry.PoiSubmissionTelemetry/Types/PoiCameraStepIds
    enum PoiCameraStepIds {
        UNSET = 0;
        ENTER = 1;
        RETAKE = 2;
        CONFIRM = 3;
        EXIT = 4;
    }

    // ref: Niantic.Platform.Analytics.Telemetry.PoiSubmissionTelemetry/Types/PoiSubmissionGuiEventId
    enum PoiSubmissionGuiEventId {
        UNKNOWN = 0;
        POI_NOMINATION_ENTER = 1;
        POI_TUTORIAL_COMPLETE = 2;
        POI_MAP_CHANGEDVIEW_MAP = 3;
        POI_MAP_CHANGEDVIEW_SATELLITE = 4;
        POI_MAP_CENTER_LOCATION = 5;
        POI_LOCATION_SET = 6;
        POI_PHOTO_CAMERA_ENTER = 7;
        POI_PHOTO_CAMERA_EXIT = 8;
        POI_TITLE_ENTERED = 9;
        POI_DESCRIPTION_ENTER = 10;
        POI_DETAILS_CONFIRM = 11;
        POI_SUPPORTINGINFO_ENTER = 12;
        POI_SUBMIT_BUTTON_HIT = 13;
        POI_EXIT_BUTTON_HIT = 14;
        POI_NOMINATION_GUIDELINES_HIT = 15;
    }

    PoiSubmissionGuiEventId gui_event_id = 1;
    PoiImageType image_type = 2;
    PoiCameraStepIds camera_step_id = 3;
}

// ref: Niantic.Platform.Analytics.Telemetry.ServerRecordMetadata
message ServerRecordMetadata {
    string user_id = 1;
    string telemetry_name = 2;
    string session_id = 3;
    string request_id = 4;
    int64 server_timestamp_ms = 5;
}

// ref: Niantic.Platform.Analytics.Telemetry.TelemetryCommon
message TelemetryCommon {
    int64 timestamp = 1;
    string correlation_vector = 2;
    string event_id = 3;
    int64 client_timestamp_ms = 4;
}

//----- End telemetry -----
//------------------------------
//----- Begin token -----

// ref: Niantic.Platform.Auth.Token.AppleToken
message AppleToken {
    string id_token = 1;
}

// ref: Niantic.Platform.Auth.Token.FbTokenProto
message FbTokenProto {
    string token = 1;
}

// ref: Niantic.Platform.Auth.Token.GoogleToken
message GoogleToken {
    string id_token = 1;
}

// ref: Niantic.Platform.Auth.Token.SuperAwesomeTokenProto
message SuperAwesomeTokenProto {
    string token = 1;
}

//----- End token -----
//------------------------------
//----- Begin vasa -----

// ref: Niantic.Vasa.AdDetails
message AdDetails {
    ImageTextCreativeProto image_text_creative = 1;
    bytes encrypted_ad_token = 2;
}

// ref: Niantic.Vasa.ImageTextCreativeProto
message ImageTextCreativeProto {
    string name = 1;
    string title = 2;
    string description = 3;
    string preview_image_url = 4;
    string fullscreen_image_url = 5;
    string cta_link = 6;
}

// ref: Niantic.Vasa.ReportAdInteractionProto
message ReportAdInteractionProto {
    // ref: Niantic.Vasa.ReportAdInteractionProto/InteractionTypeOneofCase
    //oneof InteractionType {
        //none = 0;
        //view_impression = 5;
        //view_fullscreen = 6;
        //fullscreen_interaction = 7;
        //cta_clicked = 8;
    //}

    // ref: Niantic.Vasa.ReportAdInteractionProto/Types/CTAClickInteraction
    message CTAClickInteraction {
        string cta_url = 6;
    }

    // ref: Niantic.Vasa.ReportAdInteractionProto/Types/FullScreenInteraction
    message FullScreenInteraction {
        string fullscreen_image_url = 1;
        int64 total_residence_time_ms = 2;
        int64 time_away_ms = 3;
        bool took_screenshot = 4;
    }

    // ref: Niantic.Vasa.ReportAdInteractionProto/Types/ViewFullscreenInteraction
    message ViewFullscreenInteraction {
        string fullscreen_image_url = 1;
    }

    // ref: Niantic.Vasa.ReportAdInteractionProto/Types/ViewImpressionInteraction
    message ViewImpressionInteraction {
        string preview_image_url = 1;
        bool is_persisted_gift = 2;
    }

    string game_id = 1;
    string user_id = 2;
    string guid = 3;
    bytes encrypted_ad_token = 4;
    ViewImpressionInteraction view_impression = 5;
    ViewFullscreenInteraction view_fullscreen = 6;
    FullScreenInteraction fullscreen_interaction = 7;
    CTAClickInteraction cta_clicked = 8;
}

// ref: Niantic.Vasa.ReportAdInteractionResponse
message ReportAdInteractionResponse {
    // ref: Niantic.Vasa.ReportAdInteractionResponse/Types/Status
    enum Status {
        SUCCESS = 0;
        MALFORMED = 1;
        EXPIRED = 2;
    }

    Status status = 1;
}

//----- End vasa -----
//------------------------------

//----- Begin envelopes and siganture -----
//TODO: needs a tests this side no works more after  0.9x.x ipa pokemon go, maybe it is used also in wizards.

message Signature {
    message LocationFix {
        string provider = 1;            // "network", "gps", "fused", possibly others
        uint64 timestamp_snapshot = 2;  // in ms since start
        float altitude = 4;             // Confirmed on android/ios
        float latitude = 13;
        float longitude = 14;
        float speed = 18;                // iOS only (-1 for no reading available, speed in m/s)
        float course = 20;               // iOS only (range seems to be -1 for not reading, and 0 to 360 for reading) confirmed by @marcel
        float horizontal_accuracy = 21;  // in meters, both on Android and iOS
        float vertical_accuracy = 22;    // iOS only
        uint64 provider_status = 26;     // Usually 3 (possibly GPS status: 1 = no fix, 2 = acquiring/inaccurate, 3 = fix acquired)
        // On iOS there are some LocationFixes with unk26=1 and everything else empty
        uint32 floor = 27;               // The floor of the building this person is on
        uint64 location_type = 28;       // Always 1 (if there is data at all)
    }

    // don't really care about this since we're not using it
    message AndroidGpsInfo {
        uint64 time_to_fix = 1;
        repeated int32 satellites_prn = 2;
        repeated float azimuth = 3;
        repeated float elevation = 4;
        repeated float snr = 5;
        repeated bool has_almanac = 6;
        repeated bool has_ephemeris = 7;
        repeated bool used_in_fix = 8;
    }

    message SensorInfo {
        uint64 timestamp_snapshot = 1;  // in ms since start
        double linear_acceleration_x = 3;
        double linear_acceleration_y = 4;
        double linear_acceleration_z = 5;
        double magnetic_field_x = 6;
        double magnetic_field_y = 7;
        double magnetic_field_z = 8;
        int32 magnetic_field_accuracy = 9;
        double attitude_pitch = 10;
        double attitude_yaw = 11;
        double attitude_roll = 12;
        double rotation_rate_x = 13;
        double rotation_rate_y = 14;
        double rotation_rate_z = 15;
        double gravity_x = 16;
        double gravity_y = 17;
        double gravity_z = 18;
        int32 status = 19;
    }

    message DeviceInfo {
        string device_id = 1;  // Hex string
        string android_board_name = 2;
        string android_bootloader = 3;
        string device_brand = 4;             // On Android: product.brand
        string device_model = 5;             // On Android: product.device
        string device_model_identifier = 6;  // Android only, build.display.id
        string device_model_boot = 7;        // On Android: boot.hardware
        string hardware_manufacturer = 8;    // On Android: product.manufacturer
        string hardware_model = 9;           // On Android: product.model
        string firmware_brand = 10;          // On Android: product.name, on iOS: "iPhone OS"
        string firmware_tags = 12;           // Android only, build.tags
        string firmware_type = 13;           // On Android: build.type, on iOS instead: iOS version
        string firmware_fingerprint = 14;    // Android only, build.fingerprint
    }

    // Only used in iOS - Android just sends an empty version
    message ActivityStatus {
        // all of these had 1 as their value
        uint64 start_time_ms = 1;
        bool unknown_status = 2;
        bool walking = 3;
        bool running = 4;
        bool stationary = 5;
        bool automotive = 6;
        bool tilting = 7;
        bool cycling = 8;
        bytes status = 9;
    }

    repeated UnknownMessage field1 = 1;
    uint64 timestamp_since_start = 2;  // in ms
    string field3 = 3;
    repeated LocationFix location_fix = 4;
    repeated AndroidGpsInfo gps_info = 5;
    repeated UnknownMessage field6 = 6;
    repeated SensorInfo sensor_info = 7;
    DeviceInfo device_info = 8;
    ActivityStatus activity_status = 9;
    int32 location_hash1 = 10;
    bool field11 = 11;
    bool field12 = 12;
    int32 field13 = 13;
    int32 field14 = 14;
    string field15 = 15;
    int32 field16 = 16;
    string field17 = 17;
    string field18 = 18;
    bool field19 = 19;
    int32 location_hash2 = 20;
    bool field21 = 21;
    bytes session_hash = 22;            // 32 random bytes, unique per session.
    uint64 timestamp = 23;              // epoch timestamp in ms
    repeated uint64 request_hash = 24;  // hashes of each request message in a hashArray signed based on the auth_token or auth_info - xxhash64
    int64 unknown25 = 25;
    int32 unknown27 = 27;               //Uses values Random (1000 - 60000) but this is not right as worked in < 0.97.x apis.

    // Just a junk message to denote that we don't currently know what message something is.
    message UnknownMessage {
    }
}

message AuthTicket {
    bytes start = 1;
    uint64 expire_timestamp_ms = 2;
    bytes end = 3;
}

message RequestEnvelope {
    int32 status_code = 1;
    uint64 request_id = 3;
    repeated Request requests = 4;
    //Untested maybe needs a good index order
    //repeated SocialRequest social_requests = 5;
    repeated PlatformRequest platform_requests = 6;
    double latitude = 7;
    double longitude = 8;
    double accuracy = 9;
    AuthInfo auth_info = 10;
    AuthTicket auth_ticket = 11;
    int64 ms_since_last_locationfix = 12;

    message AuthInfo {
        string provider = 1;
        JWT token = 2;
        AuthOptions options = 3;

        message JWT {
            string contents = 1;
            int32 unknown2 = 2;
        }

        message AuthOptions {
            bool prevent_account_creation = 1;
        }
    }

    message Request {
        Method request_type = 1;
        bytes request_message = 2;
    }

    message PlatformRequest {
        PlatformClientAction type = 1;
        bytes request_message = 2;
    }

    message SocialRequest {
        SocialAction type = 1;
        bytes request_message = 2;
    }
}

message ResponseEnvelope {
    StatusCode status_code = 1;
    uint64 request_id = 2;
    string api_url = 3;
    //Untested maybe needs a good index order
    //repeated SocialResponse social_returns = 5;
    repeated PlatformResponse platform_returns = 6;
    AuthTicket auth_ticket = 7;

    repeated bytes returns = 100;
    string error = 101;

    message PlatformResponse {
        PlatformClientAction type = 1;
        bytes response = 2;
    }

    message SocialResponse {
        SocialAction type = 1;
        bytes response = 2;
    }

    enum StatusCode {
        UNKNOWN = 0;
        OK = 1;                         // valid response with no api url
        OK_RPC_URL_IN_RESPONSE = 2;     // the response envelope has api_url set and this response is valid
        BAD_REQUEST = 3;                // bad request
        INVALID_REQUEST = 51;           // using unimplemented request or corrupt request
        INVALID_PLATFORM_REQUEST = 52;  // invalid platform request or corrupt platform request
        REDIRECT = 53;                  // a new rpc endpoint is available and you should redirect to there
        SESSION_INVALIDATED = 100;      // occurs when you send blank authinfo, or sending nonsense timings (ie LocationFix.timestampSnapshot == Signature.timestampSinceStart)
        INVALID_AUTH_TOKEN = 102;       // occurs when the login token is invalid
    }
}

//----- End envelopes and siganture -----