All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tron.p2p.protos.Discover Maven / Gradle / Ivy

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Discover.proto

// Protobuf Java Version: 3.25.5
package org.tron.p2p.protos;

public final class Discover {
  private Discover() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface EndpointOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Endpoint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * bytes address = 1;
     * @return The address.
     */
    com.google.protobuf.ByteString getAddress();

    /**
     * int32 port = 2;
     * @return The port.
     */
    int getPort();

    /**
     * bytes nodeId = 3;
     * @return The nodeId.
     */
    com.google.protobuf.ByteString getNodeId();

    /**
     * bytes addressIpv6 = 4;
     * @return The addressIpv6.
     */
    com.google.protobuf.ByteString getAddressIpv6();
  }
  /**
   * Protobuf type {@code Endpoint}
   */
  public static final class Endpoint extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Endpoint)
      EndpointOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Endpoint.newBuilder() to construct.
    private Endpoint(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Endpoint() {
      address_ = com.google.protobuf.ByteString.EMPTY;
      nodeId_ = com.google.protobuf.ByteString.EMPTY;
      addressIpv6_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Endpoint();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_Endpoint_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_Endpoint_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.Endpoint.class, org.tron.p2p.protos.Discover.Endpoint.Builder.class);
    }

    public static final int ADDRESS_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString address_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * bytes address = 1;
     * @return The address.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getAddress() {
      return address_;
    }

    public static final int PORT_FIELD_NUMBER = 2;
    private int port_ = 0;
    /**
     * int32 port = 2;
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

    public static final int NODEID_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString nodeId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * bytes nodeId = 3;
     * @return The nodeId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getNodeId() {
      return nodeId_;
    }

    public static final int ADDRESSIPV6_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString addressIpv6_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * bytes addressIpv6 = 4;
     * @return The addressIpv6.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getAddressIpv6() {
      return addressIpv6_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!address_.isEmpty()) {
        output.writeBytes(1, address_);
      }
      if (port_ != 0) {
        output.writeInt32(2, port_);
      }
      if (!nodeId_.isEmpty()) {
        output.writeBytes(3, nodeId_);
      }
      if (!addressIpv6_.isEmpty()) {
        output.writeBytes(4, addressIpv6_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!address_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, address_);
      }
      if (port_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, port_);
      }
      if (!nodeId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, nodeId_);
      }
      if (!addressIpv6_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, addressIpv6_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.Endpoint)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.Endpoint other = (org.tron.p2p.protos.Discover.Endpoint) obj;

      if (!getAddress()
          .equals(other.getAddress())) return false;
      if (getPort()
          != other.getPort()) return false;
      if (!getNodeId()
          .equals(other.getNodeId())) return false;
      if (!getAddressIpv6()
          .equals(other.getAddressIpv6())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getAddress().hashCode();
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + getPort();
      hash = (37 * hash) + NODEID_FIELD_NUMBER;
      hash = (53 * hash) + getNodeId().hashCode();
      hash = (37 * hash) + ADDRESSIPV6_FIELD_NUMBER;
      hash = (53 * hash) + getAddressIpv6().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.Endpoint parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.Endpoint parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.Endpoint parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.Endpoint prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Endpoint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:Endpoint)
        org.tron.p2p.protos.Discover.EndpointOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_Endpoint_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_Endpoint_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.Endpoint.class, org.tron.p2p.protos.Discover.Endpoint.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.Endpoint.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        address_ = com.google.protobuf.ByteString.EMPTY;
        port_ = 0;
        nodeId_ = com.google.protobuf.ByteString.EMPTY;
        addressIpv6_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_Endpoint_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.Endpoint getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.Endpoint build() {
        org.tron.p2p.protos.Discover.Endpoint result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.Endpoint buildPartial() {
        org.tron.p2p.protos.Discover.Endpoint result = new org.tron.p2p.protos.Discover.Endpoint(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.Endpoint result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.address_ = address_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.port_ = port_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nodeId_ = nodeId_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.addressIpv6_ = addressIpv6_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.Endpoint) {
          return mergeFrom((org.tron.p2p.protos.Discover.Endpoint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.Endpoint other) {
        if (other == org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance()) return this;
        if (other.getAddress() != com.google.protobuf.ByteString.EMPTY) {
          setAddress(other.getAddress());
        }
        if (other.getPort() != 0) {
          setPort(other.getPort());
        }
        if (other.getNodeId() != com.google.protobuf.ByteString.EMPTY) {
          setNodeId(other.getNodeId());
        }
        if (other.getAddressIpv6() != com.google.protobuf.ByteString.EMPTY) {
          setAddressIpv6(other.getAddressIpv6());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                address_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                port_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                nodeId_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                addressIpv6_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString address_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes address = 1;
       * @return The address.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getAddress() {
        return address_;
      }
      /**
       * bytes address = 1;
       * @param value The address to set.
       * @return This builder for chaining.
       */
      public Builder setAddress(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        address_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * bytes address = 1;
       * @return This builder for chaining.
       */
      public Builder clearAddress() {
        bitField0_ = (bitField0_ & ~0x00000001);
        address_ = getDefaultInstance().getAddress();
        onChanged();
        return this;
      }

      private int port_ ;
      /**
       * int32 port = 2;
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * int32 port = 2;
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {

        port_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * int32 port = 2;
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000002);
        port_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString nodeId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes nodeId = 3;
       * @return The nodeId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getNodeId() {
        return nodeId_;
      }
      /**
       * bytes nodeId = 3;
       * @param value The nodeId to set.
       * @return This builder for chaining.
       */
      public Builder setNodeId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        nodeId_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * bytes nodeId = 3;
       * @return This builder for chaining.
       */
      public Builder clearNodeId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nodeId_ = getDefaultInstance().getNodeId();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString addressIpv6_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes addressIpv6 = 4;
       * @return The addressIpv6.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getAddressIpv6() {
        return addressIpv6_;
      }
      /**
       * bytes addressIpv6 = 4;
       * @param value The addressIpv6 to set.
       * @return This builder for chaining.
       */
      public Builder setAddressIpv6(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        addressIpv6_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * bytes addressIpv6 = 4;
       * @return This builder for chaining.
       */
      public Builder clearAddressIpv6() {
        bitField0_ = (bitField0_ & ~0x00000008);
        addressIpv6_ = getDefaultInstance().getAddressIpv6();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Endpoint)
    }

    // @@protoc_insertion_point(class_scope:Endpoint)
    private static final org.tron.p2p.protos.Discover.Endpoint DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.Endpoint();
    }

    public static org.tron.p2p.protos.Discover.Endpoint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Endpoint parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PingMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PingMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    boolean hasFrom();
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    org.tron.p2p.protos.Discover.Endpoint getFrom();
    /**
     * .Endpoint from = 1;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder();

    /**
     * .Endpoint to = 2;
     * @return Whether the to field is set.
     */
    boolean hasTo();
    /**
     * .Endpoint to = 2;
     * @return The to.
     */
    org.tron.p2p.protos.Discover.Endpoint getTo();
    /**
     * .Endpoint to = 2;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getToOrBuilder();

    /**
     * int32 version = 3;
     * @return The version.
     */
    int getVersion();

    /**
     * int64 timestamp = 4;
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code PingMessage}
   */
  public static final class PingMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PingMessage)
      PingMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PingMessage.newBuilder() to construct.
    private PingMessage(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PingMessage() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PingMessage();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_PingMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_PingMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.PingMessage.class, org.tron.p2p.protos.Discover.PingMessage.Builder.class);
    }

    private int bitField0_;
    public static final int FROM_FIELD_NUMBER = 1;
    private org.tron.p2p.protos.Discover.Endpoint from_;
    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    @java.lang.Override
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getFrom() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }
    /**
     * .Endpoint from = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }

    public static final int TO_FIELD_NUMBER = 2;
    private org.tron.p2p.protos.Discover.Endpoint to_;
    /**
     * .Endpoint to = 2;
     * @return Whether the to field is set.
     */
    @java.lang.Override
    public boolean hasTo() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .Endpoint to = 2;
     * @return The to.
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getTo() {
      return to_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : to_;
    }
    /**
     * .Endpoint to = 2;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getToOrBuilder() {
      return to_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : to_;
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private int version_ = 0;
    /**
     * int32 version = 3;
     * @return The version.
     */
    @java.lang.Override
    public int getVersion() {
      return version_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 4;
    private long timestamp_ = 0L;
    /**
     * int64 timestamp = 4;
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getFrom());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getTo());
      }
      if (version_ != 0) {
        output.writeInt32(3, version_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(4, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFrom());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTo());
      }
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, version_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.PingMessage)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.PingMessage other = (org.tron.p2p.protos.Discover.PingMessage) obj;

      if (hasFrom() != other.hasFrom()) return false;
      if (hasFrom()) {
        if (!getFrom()
            .equals(other.getFrom())) return false;
      }
      if (hasTo() != other.hasTo()) return false;
      if (hasTo()) {
        if (!getTo()
            .equals(other.getTo())) return false;
      }
      if (getVersion()
          != other.getVersion()) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFrom()) {
        hash = (37 * hash) + FROM_FIELD_NUMBER;
        hash = (53 * hash) + getFrom().hashCode();
      }
      if (hasTo()) {
        hash = (37 * hash) + TO_FIELD_NUMBER;
        hash = (53 * hash) + getTo().hashCode();
      }
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.PingMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.PingMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.PingMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.PingMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PingMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:PingMessage)
        org.tron.p2p.protos.Discover.PingMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_PingMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_PingMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.PingMessage.class, org.tron.p2p.protos.Discover.PingMessage.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.PingMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFromFieldBuilder();
          getToFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        to_ = null;
        if (toBuilder_ != null) {
          toBuilder_.dispose();
          toBuilder_ = null;
        }
        version_ = 0;
        timestamp_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_PingMessage_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.PingMessage getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.PingMessage.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.PingMessage build() {
        org.tron.p2p.protos.Discover.PingMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.PingMessage buildPartial() {
        org.tron.p2p.protos.Discover.PingMessage result = new org.tron.p2p.protos.Discover.PingMessage(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.PingMessage result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.from_ = fromBuilder_ == null
              ? from_
              : fromBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.to_ = toBuilder_ == null
              ? to_
              : toBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.version_ = version_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.timestamp_ = timestamp_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.PingMessage) {
          return mergeFrom((org.tron.p2p.protos.Discover.PingMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.PingMessage other) {
        if (other == org.tron.p2p.protos.Discover.PingMessage.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (other.hasTo()) {
          mergeTo(other.getTo());
        }
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFromFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getToFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                version_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                timestamp_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.tron.p2p.protos.Discover.Endpoint from_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> fromBuilder_;
      /**
       * .Endpoint from = 1;
       * @return Whether the from field is set.
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .Endpoint from = 1;
       * @return The from.
       */
      public org.tron.p2p.protos.Discover.Endpoint getFrom() {
        if (fromBuilder_ == null) {
          return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder mergeFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            from_ != null &&
            from_ != org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance()) {
            getFromBuilder().mergeFrom(value);
          } else {
            from_ = value;
          }
        } else {
          fromBuilder_.mergeFrom(value);
        }
        if (from_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder clearFrom() {
        bitField0_ = (bitField0_ & ~0x00000001);
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_ == null ?
              org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        }
      }
      /**
       * .Endpoint from = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  getFrom(),
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      private org.tron.p2p.protos.Discover.Endpoint to_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> toBuilder_;
      /**
       * .Endpoint to = 2;
       * @return Whether the to field is set.
       */
      public boolean hasTo() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .Endpoint to = 2;
       * @return The to.
       */
      public org.tron.p2p.protos.Discover.Endpoint getTo() {
        if (toBuilder_ == null) {
          return to_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : to_;
        } else {
          return toBuilder_.getMessage();
        }
      }
      /**
       * .Endpoint to = 2;
       */
      public Builder setTo(org.tron.p2p.protos.Discover.Endpoint value) {
        if (toBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          to_ = value;
        } else {
          toBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .Endpoint to = 2;
       */
      public Builder setTo(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (toBuilder_ == null) {
          to_ = builderForValue.build();
        } else {
          toBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .Endpoint to = 2;
       */
      public Builder mergeTo(org.tron.p2p.protos.Discover.Endpoint value) {
        if (toBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            to_ != null &&
            to_ != org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance()) {
            getToBuilder().mergeFrom(value);
          } else {
            to_ = value;
          }
        } else {
          toBuilder_.mergeFrom(value);
        }
        if (to_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .Endpoint to = 2;
       */
      public Builder clearTo() {
        bitField0_ = (bitField0_ & ~0x00000002);
        to_ = null;
        if (toBuilder_ != null) {
          toBuilder_.dispose();
          toBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .Endpoint to = 2;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getToBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getToFieldBuilder().getBuilder();
      }
      /**
       * .Endpoint to = 2;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getToOrBuilder() {
        if (toBuilder_ != null) {
          return toBuilder_.getMessageOrBuilder();
        } else {
          return to_ == null ?
              org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : to_;
        }
      }
      /**
       * .Endpoint to = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getToFieldBuilder() {
        if (toBuilder_ == null) {
          toBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  getTo(),
                  getParentForChildren(),
                  isClean());
          to_ = null;
        }
        return toBuilder_;
      }

      private int version_ ;
      /**
       * int32 version = 3;
       * @return The version.
       */
      @java.lang.Override
      public int getVersion() {
        return version_;
      }
      /**
       * int32 version = 3;
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(int value) {

        version_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * int32 version = 3;
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000004);
        version_ = 0;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * int64 timestamp = 4;
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * int64 timestamp = 4;
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {

        timestamp_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * int64 timestamp = 4;
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000008);
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:PingMessage)
    }

    // @@protoc_insertion_point(class_scope:PingMessage)
    private static final org.tron.p2p.protos.Discover.PingMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.PingMessage();
    }

    public static org.tron.p2p.protos.Discover.PingMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public PingMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.PingMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PongMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:PongMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    boolean hasFrom();
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    org.tron.p2p.protos.Discover.Endpoint getFrom();
    /**
     * .Endpoint from = 1;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder();

    /**
     * int32 echo = 2;
     * @return The echo.
     */
    int getEcho();

    /**
     * int64 timestamp = 3;
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code PongMessage}
   */
  public static final class PongMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:PongMessage)
      PongMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PongMessage.newBuilder() to construct.
    private PongMessage(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PongMessage() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PongMessage();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_PongMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_PongMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.PongMessage.class, org.tron.p2p.protos.Discover.PongMessage.Builder.class);
    }

    private int bitField0_;
    public static final int FROM_FIELD_NUMBER = 1;
    private org.tron.p2p.protos.Discover.Endpoint from_;
    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    @java.lang.Override
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getFrom() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }
    /**
     * .Endpoint from = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }

    public static final int ECHO_FIELD_NUMBER = 2;
    private int echo_ = 0;
    /**
     * int32 echo = 2;
     * @return The echo.
     */
    @java.lang.Override
    public int getEcho() {
      return echo_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_ = 0L;
    /**
     * int64 timestamp = 3;
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getFrom());
      }
      if (echo_ != 0) {
        output.writeInt32(2, echo_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(3, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFrom());
      }
      if (echo_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, echo_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.PongMessage)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.PongMessage other = (org.tron.p2p.protos.Discover.PongMessage) obj;

      if (hasFrom() != other.hasFrom()) return false;
      if (hasFrom()) {
        if (!getFrom()
            .equals(other.getFrom())) return false;
      }
      if (getEcho()
          != other.getEcho()) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFrom()) {
        hash = (37 * hash) + FROM_FIELD_NUMBER;
        hash = (53 * hash) + getFrom().hashCode();
      }
      hash = (37 * hash) + ECHO_FIELD_NUMBER;
      hash = (53 * hash) + getEcho();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.PongMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.PongMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.PongMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.PongMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code PongMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:PongMessage)
        org.tron.p2p.protos.Discover.PongMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_PongMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_PongMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.PongMessage.class, org.tron.p2p.protos.Discover.PongMessage.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.PongMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFromFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        echo_ = 0;
        timestamp_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_PongMessage_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.PongMessage getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.PongMessage.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.PongMessage build() {
        org.tron.p2p.protos.Discover.PongMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.PongMessage buildPartial() {
        org.tron.p2p.protos.Discover.PongMessage result = new org.tron.p2p.protos.Discover.PongMessage(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.PongMessage result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.from_ = fromBuilder_ == null
              ? from_
              : fromBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.echo_ = echo_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.timestamp_ = timestamp_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.PongMessage) {
          return mergeFrom((org.tron.p2p.protos.Discover.PongMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.PongMessage other) {
        if (other == org.tron.p2p.protos.Discover.PongMessage.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (other.getEcho() != 0) {
          setEcho(other.getEcho());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFromFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                echo_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                timestamp_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.tron.p2p.protos.Discover.Endpoint from_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> fromBuilder_;
      /**
       * .Endpoint from = 1;
       * @return Whether the from field is set.
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .Endpoint from = 1;
       * @return The from.
       */
      public org.tron.p2p.protos.Discover.Endpoint getFrom() {
        if (fromBuilder_ == null) {
          return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder mergeFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            from_ != null &&
            from_ != org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance()) {
            getFromBuilder().mergeFrom(value);
          } else {
            from_ = value;
          }
        } else {
          fromBuilder_.mergeFrom(value);
        }
        if (from_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder clearFrom() {
        bitField0_ = (bitField0_ & ~0x00000001);
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_ == null ?
              org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        }
      }
      /**
       * .Endpoint from = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  getFrom(),
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      private int echo_ ;
      /**
       * int32 echo = 2;
       * @return The echo.
       */
      @java.lang.Override
      public int getEcho() {
        return echo_;
      }
      /**
       * int32 echo = 2;
       * @param value The echo to set.
       * @return This builder for chaining.
       */
      public Builder setEcho(int value) {

        echo_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * int32 echo = 2;
       * @return This builder for chaining.
       */
      public Builder clearEcho() {
        bitField0_ = (bitField0_ & ~0x00000002);
        echo_ = 0;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * int64 timestamp = 3;
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * int64 timestamp = 3;
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {

        timestamp_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * int64 timestamp = 3;
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:PongMessage)
    }

    // @@protoc_insertion_point(class_scope:PongMessage)
    private static final org.tron.p2p.protos.Discover.PongMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.PongMessage();
    }

    public static org.tron.p2p.protos.Discover.PongMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public PongMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.PongMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FindNeighboursOrBuilder extends
      // @@protoc_insertion_point(interface_extends:FindNeighbours)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    boolean hasFrom();
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    org.tron.p2p.protos.Discover.Endpoint getFrom();
    /**
     * .Endpoint from = 1;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder();

    /**
     * bytes targetId = 2;
     * @return The targetId.
     */
    com.google.protobuf.ByteString getTargetId();

    /**
     * int64 timestamp = 3;
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code FindNeighbours}
   */
  public static final class FindNeighbours extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:FindNeighbours)
      FindNeighboursOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FindNeighbours.newBuilder() to construct.
    private FindNeighbours(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private FindNeighbours() {
      targetId_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FindNeighbours();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_FindNeighbours_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_FindNeighbours_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.FindNeighbours.class, org.tron.p2p.protos.Discover.FindNeighbours.Builder.class);
    }

    private int bitField0_;
    public static final int FROM_FIELD_NUMBER = 1;
    private org.tron.p2p.protos.Discover.Endpoint from_;
    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    @java.lang.Override
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getFrom() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }
    /**
     * .Endpoint from = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }

    public static final int TARGETID_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString targetId_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * bytes targetId = 2;
     * @return The targetId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTargetId() {
      return targetId_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_ = 0L;
    /**
     * int64 timestamp = 3;
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getFrom());
      }
      if (!targetId_.isEmpty()) {
        output.writeBytes(2, targetId_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(3, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFrom());
      }
      if (!targetId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, targetId_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.FindNeighbours)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.FindNeighbours other = (org.tron.p2p.protos.Discover.FindNeighbours) obj;

      if (hasFrom() != other.hasFrom()) return false;
      if (hasFrom()) {
        if (!getFrom()
            .equals(other.getFrom())) return false;
      }
      if (!getTargetId()
          .equals(other.getTargetId())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFrom()) {
        hash = (37 * hash) + FROM_FIELD_NUMBER;
        hash = (53 * hash) + getFrom().hashCode();
      }
      hash = (37 * hash) + TARGETID_FIELD_NUMBER;
      hash = (53 * hash) + getTargetId().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.FindNeighbours parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.FindNeighbours parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.FindNeighbours parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.FindNeighbours prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code FindNeighbours}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:FindNeighbours)
        org.tron.p2p.protos.Discover.FindNeighboursOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_FindNeighbours_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_FindNeighbours_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.FindNeighbours.class, org.tron.p2p.protos.Discover.FindNeighbours.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.FindNeighbours.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFromFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        targetId_ = com.google.protobuf.ByteString.EMPTY;
        timestamp_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_FindNeighbours_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.FindNeighbours getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.FindNeighbours.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.FindNeighbours build() {
        org.tron.p2p.protos.Discover.FindNeighbours result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.FindNeighbours buildPartial() {
        org.tron.p2p.protos.Discover.FindNeighbours result = new org.tron.p2p.protos.Discover.FindNeighbours(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.FindNeighbours result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.from_ = fromBuilder_ == null
              ? from_
              : fromBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.targetId_ = targetId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.timestamp_ = timestamp_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.FindNeighbours) {
          return mergeFrom((org.tron.p2p.protos.Discover.FindNeighbours)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.FindNeighbours other) {
        if (other == org.tron.p2p.protos.Discover.FindNeighbours.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (other.getTargetId() != com.google.protobuf.ByteString.EMPTY) {
          setTargetId(other.getTargetId());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFromFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                targetId_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                timestamp_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.tron.p2p.protos.Discover.Endpoint from_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> fromBuilder_;
      /**
       * .Endpoint from = 1;
       * @return Whether the from field is set.
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .Endpoint from = 1;
       * @return The from.
       */
      public org.tron.p2p.protos.Discover.Endpoint getFrom() {
        if (fromBuilder_ == null) {
          return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder mergeFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            from_ != null &&
            from_ != org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance()) {
            getFromBuilder().mergeFrom(value);
          } else {
            from_ = value;
          }
        } else {
          fromBuilder_.mergeFrom(value);
        }
        if (from_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder clearFrom() {
        bitField0_ = (bitField0_ & ~0x00000001);
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_ == null ?
              org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        }
      }
      /**
       * .Endpoint from = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  getFrom(),
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      private com.google.protobuf.ByteString targetId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes targetId = 2;
       * @return The targetId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTargetId() {
        return targetId_;
      }
      /**
       * bytes targetId = 2;
       * @param value The targetId to set.
       * @return This builder for chaining.
       */
      public Builder setTargetId(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        targetId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * bytes targetId = 2;
       * @return This builder for chaining.
       */
      public Builder clearTargetId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        targetId_ = getDefaultInstance().getTargetId();
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * int64 timestamp = 3;
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * int64 timestamp = 3;
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {

        timestamp_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * int64 timestamp = 3;
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:FindNeighbours)
    }

    // @@protoc_insertion_point(class_scope:FindNeighbours)
    private static final org.tron.p2p.protos.Discover.FindNeighbours DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.FindNeighbours();
    }

    public static org.tron.p2p.protos.Discover.FindNeighbours getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public FindNeighbours parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.FindNeighbours getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NeighboursOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Neighbours)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    boolean hasFrom();
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    org.tron.p2p.protos.Discover.Endpoint getFrom();
    /**
     * .Endpoint from = 1;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder();

    /**
     * repeated .Endpoint neighbours = 2;
     */
    java.util.List 
        getNeighboursList();
    /**
     * repeated .Endpoint neighbours = 2;
     */
    org.tron.p2p.protos.Discover.Endpoint getNeighbours(int index);
    /**
     * repeated .Endpoint neighbours = 2;
     */
    int getNeighboursCount();
    /**
     * repeated .Endpoint neighbours = 2;
     */
    java.util.List 
        getNeighboursOrBuilderList();
    /**
     * repeated .Endpoint neighbours = 2;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getNeighboursOrBuilder(
        int index);

    /**
     * int64 timestamp = 3;
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * Protobuf type {@code Neighbours}
   */
  public static final class Neighbours extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Neighbours)
      NeighboursOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Neighbours.newBuilder() to construct.
    private Neighbours(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Neighbours() {
      neighbours_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Neighbours();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_Neighbours_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_Neighbours_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.Neighbours.class, org.tron.p2p.protos.Discover.Neighbours.Builder.class);
    }

    private int bitField0_;
    public static final int FROM_FIELD_NUMBER = 1;
    private org.tron.p2p.protos.Discover.Endpoint from_;
    /**
     * .Endpoint from = 1;
     * @return Whether the from field is set.
     */
    @java.lang.Override
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .Endpoint from = 1;
     * @return The from.
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getFrom() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }
    /**
     * .Endpoint from = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
      return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
    }

    public static final int NEIGHBOURS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List neighbours_;
    /**
     * repeated .Endpoint neighbours = 2;
     */
    @java.lang.Override
    public java.util.List getNeighboursList() {
      return neighbours_;
    }
    /**
     * repeated .Endpoint neighbours = 2;
     */
    @java.lang.Override
    public java.util.List 
        getNeighboursOrBuilderList() {
      return neighbours_;
    }
    /**
     * repeated .Endpoint neighbours = 2;
     */
    @java.lang.Override
    public int getNeighboursCount() {
      return neighbours_.size();
    }
    /**
     * repeated .Endpoint neighbours = 2;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getNeighbours(int index) {
      return neighbours_.get(index);
    }
    /**
     * repeated .Endpoint neighbours = 2;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getNeighboursOrBuilder(
        int index) {
      return neighbours_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_ = 0L;
    /**
     * int64 timestamp = 3;
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getFrom());
      }
      for (int i = 0; i < neighbours_.size(); i++) {
        output.writeMessage(2, neighbours_.get(i));
      }
      if (timestamp_ != 0L) {
        output.writeInt64(3, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFrom());
      }
      for (int i = 0; i < neighbours_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, neighbours_.get(i));
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.Neighbours)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.Neighbours other = (org.tron.p2p.protos.Discover.Neighbours) obj;

      if (hasFrom() != other.hasFrom()) return false;
      if (hasFrom()) {
        if (!getFrom()
            .equals(other.getFrom())) return false;
      }
      if (!getNeighboursList()
          .equals(other.getNeighboursList())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFrom()) {
        hash = (37 * hash) + FROM_FIELD_NUMBER;
        hash = (53 * hash) + getFrom().hashCode();
      }
      if (getNeighboursCount() > 0) {
        hash = (37 * hash) + NEIGHBOURS_FIELD_NUMBER;
        hash = (53 * hash) + getNeighboursList().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.Neighbours parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.Neighbours parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.Neighbours parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.Neighbours prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Neighbours}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:Neighbours)
        org.tron.p2p.protos.Discover.NeighboursOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_Neighbours_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_Neighbours_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.Neighbours.class, org.tron.p2p.protos.Discover.Neighbours.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.Neighbours.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFromFieldBuilder();
          getNeighboursFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        if (neighboursBuilder_ == null) {
          neighbours_ = java.util.Collections.emptyList();
        } else {
          neighbours_ = null;
          neighboursBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        timestamp_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_Neighbours_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.Neighbours getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.Neighbours.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.Neighbours build() {
        org.tron.p2p.protos.Discover.Neighbours result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.Neighbours buildPartial() {
        org.tron.p2p.protos.Discover.Neighbours result = new org.tron.p2p.protos.Discover.Neighbours(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.tron.p2p.protos.Discover.Neighbours result) {
        if (neighboursBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            neighbours_ = java.util.Collections.unmodifiableList(neighbours_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.neighbours_ = neighbours_;
        } else {
          result.neighbours_ = neighboursBuilder_.build();
        }
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.Neighbours result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.from_ = fromBuilder_ == null
              ? from_
              : fromBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.timestamp_ = timestamp_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.Neighbours) {
          return mergeFrom((org.tron.p2p.protos.Discover.Neighbours)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.Neighbours other) {
        if (other == org.tron.p2p.protos.Discover.Neighbours.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (neighboursBuilder_ == null) {
          if (!other.neighbours_.isEmpty()) {
            if (neighbours_.isEmpty()) {
              neighbours_ = other.neighbours_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureNeighboursIsMutable();
              neighbours_.addAll(other.neighbours_);
            }
            onChanged();
          }
        } else {
          if (!other.neighbours_.isEmpty()) {
            if (neighboursBuilder_.isEmpty()) {
              neighboursBuilder_.dispose();
              neighboursBuilder_ = null;
              neighbours_ = other.neighbours_;
              bitField0_ = (bitField0_ & ~0x00000002);
              neighboursBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNeighboursFieldBuilder() : null;
            } else {
              neighboursBuilder_.addAllMessages(other.neighbours_);
            }
          }
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFromFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                org.tron.p2p.protos.Discover.Endpoint m =
                    input.readMessage(
                        org.tron.p2p.protos.Discover.Endpoint.parser(),
                        extensionRegistry);
                if (neighboursBuilder_ == null) {
                  ensureNeighboursIsMutable();
                  neighbours_.add(m);
                } else {
                  neighboursBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                timestamp_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.tron.p2p.protos.Discover.Endpoint from_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> fromBuilder_;
      /**
       * .Endpoint from = 1;
       * @return Whether the from field is set.
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .Endpoint from = 1;
       * @return The from.
       */
      public org.tron.p2p.protos.Discover.Endpoint getFrom() {
        if (fromBuilder_ == null) {
          return from_ == null ? org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder setFrom(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder mergeFrom(org.tron.p2p.protos.Discover.Endpoint value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            from_ != null &&
            from_ != org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance()) {
            getFromBuilder().mergeFrom(value);
          } else {
            from_ = value;
          }
        } else {
          fromBuilder_.mergeFrom(value);
        }
        if (from_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public Builder clearFrom() {
        bitField0_ = (bitField0_ & ~0x00000001);
        from_ = null;
        if (fromBuilder_ != null) {
          fromBuilder_.dispose();
          fromBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * .Endpoint from = 1;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_ == null ?
              org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance() : from_;
        }
      }
      /**
       * .Endpoint from = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  getFrom(),
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      private java.util.List neighbours_ =
        java.util.Collections.emptyList();
      private void ensureNeighboursIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          neighbours_ = new java.util.ArrayList(neighbours_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> neighboursBuilder_;

      /**
       * repeated .Endpoint neighbours = 2;
       */
      public java.util.List getNeighboursList() {
        if (neighboursBuilder_ == null) {
          return java.util.Collections.unmodifiableList(neighbours_);
        } else {
          return neighboursBuilder_.getMessageList();
        }
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public int getNeighboursCount() {
        if (neighboursBuilder_ == null) {
          return neighbours_.size();
        } else {
          return neighboursBuilder_.getCount();
        }
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public org.tron.p2p.protos.Discover.Endpoint getNeighbours(int index) {
        if (neighboursBuilder_ == null) {
          return neighbours_.get(index);
        } else {
          return neighboursBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder setNeighbours(
          int index, org.tron.p2p.protos.Discover.Endpoint value) {
        if (neighboursBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNeighboursIsMutable();
          neighbours_.set(index, value);
          onChanged();
        } else {
          neighboursBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder setNeighbours(
          int index, org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (neighboursBuilder_ == null) {
          ensureNeighboursIsMutable();
          neighbours_.set(index, builderForValue.build());
          onChanged();
        } else {
          neighboursBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder addNeighbours(org.tron.p2p.protos.Discover.Endpoint value) {
        if (neighboursBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNeighboursIsMutable();
          neighbours_.add(value);
          onChanged();
        } else {
          neighboursBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder addNeighbours(
          int index, org.tron.p2p.protos.Discover.Endpoint value) {
        if (neighboursBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNeighboursIsMutable();
          neighbours_.add(index, value);
          onChanged();
        } else {
          neighboursBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder addNeighbours(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (neighboursBuilder_ == null) {
          ensureNeighboursIsMutable();
          neighbours_.add(builderForValue.build());
          onChanged();
        } else {
          neighboursBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder addNeighbours(
          int index, org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (neighboursBuilder_ == null) {
          ensureNeighboursIsMutable();
          neighbours_.add(index, builderForValue.build());
          onChanged();
        } else {
          neighboursBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder addAllNeighbours(
          java.lang.Iterable values) {
        if (neighboursBuilder_ == null) {
          ensureNeighboursIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, neighbours_);
          onChanged();
        } else {
          neighboursBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder clearNeighbours() {
        if (neighboursBuilder_ == null) {
          neighbours_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          neighboursBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public Builder removeNeighbours(int index) {
        if (neighboursBuilder_ == null) {
          ensureNeighboursIsMutable();
          neighbours_.remove(index);
          onChanged();
        } else {
          neighboursBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getNeighboursBuilder(
          int index) {
        return getNeighboursFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getNeighboursOrBuilder(
          int index) {
        if (neighboursBuilder_ == null) {
          return neighbours_.get(index);  } else {
          return neighboursBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public java.util.List 
           getNeighboursOrBuilderList() {
        if (neighboursBuilder_ != null) {
          return neighboursBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(neighbours_);
        }
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder addNeighboursBuilder() {
        return getNeighboursFieldBuilder().addBuilder(
            org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance());
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder addNeighboursBuilder(
          int index) {
        return getNeighboursFieldBuilder().addBuilder(
            index, org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance());
      }
      /**
       * repeated .Endpoint neighbours = 2;
       */
      public java.util.List 
           getNeighboursBuilderList() {
        return getNeighboursFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getNeighboursFieldBuilder() {
        if (neighboursBuilder_ == null) {
          neighboursBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  neighbours_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          neighbours_ = null;
        }
        return neighboursBuilder_;
      }

      private long timestamp_ ;
      /**
       * int64 timestamp = 3;
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * int64 timestamp = 3;
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {

        timestamp_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * int64 timestamp = 3;
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Neighbours)
    }

    // @@protoc_insertion_point(class_scope:Neighbours)
    private static final org.tron.p2p.protos.Discover.Neighbours DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.Neighbours();
    }

    public static org.tron.p2p.protos.Discover.Neighbours getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Neighbours parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.Neighbours getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EndPointsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:EndPoints)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .Endpoint nodes = 1;
     */
    java.util.List 
        getNodesList();
    /**
     * repeated .Endpoint nodes = 1;
     */
    org.tron.p2p.protos.Discover.Endpoint getNodes(int index);
    /**
     * repeated .Endpoint nodes = 1;
     */
    int getNodesCount();
    /**
     * repeated .Endpoint nodes = 1;
     */
    java.util.List 
        getNodesOrBuilderList();
    /**
     * repeated .Endpoint nodes = 1;
     */
    org.tron.p2p.protos.Discover.EndpointOrBuilder getNodesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code EndPoints}
   */
  public static final class EndPoints extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:EndPoints)
      EndPointsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EndPoints.newBuilder() to construct.
    private EndPoints(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private EndPoints() {
      nodes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EndPoints();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_EndPoints_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_EndPoints_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.EndPoints.class, org.tron.p2p.protos.Discover.EndPoints.Builder.class);
    }

    public static final int NODES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List nodes_;
    /**
     * repeated .Endpoint nodes = 1;
     */
    @java.lang.Override
    public java.util.List getNodesList() {
      return nodes_;
    }
    /**
     * repeated .Endpoint nodes = 1;
     */
    @java.lang.Override
    public java.util.List 
        getNodesOrBuilderList() {
      return nodes_;
    }
    /**
     * repeated .Endpoint nodes = 1;
     */
    @java.lang.Override
    public int getNodesCount() {
      return nodes_.size();
    }
    /**
     * repeated .Endpoint nodes = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.Endpoint getNodes(int index) {
      return nodes_.get(index);
    }
    /**
     * repeated .Endpoint nodes = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndpointOrBuilder getNodesOrBuilder(
        int index) {
      return nodes_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < nodes_.size(); i++) {
        output.writeMessage(1, nodes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < nodes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, nodes_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.EndPoints)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.EndPoints other = (org.tron.p2p.protos.Discover.EndPoints) obj;

      if (!getNodesList()
          .equals(other.getNodesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNodesCount() > 0) {
        hash = (37 * hash) + NODES_FIELD_NUMBER;
        hash = (53 * hash) + getNodesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.EndPoints parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.EndPoints parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.EndPoints parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.EndPoints prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code EndPoints}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:EndPoints)
        org.tron.p2p.protos.Discover.EndPointsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_EndPoints_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_EndPoints_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.EndPoints.class, org.tron.p2p.protos.Discover.EndPoints.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.EndPoints.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (nodesBuilder_ == null) {
          nodes_ = java.util.Collections.emptyList();
        } else {
          nodes_ = null;
          nodesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_EndPoints_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.EndPoints getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.EndPoints.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.EndPoints build() {
        org.tron.p2p.protos.Discover.EndPoints result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.EndPoints buildPartial() {
        org.tron.p2p.protos.Discover.EndPoints result = new org.tron.p2p.protos.Discover.EndPoints(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.tron.p2p.protos.Discover.EndPoints result) {
        if (nodesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            nodes_ = java.util.Collections.unmodifiableList(nodes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.nodes_ = nodes_;
        } else {
          result.nodes_ = nodesBuilder_.build();
        }
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.EndPoints result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.EndPoints) {
          return mergeFrom((org.tron.p2p.protos.Discover.EndPoints)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.EndPoints other) {
        if (other == org.tron.p2p.protos.Discover.EndPoints.getDefaultInstance()) return this;
        if (nodesBuilder_ == null) {
          if (!other.nodes_.isEmpty()) {
            if (nodes_.isEmpty()) {
              nodes_ = other.nodes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNodesIsMutable();
              nodes_.addAll(other.nodes_);
            }
            onChanged();
          }
        } else {
          if (!other.nodes_.isEmpty()) {
            if (nodesBuilder_.isEmpty()) {
              nodesBuilder_.dispose();
              nodesBuilder_ = null;
              nodes_ = other.nodes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              nodesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNodesFieldBuilder() : null;
            } else {
              nodesBuilder_.addAllMessages(other.nodes_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                org.tron.p2p.protos.Discover.Endpoint m =
                    input.readMessage(
                        org.tron.p2p.protos.Discover.Endpoint.parser(),
                        extensionRegistry);
                if (nodesBuilder_ == null) {
                  ensureNodesIsMutable();
                  nodes_.add(m);
                } else {
                  nodesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List nodes_ =
        java.util.Collections.emptyList();
      private void ensureNodesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          nodes_ = new java.util.ArrayList(nodes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> nodesBuilder_;

      /**
       * repeated .Endpoint nodes = 1;
       */
      public java.util.List getNodesList() {
        if (nodesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nodes_);
        } else {
          return nodesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public int getNodesCount() {
        if (nodesBuilder_ == null) {
          return nodes_.size();
        } else {
          return nodesBuilder_.getCount();
        }
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint getNodes(int index) {
        if (nodesBuilder_ == null) {
          return nodes_.get(index);
        } else {
          return nodesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder setNodes(
          int index, org.tron.p2p.protos.Discover.Endpoint value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.set(index, value);
          onChanged();
        } else {
          nodesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder setNodes(
          int index, org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder addNodes(org.tron.p2p.protos.Discover.Endpoint value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.add(value);
          onChanged();
        } else {
          nodesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder addNodes(
          int index, org.tron.p2p.protos.Discover.Endpoint value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.add(index, value);
          onChanged();
        } else {
          nodesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder addNodes(
          org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.add(builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder addNodes(
          int index, org.tron.p2p.protos.Discover.Endpoint.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder addAllNodes(
          java.lang.Iterable values) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nodes_);
          onChanged();
        } else {
          nodesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder clearNodes() {
        if (nodesBuilder_ == null) {
          nodes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          nodesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public Builder removeNodes(int index) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.remove(index);
          onChanged();
        } else {
          nodesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder getNodesBuilder(
          int index) {
        return getNodesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public org.tron.p2p.protos.Discover.EndpointOrBuilder getNodesOrBuilder(
          int index) {
        if (nodesBuilder_ == null) {
          return nodes_.get(index);  } else {
          return nodesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public java.util.List 
           getNodesOrBuilderList() {
        if (nodesBuilder_ != null) {
          return nodesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nodes_);
        }
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder addNodesBuilder() {
        return getNodesFieldBuilder().addBuilder(
            org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance());
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public org.tron.p2p.protos.Discover.Endpoint.Builder addNodesBuilder(
          int index) {
        return getNodesFieldBuilder().addBuilder(
            index, org.tron.p2p.protos.Discover.Endpoint.getDefaultInstance());
      }
      /**
       * repeated .Endpoint nodes = 1;
       */
      public java.util.List 
           getNodesBuilderList() {
        return getNodesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder> 
          getNodesFieldBuilder() {
        if (nodesBuilder_ == null) {
          nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.tron.p2p.protos.Discover.Endpoint, org.tron.p2p.protos.Discover.Endpoint.Builder, org.tron.p2p.protos.Discover.EndpointOrBuilder>(
                  nodes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          nodes_ = null;
        }
        return nodesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:EndPoints)
    }

    // @@protoc_insertion_point(class_scope:EndPoints)
    private static final org.tron.p2p.protos.Discover.EndPoints DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.EndPoints();
    }

    public static org.tron.p2p.protos.Discover.EndPoints getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public EndPoints parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.EndPoints getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DnsRootOrBuilder extends
      // @@protoc_insertion_point(interface_extends:DnsRoot)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .DnsRoot.TreeRoot treeRoot = 1;
     * @return Whether the treeRoot field is set.
     */
    boolean hasTreeRoot();
    /**
     * .DnsRoot.TreeRoot treeRoot = 1;
     * @return The treeRoot.
     */
    org.tron.p2p.protos.Discover.DnsRoot.TreeRoot getTreeRoot();
    /**
     * .DnsRoot.TreeRoot treeRoot = 1;
     */
    org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder getTreeRootOrBuilder();

    /**
     * bytes signature = 2;
     * @return The signature.
     */
    com.google.protobuf.ByteString getSignature();
  }
  /**
   * Protobuf type {@code DnsRoot}
   */
  public static final class DnsRoot extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:DnsRoot)
      DnsRootOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DnsRoot.newBuilder() to construct.
    private DnsRoot(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private DnsRoot() {
      signature_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DnsRoot();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tron.p2p.protos.Discover.internal_static_DnsRoot_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tron.p2p.protos.Discover.internal_static_DnsRoot_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tron.p2p.protos.Discover.DnsRoot.class, org.tron.p2p.protos.Discover.DnsRoot.Builder.class);
    }

    public interface TreeRootOrBuilder extends
        // @@protoc_insertion_point(interface_extends:DnsRoot.TreeRoot)
        com.google.protobuf.MessageOrBuilder {

      /**
       * bytes eRoot = 1;
       * @return The eRoot.
       */
      com.google.protobuf.ByteString getERoot();

      /**
       * bytes lRoot = 2;
       * @return The lRoot.
       */
      com.google.protobuf.ByteString getLRoot();

      /**
       * int32 seq = 3;
       * @return The seq.
       */
      int getSeq();
    }
    /**
     * Protobuf type {@code DnsRoot.TreeRoot}
     */
    public static final class TreeRoot extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:DnsRoot.TreeRoot)
        TreeRootOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TreeRoot.newBuilder() to construct.
      private TreeRoot(com.google.protobuf.GeneratedMessageV3.Builder builder) {
        super(builder);
      }
      private TreeRoot() {
        eRoot_ = com.google.protobuf.ByteString.EMPTY;
        lRoot_ = com.google.protobuf.ByteString.EMPTY;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new TreeRoot();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_DnsRoot_TreeRoot_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_DnsRoot_TreeRoot_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.class, org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder.class);
      }

      public static final int EROOT_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString eRoot_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes eRoot = 1;
       * @return The eRoot.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getERoot() {
        return eRoot_;
      }

      public static final int LROOT_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString lRoot_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes lRoot = 2;
       * @return The lRoot.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getLRoot() {
        return lRoot_;
      }

      public static final int SEQ_FIELD_NUMBER = 3;
      private int seq_ = 0;
      /**
       * int32 seq = 3;
       * @return The seq.
       */
      @java.lang.Override
      public int getSeq() {
        return seq_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!eRoot_.isEmpty()) {
          output.writeBytes(1, eRoot_);
        }
        if (!lRoot_.isEmpty()) {
          output.writeBytes(2, lRoot_);
        }
        if (seq_ != 0) {
          output.writeInt32(3, seq_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!eRoot_.isEmpty()) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, eRoot_);
        }
        if (!lRoot_.isEmpty()) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, lRoot_);
        }
        if (seq_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, seq_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof org.tron.p2p.protos.Discover.DnsRoot.TreeRoot)) {
          return super.equals(obj);
        }
        org.tron.p2p.protos.Discover.DnsRoot.TreeRoot other = (org.tron.p2p.protos.Discover.DnsRoot.TreeRoot) obj;

        if (!getERoot()
            .equals(other.getERoot())) return false;
        if (!getLRoot()
            .equals(other.getLRoot())) return false;
        if (getSeq()
            != other.getSeq()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + EROOT_FIELD_NUMBER;
        hash = (53 * hash) + getERoot().hashCode();
        hash = (37 * hash) + LROOT_FIELD_NUMBER;
        hash = (53 * hash) + getLRoot().hashCode();
        hash = (37 * hash) + SEQ_FIELD_NUMBER;
        hash = (53 * hash) + getSeq();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.tron.p2p.protos.Discover.DnsRoot.TreeRoot prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code DnsRoot.TreeRoot}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:DnsRoot.TreeRoot)
          org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.tron.p2p.protos.Discover.internal_static_DnsRoot_TreeRoot_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.tron.p2p.protos.Discover.internal_static_DnsRoot_TreeRoot_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.class, org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder.class);
        }

        // Construct using org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          eRoot_ = com.google.protobuf.ByteString.EMPTY;
          lRoot_ = com.google.protobuf.ByteString.EMPTY;
          seq_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.tron.p2p.protos.Discover.internal_static_DnsRoot_TreeRoot_descriptor;
        }

        @java.lang.Override
        public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot getDefaultInstanceForType() {
          return org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance();
        }

        @java.lang.Override
        public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot build() {
          org.tron.p2p.protos.Discover.DnsRoot.TreeRoot result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot buildPartial() {
          org.tron.p2p.protos.Discover.DnsRoot.TreeRoot result = new org.tron.p2p.protos.Discover.DnsRoot.TreeRoot(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(org.tron.p2p.protos.Discover.DnsRoot.TreeRoot result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.eRoot_ = eRoot_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.lRoot_ = lRoot_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.seq_ = seq_;
          }
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.tron.p2p.protos.Discover.DnsRoot.TreeRoot) {
            return mergeFrom((org.tron.p2p.protos.Discover.DnsRoot.TreeRoot)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.tron.p2p.protos.Discover.DnsRoot.TreeRoot other) {
          if (other == org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance()) return this;
          if (other.getERoot() != com.google.protobuf.ByteString.EMPTY) {
            setERoot(other.getERoot());
          }
          if (other.getLRoot() != com.google.protobuf.ByteString.EMPTY) {
            setLRoot(other.getLRoot());
          }
          if (other.getSeq() != 0) {
            setSeq(other.getSeq());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  eRoot_ = input.readBytes();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  lRoot_ = input.readBytes();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 24: {
                  seq_ = input.readInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private com.google.protobuf.ByteString eRoot_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * bytes eRoot = 1;
         * @return The eRoot.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getERoot() {
          return eRoot_;
        }
        /**
         * bytes eRoot = 1;
         * @param value The eRoot to set.
         * @return This builder for chaining.
         */
        public Builder setERoot(com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          eRoot_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * bytes eRoot = 1;
         * @return This builder for chaining.
         */
        public Builder clearERoot() {
          bitField0_ = (bitField0_ & ~0x00000001);
          eRoot_ = getDefaultInstance().getERoot();
          onChanged();
          return this;
        }

        private com.google.protobuf.ByteString lRoot_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * bytes lRoot = 2;
         * @return The lRoot.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getLRoot() {
          return lRoot_;
        }
        /**
         * bytes lRoot = 2;
         * @param value The lRoot to set.
         * @return This builder for chaining.
         */
        public Builder setLRoot(com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          lRoot_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * bytes lRoot = 2;
         * @return This builder for chaining.
         */
        public Builder clearLRoot() {
          bitField0_ = (bitField0_ & ~0x00000002);
          lRoot_ = getDefaultInstance().getLRoot();
          onChanged();
          return this;
        }

        private int seq_ ;
        /**
         * int32 seq = 3;
         * @return The seq.
         */
        @java.lang.Override
        public int getSeq() {
          return seq_;
        }
        /**
         * int32 seq = 3;
         * @param value The seq to set.
         * @return This builder for chaining.
         */
        public Builder setSeq(int value) {

          seq_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * int32 seq = 3;
         * @return This builder for chaining.
         */
        public Builder clearSeq() {
          bitField0_ = (bitField0_ & ~0x00000004);
          seq_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:DnsRoot.TreeRoot)
      }

      // @@protoc_insertion_point(class_scope:DnsRoot.TreeRoot)
      private static final org.tron.p2p.protos.Discover.DnsRoot.TreeRoot DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.DnsRoot.TreeRoot();
      }

      public static org.tron.p2p.protos.Discover.DnsRoot.TreeRoot getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public TreeRoot parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int TREEROOT_FIELD_NUMBER = 1;
    private org.tron.p2p.protos.Discover.DnsRoot.TreeRoot treeRoot_;
    /**
     * .DnsRoot.TreeRoot treeRoot = 1;
     * @return Whether the treeRoot field is set.
     */
    @java.lang.Override
    public boolean hasTreeRoot() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .DnsRoot.TreeRoot treeRoot = 1;
     * @return The treeRoot.
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot getTreeRoot() {
      return treeRoot_ == null ? org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance() : treeRoot_;
    }
    /**
     * .DnsRoot.TreeRoot treeRoot = 1;
     */
    @java.lang.Override
    public org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder getTreeRootOrBuilder() {
      return treeRoot_ == null ? org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance() : treeRoot_;
    }

    public static final int SIGNATURE_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * bytes signature = 2;
     * @return The signature.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTreeRoot());
      }
      if (!signature_.isEmpty()) {
        output.writeBytes(2, signature_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTreeRoot());
      }
      if (!signature_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, signature_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.tron.p2p.protos.Discover.DnsRoot)) {
        return super.equals(obj);
      }
      org.tron.p2p.protos.Discover.DnsRoot other = (org.tron.p2p.protos.Discover.DnsRoot) obj;

      if (hasTreeRoot() != other.hasTreeRoot()) return false;
      if (hasTreeRoot()) {
        if (!getTreeRoot()
            .equals(other.getTreeRoot())) return false;
      }
      if (!getSignature()
          .equals(other.getSignature())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTreeRoot()) {
        hash = (37 * hash) + TREEROOT_FIELD_NUMBER;
        hash = (53 * hash) + getTreeRoot().hashCode();
      }
      hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
      hash = (53 * hash) + getSignature().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.tron.p2p.protos.Discover.DnsRoot parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.tron.p2p.protos.Discover.DnsRoot parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tron.p2p.protos.Discover.DnsRoot parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.tron.p2p.protos.Discover.DnsRoot prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code DnsRoot}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:DnsRoot)
        org.tron.p2p.protos.Discover.DnsRootOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tron.p2p.protos.Discover.internal_static_DnsRoot_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tron.p2p.protos.Discover.internal_static_DnsRoot_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tron.p2p.protos.Discover.DnsRoot.class, org.tron.p2p.protos.Discover.DnsRoot.Builder.class);
      }

      // Construct using org.tron.p2p.protos.Discover.DnsRoot.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTreeRootFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        treeRoot_ = null;
        if (treeRootBuilder_ != null) {
          treeRootBuilder_.dispose();
          treeRootBuilder_ = null;
        }
        signature_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tron.p2p.protos.Discover.internal_static_DnsRoot_descriptor;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.DnsRoot getDefaultInstanceForType() {
        return org.tron.p2p.protos.Discover.DnsRoot.getDefaultInstance();
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.DnsRoot build() {
        org.tron.p2p.protos.Discover.DnsRoot result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tron.p2p.protos.Discover.DnsRoot buildPartial() {
        org.tron.p2p.protos.Discover.DnsRoot result = new org.tron.p2p.protos.Discover.DnsRoot(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.tron.p2p.protos.Discover.DnsRoot result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.treeRoot_ = treeRootBuilder_ == null
              ? treeRoot_
              : treeRootBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.signature_ = signature_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.tron.p2p.protos.Discover.DnsRoot) {
          return mergeFrom((org.tron.p2p.protos.Discover.DnsRoot)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tron.p2p.protos.Discover.DnsRoot other) {
        if (other == org.tron.p2p.protos.Discover.DnsRoot.getDefaultInstance()) return this;
        if (other.hasTreeRoot()) {
          mergeTreeRoot(other.getTreeRoot());
        }
        if (other.getSignature() != com.google.protobuf.ByteString.EMPTY) {
          setSignature(other.getSignature());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTreeRootFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                signature_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.tron.p2p.protos.Discover.DnsRoot.TreeRoot treeRoot_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.DnsRoot.TreeRoot, org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder, org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder> treeRootBuilder_;
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       * @return Whether the treeRoot field is set.
       */
      public boolean hasTreeRoot() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       * @return The treeRoot.
       */
      public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot getTreeRoot() {
        if (treeRootBuilder_ == null) {
          return treeRoot_ == null ? org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance() : treeRoot_;
        } else {
          return treeRootBuilder_.getMessage();
        }
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      public Builder setTreeRoot(org.tron.p2p.protos.Discover.DnsRoot.TreeRoot value) {
        if (treeRootBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          treeRoot_ = value;
        } else {
          treeRootBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      public Builder setTreeRoot(
          org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder builderForValue) {
        if (treeRootBuilder_ == null) {
          treeRoot_ = builderForValue.build();
        } else {
          treeRootBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      public Builder mergeTreeRoot(org.tron.p2p.protos.Discover.DnsRoot.TreeRoot value) {
        if (treeRootBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            treeRoot_ != null &&
            treeRoot_ != org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance()) {
            getTreeRootBuilder().mergeFrom(value);
          } else {
            treeRoot_ = value;
          }
        } else {
          treeRootBuilder_.mergeFrom(value);
        }
        if (treeRoot_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      public Builder clearTreeRoot() {
        bitField0_ = (bitField0_ & ~0x00000001);
        treeRoot_ = null;
        if (treeRootBuilder_ != null) {
          treeRootBuilder_.dispose();
          treeRootBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      public org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder getTreeRootBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTreeRootFieldBuilder().getBuilder();
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      public org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder getTreeRootOrBuilder() {
        if (treeRootBuilder_ != null) {
          return treeRootBuilder_.getMessageOrBuilder();
        } else {
          return treeRoot_ == null ?
              org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.getDefaultInstance() : treeRoot_;
        }
      }
      /**
       * .DnsRoot.TreeRoot treeRoot = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tron.p2p.protos.Discover.DnsRoot.TreeRoot, org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder, org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder> 
          getTreeRootFieldBuilder() {
        if (treeRootBuilder_ == null) {
          treeRootBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tron.p2p.protos.Discover.DnsRoot.TreeRoot, org.tron.p2p.protos.Discover.DnsRoot.TreeRoot.Builder, org.tron.p2p.protos.Discover.DnsRoot.TreeRootOrBuilder>(
                  getTreeRoot(),
                  getParentForChildren(),
                  isClean());
          treeRoot_ = null;
        }
        return treeRootBuilder_;
      }

      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes signature = 2;
       * @return The signature.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * bytes signature = 2;
       * @param value The signature to set.
       * @return This builder for chaining.
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        signature_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * bytes signature = 2;
       * @return This builder for chaining.
       */
      public Builder clearSignature() {
        bitField0_ = (bitField0_ & ~0x00000002);
        signature_ = getDefaultInstance().getSignature();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:DnsRoot)
    }

    // @@protoc_insertion_point(class_scope:DnsRoot)
    private static final org.tron.p2p.protos.Discover.DnsRoot DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tron.p2p.protos.Discover.DnsRoot();
    }

    public static org.tron.p2p.protos.Discover.DnsRoot getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public DnsRoot parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public org.tron.p2p.protos.Discover.DnsRoot getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Endpoint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Endpoint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PingMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PingMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_PongMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_PongMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_FindNeighbours_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_FindNeighbours_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Neighbours_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Neighbours_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_EndPoints_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_EndPoints_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DnsRoot_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DnsRoot_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_DnsRoot_TreeRoot_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_DnsRoot_TreeRoot_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\016Discover.proto\"N\n\010Endpoint\022\017\n\007address\030" +
      "\001 \001(\014\022\014\n\004port\030\002 \001(\005\022\016\n\006nodeId\030\003 \001(\014\022\023\n\013a" +
      "ddressIpv6\030\004 \001(\014\"a\n\013PingMessage\022\027\n\004from\030" +
      "\001 \001(\0132\t.Endpoint\022\025\n\002to\030\002 \001(\0132\t.Endpoint\022" +
      "\017\n\007version\030\003 \001(\005\022\021\n\ttimestamp\030\004 \001(\003\"G\n\013P" +
      "ongMessage\022\027\n\004from\030\001 \001(\0132\t.Endpoint\022\014\n\004e" +
      "cho\030\002 \001(\005\022\021\n\ttimestamp\030\003 \001(\003\"N\n\016FindNeig" +
      "hbours\022\027\n\004from\030\001 \001(\0132\t.Endpoint\022\020\n\010targe" +
      "tId\030\002 \001(\014\022\021\n\ttimestamp\030\003 \001(\003\"W\n\nNeighbou" +
      "rs\022\027\n\004from\030\001 \001(\0132\t.Endpoint\022\035\n\nneighbour" +
      "s\030\002 \003(\0132\t.Endpoint\022\021\n\ttimestamp\030\003 \001(\003\"%\n" +
      "\tEndPoints\022\030\n\005nodes\030\001 \003(\0132\t.Endpoint\"x\n\007" +
      "DnsRoot\022#\n\010treeRoot\030\001 \001(\0132\021.DnsRoot.Tree" +
      "Root\022\021\n\tsignature\030\002 \001(\014\0325\n\010TreeRoot\022\r\n\005e" +
      "Root\030\001 \001(\014\022\r\n\005lRoot\030\002 \001(\014\022\013\n\003seq\030\003 \001(\005B\037" +
      "\n\023org.tron.p2p.protosB\010Discoverb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_Endpoint_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_Endpoint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Endpoint_descriptor,
        new java.lang.String[] { "Address", "Port", "NodeId", "AddressIpv6", });
    internal_static_PingMessage_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_PingMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PingMessage_descriptor,
        new java.lang.String[] { "From", "To", "Version", "Timestamp", });
    internal_static_PongMessage_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_PongMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_PongMessage_descriptor,
        new java.lang.String[] { "From", "Echo", "Timestamp", });
    internal_static_FindNeighbours_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_FindNeighbours_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_FindNeighbours_descriptor,
        new java.lang.String[] { "From", "TargetId", "Timestamp", });
    internal_static_Neighbours_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_Neighbours_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Neighbours_descriptor,
        new java.lang.String[] { "From", "Neighbours", "Timestamp", });
    internal_static_EndPoints_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_EndPoints_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_EndPoints_descriptor,
        new java.lang.String[] { "Nodes", });
    internal_static_DnsRoot_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_DnsRoot_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DnsRoot_descriptor,
        new java.lang.String[] { "TreeRoot", "Signature", });
    internal_static_DnsRoot_TreeRoot_descriptor =
      internal_static_DnsRoot_descriptor.getNestedTypes().get(0);
    internal_static_DnsRoot_TreeRoot_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_DnsRoot_TreeRoot_descriptor,
        new java.lang.String[] { "ERoot", "LRoot", "Seq", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy