// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: info.proto

package com.fdd.protobuf;

public final class InfoProto {
  private InfoProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code CAR_RUN_STATUS}
   */
  public enum CAR_RUN_STATUS
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>READY = 0;</code>
     */
    READY(0, 0),
    /**
     * <code>RUNNING = 1;</code>
     */
    RUNNING(1, 1),
    /**
     * <code>TURNING = 2;</code>
     */
    TURNING(2, 2),
    /**
     * <code>WAIT_TIME = 3;</code>
     */
    WAIT_TIME(3, 3),
    /**
     * <code>WAIT_LOAD = 4;</code>
     */
    WAIT_LOAD(4, 4),
    /**
     * <code>WAIT_UNLOAD = 5;</code>
     */
    WAIT_UNLOAD(5, 5),
    /**
     * <code>CHARGING = 6;</code>
     */
    CHARGING(6, 6),
    ;

    /**
     * <code>READY = 0;</code>
     */
    public static final int READY_VALUE = 0;
    /**
     * <code>RUNNING = 1;</code>
     */
    public static final int RUNNING_VALUE = 1;
    /**
     * <code>TURNING = 2;</code>
     */
    public static final int TURNING_VALUE = 2;
    /**
     * <code>WAIT_TIME = 3;</code>
     */
    public static final int WAIT_TIME_VALUE = 3;
    /**
     * <code>WAIT_LOAD = 4;</code>
     */
    public static final int WAIT_LOAD_VALUE = 4;
    /**
     * <code>WAIT_UNLOAD = 5;</code>
     */
    public static final int WAIT_UNLOAD_VALUE = 5;
    /**
     * <code>CHARGING = 6;</code>
     */
    public static final int CHARGING_VALUE = 6;


    public final int getNumber() { return value; }

    public static CAR_RUN_STATUS valueOf(int value) {
      switch (value) {
        case 0: return READY;
        case 1: return RUNNING;
        case 2: return TURNING;
        case 3: return WAIT_TIME;
        case 4: return WAIT_LOAD;
        case 5: return WAIT_UNLOAD;
        case 6: return CHARGING;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<CAR_RUN_STATUS>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<CAR_RUN_STATUS>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<CAR_RUN_STATUS>() {
            public CAR_RUN_STATUS findValueByNumber(int number) {
              return CAR_RUN_STATUS.valueOf(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return InfoProto.getDescriptor().getEnumTypes().get(0);
    }

    private static final CAR_RUN_STATUS[] VALUES = values();

    public static CAR_RUN_STATUS valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int index;
    private final int value;

    private CAR_RUN_STATUS(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:CAR_RUN_STATUS)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required string usr = 3;</code>
     */
    boolean hasUsr();
    /**
     * <code>required string usr = 3;</code>
     */
    String getUsr();
    /**
     * <code>required string usr = 3;</code>
     */
    com.google.protobuf.ByteString
        getUsrBytes();

    /**
     * <code>required string psw = 4;</code>
     */
    boolean hasPsw();
    /**
     * <code>required string psw = 4;</code>
     */
    String getPsw();
    /**
     * <code>required string psw = 4;</code>
     */
    com.google.protobuf.ByteString
        getPswBytes();

    /**
     * <code>optional string car_id = 5;</code>
     */
    boolean hasCarId();
    /**
     * <code>optional string car_id = 5;</code>
     */
    String getCarId();
    /**
     * <code>optional string car_id = 5;</code>
     */
    com.google.protobuf.ByteString
        getCarIdBytes();
  }
  /**
   * Protobuf type {@code carinfo}
   */
  public static final class carinfo extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:carinfo)
      carinfoOrBuilder {
    // Use carinfo.newBuilder() to construct.
    private carinfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private carinfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final carinfo defaultInstance;
    public static carinfo getDefaultInstance() {
      return defaultInstance;
    }

    public carinfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private carinfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              usr_ = bs;
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              psw_ = bs;
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000010;
              carId_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_carinfo_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_carinfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              carinfo.class, Builder.class);
    }

    public static com.google.protobuf.Parser<carinfo> PARSER =
        new com.google.protobuf.AbstractParser<carinfo>() {
      public carinfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new carinfo(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<carinfo> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int USR_FIELD_NUMBER = 3;
    private Object usr_;
    /**
     * <code>required string usr = 3;</code>
     */
    public boolean hasUsr() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string usr = 3;</code>
     */
    public String getUsr() {
      Object ref = usr_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          usr_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string usr = 3;</code>
     */
    public com.google.protobuf.ByteString
        getUsrBytes() {
      Object ref = usr_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        usr_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PSW_FIELD_NUMBER = 4;
    private Object psw_;
    /**
     * <code>required string psw = 4;</code>
     */
    public boolean hasPsw() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required string psw = 4;</code>
     */
    public String getPsw() {
      Object ref = psw_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          psw_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string psw = 4;</code>
     */
    public com.google.protobuf.ByteString
        getPswBytes() {
      Object ref = psw_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        psw_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CAR_ID_FIELD_NUMBER = 5;
    private Object carId_;
    /**
     * <code>optional string car_id = 5;</code>
     */
    public boolean hasCarId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string car_id = 5;</code>
     */
    public String getCarId() {
      Object ref = carId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          carId_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string car_id = 5;</code>
     */
    public com.google.protobuf.ByteString
        getCarIdBytes() {
      Object ref = carId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        carId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      usr_ = "";
      psw_ = "";
      carId_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUsr()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPsw()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getUsrBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getPswBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, getCarIdBytes());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getUsrBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getPswBytes());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, getCarIdBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static carinfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static carinfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static carinfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static carinfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static carinfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static carinfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static carinfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static carinfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static carinfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static carinfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(carinfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code carinfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:carinfo)
        carinfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_carinfo_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_carinfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                carinfo.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.carinfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        usr_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        psw_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        carId_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_carinfo_descriptor;
      }

      public carinfo getDefaultInstanceForType() {
        return carinfo.getDefaultInstance();
      }

      public carinfo build() {
        carinfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public carinfo buildPartial() {
        carinfo result = new carinfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.usr_ = usr_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.psw_ = psw_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.carId_ = carId_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof carinfo) {
          return mergeFrom((carinfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(carinfo other) {
        if (other == carinfo.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasUsr()) {
          bitField0_ |= 0x00000004;
          usr_ = other.usr_;
          onChanged();
        }
        if (other.hasPsw()) {
          bitField0_ |= 0x00000008;
          psw_ = other.psw_;
          onChanged();
        }
        if (other.hasCarId()) {
          bitField0_ |= 0x00000010;
          carId_ = other.carId_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasUsr()) {
          
          return false;
        }
        if (!hasPsw()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        carinfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (carinfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private Object usr_ = "";
      /**
       * <code>required string usr = 3;</code>
       */
      public boolean hasUsr() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string usr = 3;</code>
       */
      public String getUsr() {
        Object ref = usr_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            usr_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>required string usr = 3;</code>
       */
      public com.google.protobuf.ByteString
          getUsrBytes() {
        Object ref = usr_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          usr_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string usr = 3;</code>
       */
      public Builder setUsr(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        usr_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string usr = 3;</code>
       */
      public Builder clearUsr() {
        bitField0_ = (bitField0_ & ~0x00000004);
        usr_ = getDefaultInstance().getUsr();
        onChanged();
        return this;
      }
      /**
       * <code>required string usr = 3;</code>
       */
      public Builder setUsrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        usr_ = value;
        onChanged();
        return this;
      }

      private Object psw_ = "";
      /**
       * <code>required string psw = 4;</code>
       */
      public boolean hasPsw() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required string psw = 4;</code>
       */
      public String getPsw() {
        Object ref = psw_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            psw_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>required string psw = 4;</code>
       */
      public com.google.protobuf.ByteString
          getPswBytes() {
        Object ref = psw_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          psw_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string psw = 4;</code>
       */
      public Builder setPsw(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        psw_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string psw = 4;</code>
       */
      public Builder clearPsw() {
        bitField0_ = (bitField0_ & ~0x00000008);
        psw_ = getDefaultInstance().getPsw();
        onChanged();
        return this;
      }
      /**
       * <code>required string psw = 4;</code>
       */
      public Builder setPswBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        psw_ = value;
        onChanged();
        return this;
      }

      private Object carId_ = "";
      /**
       * <code>optional string car_id = 5;</code>
       */
      public boolean hasCarId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string car_id = 5;</code>
       */
      public String getCarId() {
        Object ref = carId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            carId_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>optional string car_id = 5;</code>
       */
      public com.google.protobuf.ByteString
          getCarIdBytes() {
        Object ref = carId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          carId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string car_id = 5;</code>
       */
      public Builder setCarId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        carId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string car_id = 5;</code>
       */
      public Builder clearCarId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        carId_ = getDefaultInstance().getCarId();
        onChanged();
        return this;
      }
      /**
       * <code>optional string car_id = 5;</code>
       */
      public Builder setCarIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        carId_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:carinfo)
    }

    static {
      defaultInstance = new carinfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:carinfo)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required double lat = 3;</code>
     */
    boolean hasLat();
    /**
     * <code>required double lat = 3;</code>
     */
    double getLat();

    /**
     * <code>required double lon = 4;</code>
     */
    boolean hasLon();
    /**
     * <code>required double lon = 4;</code>
     */
    double getLon();

    /**
     * <code>optional float alti = 5;</code>
     */
    boolean hasAlti();
    /**
     * <code>optional float alti = 5;</code>
     */
    float getAlti();

    /**
     * <code>optional float vn = 6;</code>
     */
    boolean hasVn();
    /**
     * <code>optional float vn = 6;</code>
     */
    float getVn();

    /**
     * <code>optional float ve = 7;</code>
     */
    boolean hasVe();
    /**
     * <code>optional float ve = 7;</code>
     */
    float getVe();

    /**
     * <code>optional float vu = 8;</code>
     */
    boolean hasVu();
    /**
     * <code>optional float vu = 8;</code>
     */
    float getVu();

    /**
     * <code>optional float roll = 9;</code>
     */
    boolean hasRoll();
    /**
     * <code>optional float roll = 9;</code>
     */
    float getRoll();

    /**
     * <code>optional float pitch = 10;</code>
     */
    boolean hasPitch();
    /**
     * <code>optional float pitch = 10;</code>
     */
    float getPitch();

    /**
     * <code>optional float head = 11;</code>
     */
    boolean hasHead();
    /**
     * <code>optional float head = 11;</code>
     */
    float getHead();
  }
  /**
   * Protobuf type {@code imu}
   */
  public static final class imu extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:imu)
      imuOrBuilder {
    // Use imu.newBuilder() to construct.
    private imu(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private imu(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final imu defaultInstance;
    public static imu getDefaultInstance() {
      return defaultInstance;
    }

    public imu getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private imu(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 25: {
              bitField0_ |= 0x00000004;
              lat_ = input.readDouble();
              break;
            }
            case 33: {
              bitField0_ |= 0x00000008;
              lon_ = input.readDouble();
              break;
            }
            case 45: {
              bitField0_ |= 0x00000010;
              alti_ = input.readFloat();
              break;
            }
            case 53: {
              bitField0_ |= 0x00000020;
              vn_ = input.readFloat();
              break;
            }
            case 61: {
              bitField0_ |= 0x00000040;
              ve_ = input.readFloat();
              break;
            }
            case 69: {
              bitField0_ |= 0x00000080;
              vu_ = input.readFloat();
              break;
            }
            case 77: {
              bitField0_ |= 0x00000100;
              roll_ = input.readFloat();
              break;
            }
            case 85: {
              bitField0_ |= 0x00000200;
              pitch_ = input.readFloat();
              break;
            }
            case 93: {
              bitField0_ |= 0x00000400;
              head_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_imu_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_imu_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              imu.class, Builder.class);
    }

    public static com.google.protobuf.Parser<imu> PARSER =
        new com.google.protobuf.AbstractParser<imu>() {
      public imu parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new imu(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<imu> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int LAT_FIELD_NUMBER = 3;
    private double lat_;
    /**
     * <code>required double lat = 3;</code>
     */
    public boolean hasLat() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required double lat = 3;</code>
     */
    public double getLat() {
      return lat_;
    }

    public static final int LON_FIELD_NUMBER = 4;
    private double lon_;
    /**
     * <code>required double lon = 4;</code>
     */
    public boolean hasLon() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required double lon = 4;</code>
     */
    public double getLon() {
      return lon_;
    }

    public static final int ALTI_FIELD_NUMBER = 5;
    private float alti_;
    /**
     * <code>optional float alti = 5;</code>
     */
    public boolean hasAlti() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional float alti = 5;</code>
     */
    public float getAlti() {
      return alti_;
    }

    public static final int VN_FIELD_NUMBER = 6;
    private float vn_;
    /**
     * <code>optional float vn = 6;</code>
     */
    public boolean hasVn() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional float vn = 6;</code>
     */
    public float getVn() {
      return vn_;
    }

    public static final int VE_FIELD_NUMBER = 7;
    private float ve_;
    /**
     * <code>optional float ve = 7;</code>
     */
    public boolean hasVe() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional float ve = 7;</code>
     */
    public float getVe() {
      return ve_;
    }

    public static final int VU_FIELD_NUMBER = 8;
    private float vu_;
    /**
     * <code>optional float vu = 8;</code>
     */
    public boolean hasVu() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional float vu = 8;</code>
     */
    public float getVu() {
      return vu_;
    }

    public static final int ROLL_FIELD_NUMBER = 9;
    private float roll_;
    /**
     * <code>optional float roll = 9;</code>
     */
    public boolean hasRoll() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional float roll = 9;</code>
     */
    public float getRoll() {
      return roll_;
    }

    public static final int PITCH_FIELD_NUMBER = 10;
    private float pitch_;
    /**
     * <code>optional float pitch = 10;</code>
     */
    public boolean hasPitch() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional float pitch = 10;</code>
     */
    public float getPitch() {
      return pitch_;
    }

    public static final int HEAD_FIELD_NUMBER = 11;
    private float head_;
    /**
     * <code>optional float head = 11;</code>
     */
    public boolean hasHead() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <code>optional float head = 11;</code>
     */
    public float getHead() {
      return head_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      lat_ = 0D;
      lon_ = 0D;
      alti_ = 0F;
      vn_ = 0F;
      ve_ = 0F;
      vu_ = 0F;
      roll_ = 0F;
      pitch_ = 0F;
      head_ = 0F;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLat()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLon()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeDouble(3, lat_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeDouble(4, lon_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeFloat(5, alti_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeFloat(6, vn_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeFloat(7, ve_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeFloat(8, vu_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeFloat(9, roll_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeFloat(10, pitch_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeFloat(11, head_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, lat_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, lon_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(5, alti_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(6, vn_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(7, ve_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(8, vu_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(9, roll_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(10, pitch_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(11, head_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static imu parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static imu parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static imu parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static imu parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static imu parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static imu parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static imu parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static imu parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static imu parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static imu parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(imu prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code imu}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:imu)
        imuOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_imu_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_imu_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                imu.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.imu.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        lat_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000004);
        lon_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000008);
        alti_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000010);
        vn_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000020);
        ve_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000040);
        vu_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000080);
        roll_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000100);
        pitch_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000200);
        head_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_imu_descriptor;
      }

      public imu getDefaultInstanceForType() {
        return imu.getDefaultInstance();
      }

      public imu build() {
        imu result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public imu buildPartial() {
        imu result = new imu(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.lat_ = lat_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.lon_ = lon_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.alti_ = alti_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.vn_ = vn_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.ve_ = ve_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.vu_ = vu_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.roll_ = roll_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.pitch_ = pitch_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000400;
        }
        result.head_ = head_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof imu) {
          return mergeFrom((imu)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(imu other) {
        if (other == imu.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasLat()) {
          setLat(other.getLat());
        }
        if (other.hasLon()) {
          setLon(other.getLon());
        }
        if (other.hasAlti()) {
          setAlti(other.getAlti());
        }
        if (other.hasVn()) {
          setVn(other.getVn());
        }
        if (other.hasVe()) {
          setVe(other.getVe());
        }
        if (other.hasVu()) {
          setVu(other.getVu());
        }
        if (other.hasRoll()) {
          setRoll(other.getRoll());
        }
        if (other.hasPitch()) {
          setPitch(other.getPitch());
        }
        if (other.hasHead()) {
          setHead(other.getHead());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasLat()) {
          
          return false;
        }
        if (!hasLon()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        imu parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (imu) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private double lat_ ;
      /**
       * <code>required double lat = 3;</code>
       */
      public boolean hasLat() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required double lat = 3;</code>
       */
      public double getLat() {
        return lat_;
      }
      /**
       * <code>required double lat = 3;</code>
       */
      public Builder setLat(double value) {
        bitField0_ |= 0x00000004;
        lat_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required double lat = 3;</code>
       */
      public Builder clearLat() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lat_ = 0D;
        onChanged();
        return this;
      }

      private double lon_ ;
      /**
       * <code>required double lon = 4;</code>
       */
      public boolean hasLon() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>required double lon = 4;</code>
       */
      public double getLon() {
        return lon_;
      }
      /**
       * <code>required double lon = 4;</code>
       */
      public Builder setLon(double value) {
        bitField0_ |= 0x00000008;
        lon_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required double lon = 4;</code>
       */
      public Builder clearLon() {
        bitField0_ = (bitField0_ & ~0x00000008);
        lon_ = 0D;
        onChanged();
        return this;
      }

      private float alti_ ;
      /**
       * <code>optional float alti = 5;</code>
       */
      public boolean hasAlti() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional float alti = 5;</code>
       */
      public float getAlti() {
        return alti_;
      }
      /**
       * <code>optional float alti = 5;</code>
       */
      public Builder setAlti(float value) {
        bitField0_ |= 0x00000010;
        alti_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float alti = 5;</code>
       */
      public Builder clearAlti() {
        bitField0_ = (bitField0_ & ~0x00000010);
        alti_ = 0F;
        onChanged();
        return this;
      }

      private float vn_ ;
      /**
       * <code>optional float vn = 6;</code>
       */
      public boolean hasVn() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional float vn = 6;</code>
       */
      public float getVn() {
        return vn_;
      }
      /**
       * <code>optional float vn = 6;</code>
       */
      public Builder setVn(float value) {
        bitField0_ |= 0x00000020;
        vn_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float vn = 6;</code>
       */
      public Builder clearVn() {
        bitField0_ = (bitField0_ & ~0x00000020);
        vn_ = 0F;
        onChanged();
        return this;
      }

      private float ve_ ;
      /**
       * <code>optional float ve = 7;</code>
       */
      public boolean hasVe() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional float ve = 7;</code>
       */
      public float getVe() {
        return ve_;
      }
      /**
       * <code>optional float ve = 7;</code>
       */
      public Builder setVe(float value) {
        bitField0_ |= 0x00000040;
        ve_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float ve = 7;</code>
       */
      public Builder clearVe() {
        bitField0_ = (bitField0_ & ~0x00000040);
        ve_ = 0F;
        onChanged();
        return this;
      }

      private float vu_ ;
      /**
       * <code>optional float vu = 8;</code>
       */
      public boolean hasVu() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional float vu = 8;</code>
       */
      public float getVu() {
        return vu_;
      }
      /**
       * <code>optional float vu = 8;</code>
       */
      public Builder setVu(float value) {
        bitField0_ |= 0x00000080;
        vu_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float vu = 8;</code>
       */
      public Builder clearVu() {
        bitField0_ = (bitField0_ & ~0x00000080);
        vu_ = 0F;
        onChanged();
        return this;
      }

      private float roll_ ;
      /**
       * <code>optional float roll = 9;</code>
       */
      public boolean hasRoll() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional float roll = 9;</code>
       */
      public float getRoll() {
        return roll_;
      }
      /**
       * <code>optional float roll = 9;</code>
       */
      public Builder setRoll(float value) {
        bitField0_ |= 0x00000100;
        roll_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float roll = 9;</code>
       */
      public Builder clearRoll() {
        bitField0_ = (bitField0_ & ~0x00000100);
        roll_ = 0F;
        onChanged();
        return this;
      }

      private float pitch_ ;
      /**
       * <code>optional float pitch = 10;</code>
       */
      public boolean hasPitch() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional float pitch = 10;</code>
       */
      public float getPitch() {
        return pitch_;
      }
      /**
       * <code>optional float pitch = 10;</code>
       */
      public Builder setPitch(float value) {
        bitField0_ |= 0x00000200;
        pitch_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float pitch = 10;</code>
       */
      public Builder clearPitch() {
        bitField0_ = (bitField0_ & ~0x00000200);
        pitch_ = 0F;
        onChanged();
        return this;
      }

      private float head_ ;
      /**
       * <code>optional float head = 11;</code>
       */
      public boolean hasHead() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional float head = 11;</code>
       */
      public float getHead() {
        return head_;
      }
      /**
       * <code>optional float head = 11;</code>
       */
      public Builder setHead(float value) {
        bitField0_ |= 0x00000400;
        head_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float head = 11;</code>
       */
      public Builder clearHead() {
        bitField0_ = (bitField0_ & ~0x00000400);
        head_ = 0F;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:imu)
    }

    static {
      defaultInstance = new imu(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:imu)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required float spd = 3;</code>
     */
    boolean hasSpd();
    /**
     * <code>required float spd = 3;</code>
     */
    float getSpd();
  }
  /**
   * Protobuf type {@code speed}
   */
  public static final class speed extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:speed)
      speedOrBuilder {
    // Use speed.newBuilder() to construct.
    private speed(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private speed(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final speed defaultInstance;
    public static speed getDefaultInstance() {
      return defaultInstance;
    }

    public speed getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private speed(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              spd_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_speed_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_speed_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              speed.class, Builder.class);
    }

    public static com.google.protobuf.Parser<speed> PARSER =
        new com.google.protobuf.AbstractParser<speed>() {
      public speed parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new speed(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<speed> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int SPD_FIELD_NUMBER = 3;
    private float spd_;
    /**
     * <code>required float spd = 3;</code>
     */
    public boolean hasSpd() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required float spd = 3;</code>
     */
    public float getSpd() {
      return spd_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      spd_ = 0F;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSpd()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeFloat(3, spd_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(3, spd_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static speed parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static speed parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static speed parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static speed parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static speed parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static speed parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static speed parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static speed parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static speed parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static speed parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(speed prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code speed}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:speed)
        speedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_speed_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_speed_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                speed.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.speed.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        spd_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_speed_descriptor;
      }

      public speed getDefaultInstanceForType() {
        return speed.getDefaultInstance();
      }

      public speed build() {
        speed result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public speed buildPartial() {
        speed result = new speed(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.spd_ = spd_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof speed) {
          return mergeFrom((speed)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(speed other) {
        if (other == speed.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasSpd()) {
          setSpd(other.getSpd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasSpd()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        speed parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (speed) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private float spd_ ;
      /**
       * <code>required float spd = 3;</code>
       */
      public boolean hasSpd() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required float spd = 3;</code>
       */
      public float getSpd() {
        return spd_;
      }
      /**
       * <code>required float spd = 3;</code>
       */
      public Builder setSpd(float value) {
        bitField0_ |= 0x00000004;
        spd_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required float spd = 3;</code>
       */
      public Builder clearSpd() {
        bitField0_ = (bitField0_ & ~0x00000004);
        spd_ = 0F;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:speed)
    }

    static {
      defaultInstance = new speed(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:speed)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required uint32 rkm = 3;</code>
     */
    boolean hasRkm();
    /**
     * <code>required uint32 rkm = 3;</code>
     */
    int getRkm();
  }
  /**
   * Protobuf type {@code rkm}
   */
  public static final class rkm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:rkm)
      rkmOrBuilder {
    // Use rkm.newBuilder() to construct.
    private rkm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private rkm(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final rkm defaultInstance;
    public static rkm getDefaultInstance() {
      return defaultInstance;
    }

    public rkm getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private rkm(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              rkm_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_rkm_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_rkm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              rkm.class, Builder.class);
    }

    public static com.google.protobuf.Parser<rkm> PARSER =
        new com.google.protobuf.AbstractParser<rkm>() {
      public rkm parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new rkm(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<rkm> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int RKM_FIELD_NUMBER = 3;
    private int rkm_;
    /**
     * <code>required uint32 rkm = 3;</code>
     */
    public boolean hasRkm() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required uint32 rkm = 3;</code>
     */
    public int getRkm() {
      return rkm_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      rkm_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRkm()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, rkm_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, rkm_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static rkm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static rkm parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static rkm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static rkm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static rkm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static rkm parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static rkm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static rkm parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static rkm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static rkm parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(rkm prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code rkm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:rkm)
        rkmOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_rkm_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_rkm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                rkm.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.rkm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        rkm_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_rkm_descriptor;
      }

      public rkm getDefaultInstanceForType() {
        return rkm.getDefaultInstance();
      }

      public rkm build() {
        rkm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public rkm buildPartial() {
        rkm result = new rkm(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.rkm_ = rkm_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof rkm) {
          return mergeFrom((rkm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(rkm other) {
        if (other == rkm.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasRkm()) {
          setRkm(other.getRkm());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasRkm()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        rkm parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (rkm) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private int rkm_ ;
      /**
       * <code>required uint32 rkm = 3;</code>
       */
      public boolean hasRkm() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required uint32 rkm = 3;</code>
       */
      public int getRkm() {
        return rkm_;
      }
      /**
       * <code>required uint32 rkm = 3;</code>
       */
      public Builder setRkm(int value) {
        bitField0_ |= 0x00000004;
        rkm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 rkm = 3;</code>
       */
      public Builder clearRkm() {
        bitField0_ = (bitField0_ & ~0x00000004);
        rkm_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:rkm)
    }

    static {
      defaultInstance = new rkm(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:rkm)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required uint32 tkm = 3;</code>
     */
    boolean hasTkm();
    /**
     * <code>required uint32 tkm = 3;</code>
     */
    int getTkm();
  }
  /**
   * Protobuf type {@code tkm}
   */
  public static final class tkm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:tkm)
      tkmOrBuilder {
    // Use tkm.newBuilder() to construct.
    private tkm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private tkm(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final tkm defaultInstance;
    public static tkm getDefaultInstance() {
      return defaultInstance;
    }

    public tkm getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private tkm(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              tkm_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_tkm_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_tkm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              tkm.class, Builder.class);
    }

    public static com.google.protobuf.Parser<tkm> PARSER =
        new com.google.protobuf.AbstractParser<tkm>() {
      public tkm parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new tkm(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<tkm> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int TKM_FIELD_NUMBER = 3;
    private int tkm_;
    /**
     * <code>required uint32 tkm = 3;</code>
     */
    public boolean hasTkm() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required uint32 tkm = 3;</code>
     */
    public int getTkm() {
      return tkm_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      tkm_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTkm()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, tkm_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, tkm_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static tkm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static tkm parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static tkm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static tkm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static tkm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static tkm parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static tkm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static tkm parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static tkm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static tkm parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(tkm prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code tkm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tkm)
        tkmOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_tkm_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_tkm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                tkm.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.tkm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        tkm_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_tkm_descriptor;
      }

      public tkm getDefaultInstanceForType() {
        return tkm.getDefaultInstance();
      }

      public tkm build() {
        tkm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public tkm buildPartial() {
        tkm result = new tkm(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.tkm_ = tkm_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof tkm) {
          return mergeFrom((tkm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(tkm other) {
        if (other == tkm.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasTkm()) {
          setTkm(other.getTkm());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasTkm()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        tkm parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (tkm) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private int tkm_ ;
      /**
       * <code>required uint32 tkm = 3;</code>
       */
      public boolean hasTkm() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required uint32 tkm = 3;</code>
       */
      public int getTkm() {
        return tkm_;
      }
      /**
       * <code>required uint32 tkm = 3;</code>
       */
      public Builder setTkm(int value) {
        bitField0_ |= 0x00000004;
        tkm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 tkm = 3;</code>
       */
      public Builder clearTkm() {
        bitField0_ = (bitField0_ & ~0x00000004);
        tkm_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:tkm)
    }

    static {
      defaultInstance = new tkm(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:tkm)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required int32 bin = 3;</code>
     */
    boolean hasBin();
    /**
     * <code>required int32 bin = 3;</code>
     */
    int getBin();
  }
  /**
   * Protobuf type {@code bin}
   */
  public static final class bin extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:bin)
      binOrBuilder {
    // Use bin.newBuilder() to construct.
    private bin(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private bin(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final bin defaultInstance;
    public static bin getDefaultInstance() {
      return defaultInstance;
    }

    public bin getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private bin(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              bin_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_bin_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_bin_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              bin.class, Builder.class);
    }

    public static com.google.protobuf.Parser<bin> PARSER =
        new com.google.protobuf.AbstractParser<bin>() {
      public bin parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new bin(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<bin> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int BIN_FIELD_NUMBER = 3;
    private int bin_;
    /**
     * <code>required int32 bin = 3;</code>
     */
    public boolean hasBin() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 bin = 3;</code>
     */
    public int getBin() {
      return bin_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      bin_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBin()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, bin_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, bin_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static bin parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static bin parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static bin parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static bin parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static bin parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static bin parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static bin parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static bin parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static bin parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static bin parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(bin prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code bin}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:bin)
        binOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_bin_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_bin_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                bin.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.bin.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        bin_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_bin_descriptor;
      }

      public bin getDefaultInstanceForType() {
        return bin.getDefaultInstance();
      }

      public bin build() {
        bin result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public bin buildPartial() {
        bin result = new bin(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.bin_ = bin_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof bin) {
          return mergeFrom((bin)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(bin other) {
        if (other == bin.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasBin()) {
          setBin(other.getBin());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasBin()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        bin parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (bin) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private int bin_ ;
      /**
       * <code>required int32 bin = 3;</code>
       */
      public boolean hasBin() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 bin = 3;</code>
       */
      public int getBin() {
        return bin_;
      }
      /**
       * <code>required int32 bin = 3;</code>
       */
      public Builder setBin(int value) {
        bitField0_ |= 0x00000004;
        bin_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 bin = 3;</code>
       */
      public Builder clearBin() {
        bitField0_ = (bitField0_ & ~0x00000004);
        bin_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:bin)
    }

    static {
      defaultInstance = new bin(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:bin)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required float soc = 3;</code>
     */
    boolean hasSoc();
    /**
     * <code>required float soc = 3;</code>
     */
    float getSoc();
  }
  /**
   * Protobuf type {@code soc}
   */
  public static final class soc extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:soc)
      socOrBuilder {
    // Use soc.newBuilder() to construct.
    private soc(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private soc(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final soc defaultInstance;
    public static soc getDefaultInstance() {
      return defaultInstance;
    }

    public soc getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private soc(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              soc_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_soc_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_soc_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              soc.class, Builder.class);
    }

    public static com.google.protobuf.Parser<soc> PARSER =
        new com.google.protobuf.AbstractParser<soc>() {
      public soc parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new soc(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<soc> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int SOC_FIELD_NUMBER = 3;
    private float soc_;
    /**
     * <code>required float soc = 3;</code>
     */
    public boolean hasSoc() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required float soc = 3;</code>
     */
    public float getSoc() {
      return soc_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      soc_ = 0F;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSoc()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeFloat(3, soc_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(3, soc_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static soc parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soc parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soc parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static soc parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static soc parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static soc parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static soc parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static soc parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static soc parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static soc parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(soc prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code soc}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:soc)
        socOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_soc_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_soc_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                soc.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.soc.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        soc_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_soc_descriptor;
      }

      public soc getDefaultInstanceForType() {
        return soc.getDefaultInstance();
      }

      public soc build() {
        soc result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public soc buildPartial() {
        soc result = new soc(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.soc_ = soc_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof soc) {
          return mergeFrom((soc)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(soc other) {
        if (other == soc.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasSoc()) {
          setSoc(other.getSoc());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasSoc()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        soc parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (soc) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private float soc_ ;
      /**
       * <code>required float soc = 3;</code>
       */
      public boolean hasSoc() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required float soc = 3;</code>
       */
      public float getSoc() {
        return soc_;
      }
      /**
       * <code>required float soc = 3;</code>
       */
      public Builder setSoc(float value) {
        bitField0_ |= 0x00000004;
        soc_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required float soc = 3;</code>
       */
      public Builder clearSoc() {
        bitField0_ = (bitField0_ & ~0x00000004);
        soc_ = 0F;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:soc)
    }

    static {
      defaultInstance = new soc(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:soc)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required int32 mod = 3;</code>
     */
    boolean hasMod();
    /**
     * <code>required int32 mod = 3;</code>
     */
    int getMod();
  }
  /**
   * Protobuf type {@code mod}
   */
  public static final class mod extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:mod)
      modOrBuilder {
    // Use mod.newBuilder() to construct.
    private mod(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private mod(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final mod defaultInstance;
    public static mod getDefaultInstance() {
      return defaultInstance;
    }

    public mod getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private mod(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              mod_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_mod_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_mod_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              mod.class, Builder.class);
    }

    public static com.google.protobuf.Parser<mod> PARSER =
        new com.google.protobuf.AbstractParser<mod>() {
      public mod parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new mod(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<mod> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int MOD_FIELD_NUMBER = 3;
    private int mod_;
    /**
     * <code>required int32 mod = 3;</code>
     */
    public boolean hasMod() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int32 mod = 3;</code>
     */
    public int getMod() {
      return mod_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      mod_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMod()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, mod_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, mod_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static mod parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static mod parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static mod parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static mod parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static mod parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static mod parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static mod parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static mod parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static mod parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static mod parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(mod prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code mod}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:mod)
        modOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_mod_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_mod_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                mod.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.mod.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        mod_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_mod_descriptor;
      }

      public mod getDefaultInstanceForType() {
        return mod.getDefaultInstance();
      }

      public mod build() {
        mod result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public mod buildPartial() {
        mod result = new mod(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.mod_ = mod_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof mod) {
          return mergeFrom((mod)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(mod other) {
        if (other == mod.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasMod()) {
          setMod(other.getMod());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasMod()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        mod parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (mod) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private int mod_ ;
      /**
       * <code>required int32 mod = 3;</code>
       */
      public boolean hasMod() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int32 mod = 3;</code>
       */
      public int getMod() {
        return mod_;
      }
      /**
       * <code>required int32 mod = 3;</code>
       */
      public Builder setMod(int value) {
        bitField0_ |= 0x00000004;
        mod_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 mod = 3;</code>
       */
      public Builder clearMod() {
        bitField0_ = (bitField0_ & ~0x00000004);
        mod_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:mod)
    }

    static {
      defaultInstance = new mod(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:mod)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>optional uint64 alm3 = 3;</code>
     */
    boolean hasAlm3();
    /**
     * <code>optional uint64 alm3 = 3;</code>
     */
    long getAlm3();

    /**
     * <code>optional uint64 alm2 = 4;</code>
     */
    boolean hasAlm2();
    /**
     * <code>optional uint64 alm2 = 4;</code>
     */
    long getAlm2();

    /**
     * <code>optional uint64 alm1 = 5;</code>
     */
    boolean hasAlm1();
    /**
     * <code>optional uint64 alm1 = 5;</code>
     */
    long getAlm1();
  }
  /**
   * Protobuf type {@code alm}
   */
  public static final class alm extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:alm)
      almOrBuilder {
    // Use alm.newBuilder() to construct.
    private alm(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private alm(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final alm defaultInstance;
    public static alm getDefaultInstance() {
      return defaultInstance;
    }

    public alm getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private alm(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              alm3_ = input.readUInt64();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              alm2_ = input.readUInt64();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              alm1_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_alm_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_alm_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              alm.class, Builder.class);
    }

    public static com.google.protobuf.Parser<alm> PARSER =
        new com.google.protobuf.AbstractParser<alm>() {
      public alm parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new alm(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<alm> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int ALM3_FIELD_NUMBER = 3;
    private long alm3_;
    /**
     * <code>optional uint64 alm3 = 3;</code>
     */
    public boolean hasAlm3() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional uint64 alm3 = 3;</code>
     */
    public long getAlm3() {
      return alm3_;
    }

    public static final int ALM2_FIELD_NUMBER = 4;
    private long alm2_;
    /**
     * <code>optional uint64 alm2 = 4;</code>
     */
    public boolean hasAlm2() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional uint64 alm2 = 4;</code>
     */
    public long getAlm2() {
      return alm2_;
    }

    public static final int ALM1_FIELD_NUMBER = 5;
    private long alm1_;
    /**
     * <code>optional uint64 alm1 = 5;</code>
     */
    public boolean hasAlm1() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional uint64 alm1 = 5;</code>
     */
    public long getAlm1() {
      return alm1_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      alm3_ = 0L;
      alm2_ = 0L;
      alm1_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(3, alm3_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt64(4, alm2_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt64(5, alm1_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, alm3_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, alm2_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, alm1_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static alm parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alm parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alm parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alm parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alm parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alm parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static alm parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static alm parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static alm parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alm parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(alm prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code alm}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:alm)
        almOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_alm_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_alm_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                alm.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.alm.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        alm3_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        alm2_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000008);
        alm1_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_alm_descriptor;
      }

      public alm getDefaultInstanceForType() {
        return alm.getDefaultInstance();
      }

      public alm build() {
        alm result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public alm buildPartial() {
        alm result = new alm(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.alm3_ = alm3_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.alm2_ = alm2_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.alm1_ = alm1_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof alm) {
          return mergeFrom((alm)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(alm other) {
        if (other == alm.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasAlm3()) {
          setAlm3(other.getAlm3());
        }
        if (other.hasAlm2()) {
          setAlm2(other.getAlm2());
        }
        if (other.hasAlm1()) {
          setAlm1(other.getAlm1());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        alm parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (alm) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private long alm3_ ;
      /**
       * <code>optional uint64 alm3 = 3;</code>
       */
      public boolean hasAlm3() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional uint64 alm3 = 3;</code>
       */
      public long getAlm3() {
        return alm3_;
      }
      /**
       * <code>optional uint64 alm3 = 3;</code>
       */
      public Builder setAlm3(long value) {
        bitField0_ |= 0x00000004;
        alm3_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 alm3 = 3;</code>
       */
      public Builder clearAlm3() {
        bitField0_ = (bitField0_ & ~0x00000004);
        alm3_ = 0L;
        onChanged();
        return this;
      }

      private long alm2_ ;
      /**
       * <code>optional uint64 alm2 = 4;</code>
       */
      public boolean hasAlm2() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional uint64 alm2 = 4;</code>
       */
      public long getAlm2() {
        return alm2_;
      }
      /**
       * <code>optional uint64 alm2 = 4;</code>
       */
      public Builder setAlm2(long value) {
        bitField0_ |= 0x00000008;
        alm2_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 alm2 = 4;</code>
       */
      public Builder clearAlm2() {
        bitField0_ = (bitField0_ & ~0x00000008);
        alm2_ = 0L;
        onChanged();
        return this;
      }

      private long alm1_ ;
      /**
       * <code>optional uint64 alm1 = 5;</code>
       */
      public boolean hasAlm1() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional uint64 alm1 = 5;</code>
       */
      public long getAlm1() {
        return alm1_;
      }
      /**
       * <code>optional uint64 alm1 = 5;</code>
       */
      public Builder setAlm1(long value) {
        bitField0_ |= 0x00000010;
        alm1_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 alm1 = 5;</code>
       */
      public Builder clearAlm1() {
        bitField0_ = (bitField0_ & ~0x00000010);
        alm1_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:alm)
    }

    static {
      defaultInstance = new alm(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:alm)
  }

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

    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    boolean hasTimestampUs();
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    long getTimestampUs();

    /**
     * <code>required uint64 vid = 2;</code>
     */
    boolean hasVid();
    /**
     * <code>required uint64 vid = 2;</code>
     */
    long getVid();

    /**
     * <code>required .CAR_RUN_STATUS status = 3;</code>
     */
    boolean hasStatus();
    /**
     * <code>required .CAR_RUN_STATUS status = 3;</code>
     */
    CAR_RUN_STATUS getStatus();
  }
  /**
   * Protobuf type {@code run_status}
   */
  public static final class run_status extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:run_status)
      run_statusOrBuilder {
    // Use run_status.newBuilder() to construct.
    private run_status(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private run_status(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final run_status defaultInstance;
    public static run_status getDefaultInstance() {
      return defaultInstance;
    }

    public run_status getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private run_status(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestampUs_ = input.readUInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              vid_ = input.readUInt64();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              CAR_RUN_STATUS value = CAR_RUN_STATUS.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(3, rawValue);
              } else {
                bitField0_ |= 0x00000004;
                status_ = value;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return InfoProto.internal_static_run_status_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return InfoProto.internal_static_run_status_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              run_status.class, Builder.class);
    }

    public static com.google.protobuf.Parser<run_status> PARSER =
        new com.google.protobuf.AbstractParser<run_status>() {
      public run_status parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new run_status(input, extensionRegistry);
      }
    };

    @Override
    public com.google.protobuf.Parser<run_status> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TIMESTAMP_US_FIELD_NUMBER = 1;
    private long timestampUs_;
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public boolean hasTimestampUs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required uint64 timestamp_us = 1;</code>
     */
    public long getTimestampUs() {
      return timestampUs_;
    }

    public static final int VID_FIELD_NUMBER = 2;
    private long vid_;
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public boolean hasVid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 vid = 2;</code>
     */
    public long getVid() {
      return vid_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private CAR_RUN_STATUS status_;
    /**
     * <code>required .CAR_RUN_STATUS status = 3;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .CAR_RUN_STATUS status = 3;</code>
     */
    public CAR_RUN_STATUS getStatus() {
      return status_;
    }

    private void initFields() {
      timestampUs_ = 0L;
      vid_ = 0L;
      status_ = CAR_RUN_STATUS.READY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTimestampUs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStatus()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, status_.getNumber());
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, timestampUs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, vid_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, status_.getNumber());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static run_status parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static run_status parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static run_status parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static run_status parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static run_status parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static run_status parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static run_status parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static run_status parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static run_status parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static run_status parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(run_status prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code run_status}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:run_status)
        run_statusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return InfoProto.internal_static_run_status_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return InfoProto.internal_static_run_status_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                run_status.class, Builder.class);
      }

      // Construct using com.fdd.protobuf.InfoProto.run_status.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestampUs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        vid_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        status_ = CAR_RUN_STATUS.READY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return InfoProto.internal_static_run_status_descriptor;
      }

      public run_status getDefaultInstanceForType() {
        return run_status.getDefaultInstance();
      }

      public run_status build() {
        run_status result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public run_status buildPartial() {
        run_status result = new run_status(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestampUs_ = timestampUs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.vid_ = vid_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.status_ = status_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof run_status) {
          return mergeFrom((run_status)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(run_status other) {
        if (other == run_status.getDefaultInstance()) return this;
        if (other.hasTimestampUs()) {
          setTimestampUs(other.getTimestampUs());
        }
        if (other.hasVid()) {
          setVid(other.getVid());
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasTimestampUs()) {
          
          return false;
        }
        if (!hasVid()) {
          
          return false;
        }
        if (!hasStatus()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        run_status parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (run_status) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long timestampUs_ ;
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public boolean hasTimestampUs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public long getTimestampUs() {
        return timestampUs_;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder setTimestampUs(long value) {
        bitField0_ |= 0x00000001;
        timestampUs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 timestamp_us = 1;</code>
       */
      public Builder clearTimestampUs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampUs_ = 0L;
        onChanged();
        return this;
      }

      private long vid_ ;
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public boolean hasVid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public long getVid() {
        return vid_;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder setVid(long value) {
        bitField0_ |= 0x00000002;
        vid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 vid = 2;</code>
       */
      public Builder clearVid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vid_ = 0L;
        onChanged();
        return this;
      }

      private CAR_RUN_STATUS status_ = CAR_RUN_STATUS.READY;
      /**
       * <code>required .CAR_RUN_STATUS status = 3;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .CAR_RUN_STATUS status = 3;</code>
       */
      public CAR_RUN_STATUS getStatus() {
        return status_;
      }
      /**
       * <code>required .CAR_RUN_STATUS status = 3;</code>
       */
      public Builder setStatus(CAR_RUN_STATUS value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required .CAR_RUN_STATUS status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = CAR_RUN_STATUS.READY;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:run_status)
    }

    static {
      defaultInstance = new run_status(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:run_status)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_carinfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_carinfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_imu_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_imu_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_speed_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_speed_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_rkm_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_rkm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_tkm_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_tkm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_bin_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_bin_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_soc_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_soc_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_mod_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mod_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_alm_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_alm_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_run_status_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_run_status_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\ninfo.proto\"V\n\007carinfo\022\024\n\014timestamp_us\030" +
      "\001 \002(\004\022\013\n\003vid\030\002 \002(\004\022\013\n\003usr\030\003 \002(\t\022\013\n\003psw\030\004" +
      " \002(\t\022\016\n\006car_id\030\005 \001(\t\"\237\001\n\003imu\022\024\n\014timestam" +
      "p_us\030\001 \002(\004\022\013\n\003vid\030\002 \002(\004\022\013\n\003lat\030\003 \002(\001\022\013\n\003" +
      "lon\030\004 \002(\001\022\014\n\004alti\030\005 \001(\002\022\n\n\002vn\030\006 \001(\002\022\n\n\002v" +
      "e\030\007 \001(\002\022\n\n\002vu\030\010 \001(\002\022\014\n\004roll\030\t \001(\002\022\r\n\005pit" +
      "ch\030\n \001(\002\022\014\n\004head\030\013 \001(\002\"7\n\005speed\022\024\n\014times" +
      "tamp_us\030\001 \002(\004\022\013\n\003vid\030\002 \002(\004\022\013\n\003spd\030\003 \002(\002\"" +
      "5\n\003rkm\022\024\n\014timestamp_us\030\001 \002(\004\022\013\n\003vid\030\002 \002(" +
      "\004\022\013\n\003rkm\030\003 \002(\r\"5\n\003tkm\022\024\n\014timestamp_us\030\001 ",
      "\002(\004\022\013\n\003vid\030\002 \002(\004\022\013\n\003tkm\030\003 \002(\r\"5\n\003bin\022\024\n\014" +
      "timestamp_us\030\001 \002(\004\022\013\n\003vid\030\002 \002(\004\022\013\n\003bin\030\003" +
      " \002(\005\"5\n\003soc\022\024\n\014timestamp_us\030\001 \002(\004\022\013\n\003vid" +
      "\030\002 \002(\004\022\013\n\003soc\030\003 \002(\002\"5\n\003mod\022\024\n\014timestamp_" +
      "us\030\001 \002(\004\022\013\n\003vid\030\002 \002(\004\022\013\n\003mod\030\003 \002(\005\"R\n\003al" +
      "m\022\024\n\014timestamp_us\030\001 \002(\004\022\013\n\003vid\030\002 \002(\004\022\014\n\004" +
      "alm3\030\003 \001(\004\022\014\n\004alm2\030\004 \001(\004\022\014\n\004alm1\030\005 \001(\004\"P" +
      "\n\nrun_status\022\024\n\014timestamp_us\030\001 \002(\004\022\013\n\003vi" +
      "d\030\002 \002(\004\022\037\n\006status\030\003 \002(\0162\017.CAR_RUN_STATUS" +
      "*r\n\016CAR_RUN_STATUS\022\t\n\005READY\020\000\022\013\n\007RUNNING",
      "\020\001\022\013\n\007TURNING\020\002\022\r\n\tWAIT_TIME\020\003\022\r\n\tWAIT_L" +
      "OAD\020\004\022\017\n\013WAIT_UNLOAD\020\005\022\014\n\010CHARGING\020\006B\035\n\020" +
      "com.fdd.protobufB\tInfoProto"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_carinfo_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_carinfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_carinfo_descriptor,
        new String[] { "TimestampUs", "Vid", "Usr", "Psw", "CarId", });
    internal_static_imu_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_imu_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_imu_descriptor,
        new String[] { "TimestampUs", "Vid", "Lat", "Lon", "Alti", "Vn", "Ve", "Vu", "Roll", "Pitch", "Head", });
    internal_static_speed_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_speed_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_speed_descriptor,
        new String[] { "TimestampUs", "Vid", "Spd", });
    internal_static_rkm_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_rkm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_rkm_descriptor,
        new String[] { "TimestampUs", "Vid", "Rkm", });
    internal_static_tkm_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_tkm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_tkm_descriptor,
        new String[] { "TimestampUs", "Vid", "Tkm", });
    internal_static_bin_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_bin_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_bin_descriptor,
        new String[] { "TimestampUs", "Vid", "Bin", });
    internal_static_soc_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_soc_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_soc_descriptor,
        new String[] { "TimestampUs", "Vid", "Soc", });
    internal_static_mod_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_mod_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_mod_descriptor,
        new String[] { "TimestampUs", "Vid", "Mod", });
    internal_static_alm_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_alm_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_alm_descriptor,
        new String[] { "TimestampUs", "Vid", "Alm3", "Alm2", "Alm1", });
    internal_static_run_status_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_run_status_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_run_status_descriptor,
        new String[] { "TimestampUs", "Vid", "Status", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
