context: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: POGOProtos/Data/Battle/BattleAction.proto
  #pragma warning disable 1591, 0612, 3021
  #region Designer generated code
  
  using pb = global::Google.Protobuf;
  using pbc = global::Google.Protobuf.Collections;
  using pbr = global::Google.Protobuf.Reflection;
  using scg = global::System.Collections.Generic;
  namespace POGOProtos.Data.Battle {
  
    /// <summary>Holder for reflection information generated from POGOProtos/Data/Battle/BattleAction.proto</summary>
    public static partial class BattleActionReflection {
  
      #region Descriptor
      /// <summary>File descriptor for POGOProtos/Data/Battle/BattleAction.proto</summary>
      public static pbr::FileDescriptor Descriptor {
        get { return descriptor; }
      }
      private static pbr::FileDescriptor descriptor;
  
      static BattleActionReflection() {
        byte[] descriptorData = global::System.Convert.FromBase64String(
            string.Concat(
              "CilQT0dPUHJvdG9zL0RhdGEvQmF0dGxlL0JhdHRsZUFjdGlvbi5wcm90bxIW",
              "UE9HT1Byb3Rvcy5EYXRhLkJhdHRsZRoqUE9HT1Byb3Rvcy9EYXRhL0JhdHRs",
              "ZS9CYXR0bGVSZXN1bHRzLnByb3RvGi1QT0dPUHJvdG9zL0RhdGEvQmF0dGxl",
              "L0JhdHRsZUFjdGlvblR5cGUucHJvdG8aLlBPR09Qcm90b3MvRGF0YS9CYXR0",
              "bGUvQmF0dGxlUGFydGljaXBhbnQucHJvdG8igwQKDEJhdHRsZUFjdGlvbhI2",
              "CgR0eXBlGAEgASgOMiguUE9HT1Byb3Rvcy5EYXRhLkJhdHRsZS5CYXR0bGVB",
              "Y3Rpb25UeXBlEhcKD2FjdGlvbl9zdGFydF9tcxgCIAEoAxITCgtkdXJhdGlv",
              "bl9tcxgDIAEoBRIUCgxlbmVyZ3lfZGVsdGEYBSABKAUSFgoOYXR0YWNrZXJf",
              "aW5kZXgYBiABKAUSFAoMdGFyZ2V0X2luZGV4GAcgASgFEhkKEWFjdGl2ZV9w",
              "b2tlbW9uX2lkGAggASgGEkAKDXBsYXllcl9qb2luZWQYCSABKAsyKS5QT0dP",
              "UHJvdG9zLkRhdGEuQmF0dGxlLkJhdHRsZVBhcnRpY2lwYW50Ej0KDmJhdHRs",
              "ZV9yZXN1bHRzGAogASgLMiUuUE9HT1Byb3Rvcy5EYXRhLkJhdHRsZS5CYXR0",
              "bGVSZXN1bHRzEikKIWRhbWFnZV93aW5kb3dzX3N0YXJ0X3RpbWVzdGFtcF9t",
              "cxgLIAEoAxInCh9kYW1hZ2Vfd2luZG93c19lbmRfdGltZXN0YW1wX21zGAwg",
              "ASgDEj4KC3BsYXllcl9sZWZ0GA0gASgLMikuUE9HT1Byb3Rvcy5EYXRhLkJh",
              "dHRsZS5CYXR0bGVQYXJ0aWNpcGFudBIZChF0YXJnZXRfcG9rZW1vbl9pZBgO",
              "IAEoBmIGcHJvdG8z"));
        descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
            new pbr::FileDescriptor[] { global::POGOProtos.Data.Battle.BattleResultsReflection.Descriptor, global::POGOProtos.Data.Battle.BattleActionTypeReflection.Descriptor, global::POGOProtos.Data.Battle.BattleParticipantReflection.Descriptor, },
            new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Battle.BattleAction), global::POGOProtos.Data.Battle.BattleAction.Parser, new[]{ "Type", "ActionStartMs", "DurationMs", "EnergyDelta", "AttackerIndex", "TargetIndex", "ActivePokemonId", "PlayerJoined", "BattleResults", "DamageWindowsStartTimestampMs", "DamageWindowsEndTimestampMs", "PlayerLeft", "TargetPokemonId" }, null, null, null)
            }));
      }
      #endregion
  
    }
    #region Messages
    public sealed partial class BattleAction : pb::IMessage<BattleAction> {
      private static readonly pb::MessageParser<BattleAction> _parser = new pb::MessageParser<BattleAction>(() => new BattleAction());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<BattleAction> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Battle.BattleActionReflection.Descriptor.MessageTypes[0]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public BattleAction() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public BattleAction(BattleAction other) : this() {
        type_ = other.type_;
        actionStartMs_ = other.actionStartMs_;
        durationMs_ = other.durationMs_;
        energyDelta_ = other.energyDelta_;
        attackerIndex_ = other.attackerIndex_;
        targetIndex_ = other.targetIndex_;
        activePokemonId_ = other.activePokemonId_;
        PlayerJoined = other.playerJoined_ != null ? other.PlayerJoined.Clone() : null;
        BattleResults = other.battleResults_ != null ? other.BattleResults.Clone() : null;
        damageWindowsStartTimestampMs_ = other.damageWindowsStartTimestampMs_;
        damageWindowsEndTimestampMs_ = other.damageWindowsEndTimestampMs_;
        PlayerLeft = other.playerLeft_ != null ? other.PlayerLeft.Clone() : null;
        targetPokemonId_ = other.targetPokemonId_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public BattleAction Clone() {
        return new BattleAction(this);
      }
  
      /// <summary>Field number for the "type" field.</summary>
      public const int TypeFieldNumber = 1;
      private global::POGOProtos.Data.Battle.BattleActionType type_ = 0;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::POGOProtos.Data.Battle.BattleActionType Type {
        get { return type_; }
        set {
          type_ = value;
        }
      }
  
      /// <summary>Field number for the "action_start_ms" field.</summary>
      public const int ActionStartMsFieldNumber = 2;
      private long actionStartMs_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long ActionStartMs {
        get { return actionStartMs_; }
        set {
          actionStartMs_ = value;
        }
      }
  
      /// <summary>Field number for the "duration_ms" field.</summary>
      public const int DurationMsFieldNumber = 3;
      private int durationMs_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int DurationMs {
        get { return durationMs_; }
        set {
          durationMs_ = value;
        }
      }
  
      /// <summary>Field number for the "energy_delta" field.</summary>
      public const int EnergyDeltaFieldNumber = 5;
      private int energyDelta_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int EnergyDelta {
        get { return energyDelta_; }
        set {
          energyDelta_ = value;
        }
      }
  
      /// <summary>Field number for the "attacker_index" field.</summary>
      public const int AttackerIndexFieldNumber = 6;
      private int attackerIndex_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int AttackerIndex {
        get { return attackerIndex_; }
        set {
          attackerIndex_ = value;
        }
      }
  
      /// <summary>Field number for the "target_index" field.</summary>
      public const int TargetIndexFieldNumber = 7;
      private int targetIndex_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int TargetIndex {
        get { return targetIndex_; }
        set {
          targetIndex_ = value;
        }
      }
  
      /// <summary>Field number for the "active_pokemon_id" field.</summary>
      public const int ActivePokemonIdFieldNumber = 8;
      private ulong activePokemonId_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ulong ActivePokemonId {
        get { return activePokemonId_; }
        set {
          activePokemonId_ = value;
        }
      }
  
      /// <summary>Field number for the "player_joined" field.</summary>
      public const int PlayerJoinedFieldNumber = 9;
      private global::POGOProtos.Data.Battle.BattleParticipant playerJoined_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::POGOProtos.Data.Battle.BattleParticipant PlayerJoined {
        get { return playerJoined_; }
        set {
          playerJoined_ = value;
        }
      }
  
      /// <summary>Field number for the "battle_results" field.</summary>
      public const int BattleResultsFieldNumber = 10;
      private global::POGOProtos.Data.Battle.BattleResults battleResults_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::POGOProtos.Data.Battle.BattleResults BattleResults {
        get { return battleResults_; }
        set {
          battleResults_ = value;
        }
      }
  
      /// <summary>Field number for the "damage_windows_start_timestamp_ms" field.</summary>
      public const int DamageWindowsStartTimestampMsFieldNumber = 11;
      private long damageWindowsStartTimestampMs_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long DamageWindowsStartTimestampMs {
        get { return damageWindowsStartTimestampMs_; }
        set {
          damageWindowsStartTimestampMs_ = value;
        }
      }
  
      /// <summary>Field number for the "damage_windows_end_timestamp_ms" field.</summary>
      public const int DamageWindowsEndTimestampMsFieldNumber = 12;
      private long damageWindowsEndTimestampMs_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long DamageWindowsEndTimestampMs {
        get { return damageWindowsEndTimestampMs_; }
        set {
          damageWindowsEndTimestampMs_ = value;
        }
      }
  
      /// <summary>Field number for the "player_left" field.</summary>
      public const int PlayerLeftFieldNumber = 13;
      private global::POGOProtos.Data.Battle.BattleParticipant playerLeft_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::POGOProtos.Data.Battle.BattleParticipant PlayerLeft {
        get { return playerLeft_; }
        set {
          playerLeft_ = value;
        }
      }
  
      /// <summary>Field number for the "target_pokemon_id" field.</summary>
      public const int TargetPokemonIdFieldNumber = 14;
      private ulong targetPokemonId_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ulong TargetPokemonId {
        get { return targetPokemonId_; }
        set {
          targetPokemonId_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as BattleAction);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(BattleAction other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Type != other.Type) return false;
        if (ActionStartMs != other.ActionStartMs) return false;
        if (DurationMs != other.DurationMs) return false;
        if (EnergyDelta != other.EnergyDelta) return false;
        if (AttackerIndex != other.AttackerIndex) return false;
        if (TargetIndex != other.TargetIndex) return false;
        if (ActivePokemonId != other.ActivePokemonId) return false;
        if (!object.Equals(PlayerJoined, other.PlayerJoined)) return false;
        if (!object.Equals(BattleResults, other.BattleResults)) return false;
        if (DamageWindowsStartTimestampMs != other.DamageWindowsStartTimestampMs) return false;
        if (DamageWindowsEndTimestampMs != other.DamageWindowsEndTimestampMs) return false;
        if (!object.Equals(PlayerLeft, other.PlayerLeft)) return false;
        if (TargetPokemonId != other.TargetPokemonId) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Type != 0) hash ^= Type.GetHashCode();
        if (ActionStartMs != 0L) hash ^= ActionStartMs.GetHashCode();
        if (DurationMs != 0) hash ^= DurationMs.GetHashCode();
        if (EnergyDelta != 0) hash ^= EnergyDelta.GetHashCode();
        if (AttackerIndex != 0) hash ^= AttackerIndex.GetHashCode();
        if (TargetIndex != 0) hash ^= TargetIndex.GetHashCode();
        if (ActivePokemonId != 0UL) hash ^= ActivePokemonId.GetHashCode();
        if (playerJoined_ != null) hash ^= PlayerJoined.GetHashCode();
        if (battleResults_ != null) hash ^= BattleResults.GetHashCode();
        if (DamageWindowsStartTimestampMs != 0L) hash ^= DamageWindowsStartTimestampMs.GetHashCode();
        if (DamageWindowsEndTimestampMs != 0L) hash ^= DamageWindowsEndTimestampMs.GetHashCode();
        if (playerLeft_ != null) hash ^= PlayerLeft.GetHashCode();
        if (TargetPokemonId != 0UL) hash ^= TargetPokemonId.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Type != 0) {
          output.WriteRawTag(8);
          output.WriteEnum((int) Type);
        }
        if (ActionStartMs != 0L) {
          output.WriteRawTag(16);
          output.WriteInt64(ActionStartMs);
        }
        if (DurationMs != 0) {
          output.WriteRawTag(24);
          output.WriteInt32(DurationMs);
        }
        if (EnergyDelta != 0) {
          output.WriteRawTag(40);
          output.WriteInt32(EnergyDelta);
        }
        if (AttackerIndex != 0) {
          output.WriteRawTag(48);
          output.WriteInt32(AttackerIndex);
        }
        if (TargetIndex != 0) {
          output.WriteRawTag(56);
          output.WriteInt32(TargetIndex);
        }
        if (ActivePokemonId != 0UL) {
          output.WriteRawTag(65);
          output.WriteFixed64(ActivePokemonId);
        }
        if (playerJoined_ != null) {
          output.WriteRawTag(74);
          output.WriteMessage(PlayerJoined);
        }
        if (battleResults_ != null) {
          output.WriteRawTag(82);
          output.WriteMessage(BattleResults);
        }
        if (DamageWindowsStartTimestampMs != 0L) {
          output.WriteRawTag(88);
          output.WriteInt64(DamageWindowsStartTimestampMs);
        }
        if (DamageWindowsEndTimestampMs != 0L) {
          output.WriteRawTag(96);
          output.WriteInt64(DamageWindowsEndTimestampMs);
        }
        if (playerLeft_ != null) {
          output.WriteRawTag(106);
          output.WriteMessage(PlayerLeft);
        }
        if (TargetPokemonId != 0UL) {
          output.WriteRawTag(113);
          output.WriteFixed64(TargetPokemonId);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Type != 0) {
          size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
        }
        if (ActionStartMs != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(ActionStartMs);
        }
        if (DurationMs != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(DurationMs);
        }
        if (EnergyDelta != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(EnergyDelta);
        }
        if (AttackerIndex != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(AttackerIndex);
        }
        if (TargetIndex != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(TargetIndex);
        }
        if (ActivePokemonId != 0UL) {
          size += 1 + 8;
        }
        if (playerJoined_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerJoined);
        }
        if (battleResults_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(BattleResults);
        }
        if (DamageWindowsStartTimestampMs != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(DamageWindowsStartTimestampMs);
        }
        if (DamageWindowsEndTimestampMs != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(DamageWindowsEndTimestampMs);
        }
        if (playerLeft_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerLeft);
        }
        if (TargetPokemonId != 0UL) {
          size += 1 + 8;
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(BattleAction other) {
        if (other == null) {
          return;
        }
        if (other.Type != 0) {
          Type = other.Type;
        }
        if (other.ActionStartMs != 0L) {
          ActionStartMs = other.ActionStartMs;
        }
        if (other.DurationMs != 0) {
          DurationMs = other.DurationMs;
        }
        if (other.EnergyDelta != 0) {
          EnergyDelta = other.EnergyDelta;
        }
        if (other.AttackerIndex != 0) {
          AttackerIndex = other.AttackerIndex;
        }
        if (other.TargetIndex != 0) {
          TargetIndex = other.TargetIndex;
        }
        if (other.ActivePokemonId != 0UL) {
          ActivePokemonId = other.ActivePokemonId;
        }
        if (other.playerJoined_ != null) {
          if (playerJoined_ == null) {
            playerJoined_ = new global::POGOProtos.Data.Battle.BattleParticipant();
          }
          PlayerJoined.MergeFrom(other.PlayerJoined);
        }
        if (other.battleResults_ != null) {
          if (battleResults_ == null) {
            battleResults_ = new global::POGOProtos.Data.Battle.BattleResults();
          }
          BattleResults.MergeFrom(other.BattleResults);
        }
        if (other.DamageWindowsStartTimestampMs != 0L) {
          DamageWindowsStartTimestampMs = other.DamageWindowsStartTimestampMs;
        }
  
gt:       if (other.DamageWindowsEndTimestampMs != 0L) {