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

package com.fca.uconnect.global;

public final class GlobalUconnectExtVehDataAcquisition {
  private GlobalUconnectExtVehDataAcquisition() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
    registry.add(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.vehicleDataAcquisitionPublish);
    registry.add(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.vehicleDataAcquisitionPolicyPublish);
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface VehicleDataAcquisitionPolicyPublishOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#47; A version number is assigned every time there is a change in policy
     * </pre>
     *
     * <code>required int32 version = 1;</code>
     */
    boolean hasVersion();
    /**
     * <pre>
     *&#47; A version number is assigned every time there is a change in policy
     * </pre>
     *
     * <code>required int32 version = 1;</code>
     */
    int getVersion();

    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription> 
        getPolicySubscriptionList();
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription getPolicySubscription(int index);
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    int getPolicySubscriptionCount();
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder> 
        getPolicySubscriptionOrBuilderList();
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder getPolicySubscriptionOrBuilder(
        int index);

    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int64 timestamp = 3;</code>
     */
    boolean hasTimestamp();
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int64 timestamp = 3;</code>
     */
    long getTimestamp();

    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 messageId = 4;</code>
     */
    boolean hasMessageId();
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 messageId = 4;</code>
     */
    int getMessageId();

    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 signatureId = 5;</code>
     */
    boolean hasSignatureId();
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 signatureId = 5;</code>
     */
    int getSignatureId();

    /**
     * <pre>
     *&#47; Optional approach to support raw content in the Policy message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 6;</code>
     */
    boolean hasRawPayload();
    /**
     * <pre>
     *&#47; Optional approach to support raw content in the Policy message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 6;</code>
     */
    com.google.protobuf.ByteString getRawPayload();
  }
  /**
   * <pre>
   **
   * The conditions and requested values for data collection that is to be performed by this Telematics Unit.
   * If storage of VehicleDataAcquisitionPolicyPublish messages requires a signature, the signature will be sent in the same parent UconnectMessage.
   * Additionally If the connection is lost ,Diagnostic information like timestamp at loss of connection,Location and Cellular conditions
   * (RSSI,RSRP,RSRQ,SINR,EARFCN,Physical Cell ID,PLMN ID can be send with DatasetSignal.
   *&lt;div class=exmsg-main&gt;
   * &lt;h4&gt;VehicleDataAcquisitionPublish Example Message:&lt;/h4&gt;
   * &lt;div class=ex-msg&gt;
   *	&lt;code&gt;
   *      timestamp: 1489075048380
   *      messageId: 0
   *      messages
   *      {
   *          [com.fca.uconnect.global.vehicleDataAcquisitionPolicyPublish] {
   *            version: 1
   *            policySubscription {
   *              policySubscriptionId: "-&#92;0274&#92;302]&#92;325&#92;324 &#92;354K"
   *              expirationDate: 1496851048380
   *              dataSetSubscription {
   *                period: 1800000
   *                dataSetSignal {
   *                  signalName: "VIN"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "SWReleaseBranch"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "HUSerialNumber"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.VC_VEH_BRAND.VC_VEH_BRAND"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.VC_VEH_LINE.VC_VEH_LINE"
   *                  type: RAW
   *                }
   *                dataSetId: 1
   *              }
   *              dataSetSubscription {
   *                period: 1000
   *                dataSetSignal {
   *                  signalName: "KONA.Speedometer.Speedometer"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.Odometer.Odometer"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_X"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_Y"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "geocode.Latitude"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "geocode.Longitude"
   *                  type: RAW
   *                }
   *                dataSetId: 6
   *                filterCriteria {
   *                  signalName: "KONA.PowerMode.PowerMode"
   *                }
   *                filterCriteria {
   *                  int32Value: 4
   *                }
   *                filterCriteria {
   *                  operator: EQUAL
   *                }
   *              }
   *            }
   *          }
   *      }
   *  &lt;/code&gt;
   * &lt;/div&gt;
   * &lt;h4&gt;VehicleDataAcquisitionPublish Example Message (Send one message 120 seconds after engine off):&lt;/h4&gt;
   * &lt;div class=ex-msg&gt;
   *	&lt;code&gt;
   *      timestamp: 1489075048380
   *      messageId: 0
   *      messages
   *      {
   *          [com.fca.uconnect.global.vehicleDataAcquisitionPolicyPublish] {
   *            version: 1
   *            policySubscription {
   *              policySubscriptionId: "-&#92;0274&#92;302]&#92;325&#92;324 &#92;354K"
   *              expirationDate: 1496851048380
   *              dataSetSubscription {
   *                period: 1000
   *                dataSetSignal {
   *                  signalName: "KONA.Odometer.Odometer"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_X"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_Y"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "geocode.Latitude"
   *                  type: RAW
   *                }
   *                dataSetSignal {
   *                  signalName: "geocode.Longitude"
   *                  type: RAW
   *                }
   *                dataSetId: 16
   *                filterCriteria { 
   *                    signalName:"KONA.PowerMode.PowerMode"
   *                }
   *                filterCriteria { 
   *                    stringValue:"currentPowerMode"' 
   *                }
   *                filterCriteria { 
   *                    operator:24 
   *                }
   *                filterCriteria { 
   *                    signalName:"currentTimeMillis"
   *                }
   *                filterCriteria { 
   *                    stringValue:"currentTime"
   *                }
   *                filterCriteria { 
   *                    operator:24
   *                }
   *                filterCriteria { 
   *                    int32Value:120000
   *                }
   *                filterCriteria { 
   *                    stringValue:"waitTime"
   *                }
   *                filterCriteria { 
   *                    operator:24 
   *                }
   *                filterCriteria { 
   *                    stringValue:"currentPowerMode"
   *                }
   *                filterCriteria { 
   *                    operator:25 
   *                }
   *                filterCriteria { 
   *                    int32Value:0
   *                }
   *                filterCriteria { 
   *                    operator:3 
   *                }
   *                filterCriteria { 
   *                    branch_if:26
   *                }
   *                filterCriteria { 
   *                    stringValue:"lastPowerMode"
   *                }
   *                filterCriteria { 
   *                    operator:25 
   *                }
   *                filterCriteria { 
   *                    int32Value:0
   *                }
   *                filterCriteria { 
   *                    operator:6 
   *                }
   *                filterCriteria { 
   *                    stringValue:"currentTime"
   *                }
   *                filterCriteria { 
   *                    operator:25 
   *                }
   *                filterCriteria { 
   *                    stringValue:"timerBegin"
   *                }
   *                filterCriteria { 
   *                    operator:24 
   *                }
   *                filterCriteria { 
   *                    int32Value:0
   *                }
   *                filterCriteria { 
   *                    stringValue:"currentTime"
   *                }
   *                filterCriteria { 
   *                    operator:25
   *                }
   *                filterCriteria { 
   *                    stringValue:"timerBegin"
   *                }
   *                filterCriteria { 
   *                    operator:25
   *                }
   *                filterCriteria { 
   *                    operator:10 
   *                }
   *                filterCriteria { 
   *                    stringValue:"waitTime"
   *                }
   *                filterCriteria { 
   *                    operator:25 
   *                }
   *                filterCriteria { 
   *                    operator:5 
   *                }
   *                filterCriteria { 
   *                    branch_if:6
   *                }
   *                filterCriteria { 
   *                    int64Value:1
   *                }
   *                filterCriteria { 
   *                    operator:20 
   *                }
   *                filterCriteria { 
   *                    stringValue:"timerBegin"
   *                }
   *                filterCriteria { 
   *                    operator:24 
   *                }
   *                filterCriteria { 
   *                    int32Value:1
   *                }
   *                filterCriteria { 
   *                    branch:2
   *                }
   *                filterCriteria { 
   *                    int32Value:0
   *                }
   *                filterCriteria { 
   *                    branch:2
   *                }
   *                filterCriteria { 
   *                    int32Value:0
   *                }
   *                filterCriteria { 
   *                    stringValue:"currentPowerMode"
   *                }
   *                filterCriteria { 
   *                    operator:25
   *                }
   *                filterCriteria { 
   *                    stringValue:"lastPowerMode"
   *                }
   *                filterCriteria { 
   *                    operator:24
   *                }
   *              }
   *            }
   *          }
   *      }
   *  &lt;/code&gt;
   * &lt;/div&gt; 
   *&lt;/div&gt;
   * </pre>
   *
   * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish}
   */
  public  static final class VehicleDataAcquisitionPolicyPublish extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish)
      VehicleDataAcquisitionPolicyPublishOrBuilder {
    // Use VehicleDataAcquisitionPolicyPublish.newBuilder() to construct.
    private VehicleDataAcquisitionPolicyPublish(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private VehicleDataAcquisitionPolicyPublish() {
      version_ = 0;
      policySubscription_ = java.util.Collections.emptyList();
      timestamp_ = 0L;
      messageId_ = 0;
      signatureId_ = 0;
      rawPayload_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private VehicleDataAcquisitionPolicyPublish(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      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;
              version_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                policySubscription_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription>();
                mutable_bitField0_ |= 0x00000002;
              }
              policySubscription_.add(
                  input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              timestamp_ = input.readInt64();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              messageId_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              signatureId_ = input.readInt32();
              break;
            }
            case 50: {
              bitField0_ |= 0x00000010;
              rawPayload_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          policySubscription_ = java.util.Collections.unmodifiableList(policySubscription_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.Builder.class);
    }

    /**
     * <pre>
     **
     * Form in which collected data is to be collected. All signals must support at least RAW type.
     * </pre>
     *
     * Protobuf enum {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum}
     */
    public enum SignalTypeEnum
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>RAW = 0;</code>
       */
      RAW(0),
      /**
       * <code>ENGINEERING_UNITS = 1;</code>
       */
      ENGINEERING_UNITS(1),
      /**
       * <code>ENCRYPTED = 2;</code>
       */
      ENCRYPTED(2),
      /**
       * <pre>
       *&#47; the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
       * </pre>
       *
       * <code>DIFFERENCE_RAW = 3;</code>
       */
      DIFFERENCE_RAW(3),
      /**
       * <pre>
       *&#47; the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
       * </pre>
       *
       * <code>DIFFERENCE_ENGINEERING_UNITS = 4;</code>
       */
      DIFFERENCE_ENGINEERING_UNITS(4),
      /**
       * <pre>
       *&#47; the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
       * </pre>
       *
       * <code>DIFFERENCE_ENCRYPTED = 5;</code>
       */
      DIFFERENCE_ENCRYPTED(5),
      ;

      /**
       * <code>RAW = 0;</code>
       */
      public static final int RAW_VALUE = 0;
      /**
       * <code>ENGINEERING_UNITS = 1;</code>
       */
      public static final int ENGINEERING_UNITS_VALUE = 1;
      /**
       * <code>ENCRYPTED = 2;</code>
       */
      public static final int ENCRYPTED_VALUE = 2;
      /**
       * <pre>
       *&#47; the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
       * </pre>
       *
       * <code>DIFFERENCE_RAW = 3;</code>
       */
      public static final int DIFFERENCE_RAW_VALUE = 3;
      /**
       * <pre>
       *&#47; the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
       * </pre>
       *
       * <code>DIFFERENCE_ENGINEERING_UNITS = 4;</code>
       */
      public static final int DIFFERENCE_ENGINEERING_UNITS_VALUE = 4;
      /**
       * <pre>
       *&#47; the first row for a given dataset in a message will have an absolute value, subsuquent rows will contain a differential value
       * </pre>
       *
       * <code>DIFFERENCE_ENCRYPTED = 5;</code>
       */
      public static final int DIFFERENCE_ENCRYPTED_VALUE = 5;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static SignalTypeEnum valueOf(int value) {
        return forNumber(value);
      }

      public static SignalTypeEnum forNumber(int value) {
        switch (value) {
          case 0: return RAW;
          case 1: return ENGINEERING_UNITS;
          case 2: return ENCRYPTED;
          case 3: return DIFFERENCE_RAW;
          case 4: return DIFFERENCE_ENGINEERING_UNITS;
          case 5: return DIFFERENCE_ENCRYPTED;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private SignalTypeEnum(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum)
    }

    /**
     * <pre>
     **
     * How the row timestamps are to differentially encoded.
     * </pre>
     *
     * Protobuf enum {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum}
     */
    public enum DifferenceTimeStampTypeEnum
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       *&#47; each row will have an absolute timestamp 
       * </pre>
       *
       * <code>NONE = 0;</code>
       */
      NONE(0),
      /**
       * <pre>
       *&#47; the first row will have an absolute timestamp, subsequent rows will have a timestamp that represents the number of milliseconds since the prior row
       * </pre>
       *
       * <code>EXPLICIT_DIFFERENCES = 1;</code>
       */
      EXPLICIT_DIFFERENCES(1),
      /**
       * <pre>
       *&#47; the first row will have an absolute timestamp, subsequent rows shall be considered to have been collected at the exactly the periodic collection rate since the prior row
       * </pre>
       *
       * <code>FIXED_PERIOD_DIFFERENCES = 2;</code>
       */
      FIXED_PERIOD_DIFFERENCES(2),
      ;

      /**
       * <pre>
       *&#47; each row will have an absolute timestamp 
       * </pre>
       *
       * <code>NONE = 0;</code>
       */
      public static final int NONE_VALUE = 0;
      /**
       * <pre>
       *&#47; the first row will have an absolute timestamp, subsequent rows will have a timestamp that represents the number of milliseconds since the prior row
       * </pre>
       *
       * <code>EXPLICIT_DIFFERENCES = 1;</code>
       */
      public static final int EXPLICIT_DIFFERENCES_VALUE = 1;
      /**
       * <pre>
       *&#47; the first row will have an absolute timestamp, subsequent rows shall be considered to have been collected at the exactly the periodic collection rate since the prior row
       * </pre>
       *
       * <code>FIXED_PERIOD_DIFFERENCES = 2;</code>
       */
      public static final int FIXED_PERIOD_DIFFERENCES_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DifferenceTimeStampTypeEnum valueOf(int value) {
        return forNumber(value);
      }

      public static DifferenceTimeStampTypeEnum forNumber(int value) {
        switch (value) {
          case 0: return NONE;
          case 1: return EXPLICIT_DIFFERENCES;
          case 2: return FIXED_PERIOD_DIFFERENCES;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.getDescriptor().getEnumTypes().get(1);
      }

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

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

      private final int value;

      private DifferenceTimeStampTypeEnum(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum)
    }

    /**
     * <pre>
     **
     * Stack machine operator for FilterCriteria evaluation. Operators pop the given number of values from the stack,
     * evaluate per their specification, and push one value back on the stack. If an operand is to be popped and the depth is zero,
     * or if the types of the popped values are incorrect for evaluation according to the rules of Java types, evaluation of criteria is 
     * immediately stopped and no data will be captured in the current iteration.
     * </pre>
     *
     * Protobuf enum {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator}
     */
    public enum FilterOperator
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       *&#47; "!"
       * </pre>
       *
       * <code>NOT = 0;</code>
       */
      NOT(0),
      /**
       * <pre>
       *&#47; "&lt;"
       * </pre>
       *
       * <code>LESS = 1;</code>
       */
      LESS(1),
      /**
       * <pre>
       *&#47; "&lt;="
       * </pre>
       *
       * <code>LESS_OR_EQUAL = 2;</code>
       */
      LESS_OR_EQUAL(2),
      /**
       * <pre>
       *&#47; "=="
       * </pre>
       *
       * <code>EQUAL = 3;</code>
       */
      EQUAL(3),
      /**
       * <pre>
       *&#47; "&gt;
       * </pre>
       *
       * <code>GREATER_OR_EQUAL = 4;</code>
       */
      GREATER_OR_EQUAL(4),
      /**
       * <pre>
       *&#47; "&gt;
       * </pre>
       *
       * <code>GREATER = 5;</code>
       */
      GREATER(5),
      /**
       * <pre>
       *&#47; "!="
       * </pre>
       *
       * <code>NOT_EQUAL = 6;</code>
       */
      NOT_EQUAL(6),
      /**
       * <pre>
       *&#47; "&amp;&amp;"
       * </pre>
       *
       * <code>AND = 7;</code>
       */
      AND(7),
      /**
       * <pre>
       *&#47; "||"
       * </pre>
       *
       * <code>OR = 8;</code>
       */
      OR(8),
      /**
       * <pre>
       *&#47; "+"
       * </pre>
       *
       * <code>ADD = 9;</code>
       */
      ADD(9),
      /**
       * <pre>
       *&#47; "-"
       * </pre>
       *
       * <code>SUBTRACT = 10;</code>
       */
      SUBTRACT(10),
      /**
       * <pre>
       *&#47; "*"
       * </pre>
       *
       * <code>MUTLIPLY = 11;</code>
       */
      MUTLIPLY(11),
      /**
       * <pre>
       *&#47; "/"
       * </pre>
       *
       * <code>DIVIDE = 12;</code>
       */
      DIVIDE(12),
      /**
       * <pre>
       *&#47; "%"
       * </pre>
       *
       * <code>MOD = 13;</code>
       */
      MOD(13),
      /**
       * <pre>
       *&#47; "&lt;&lt;"
       * </pre>
       *
       * <code>LSHIFT = 14;</code>
       */
      LSHIFT(14),
      /**
       * <pre>
       *&#47; "&gt;
       * </pre>
       *
       * <code>RSHIFT = 15;</code>
       */
      RSHIFT(15),
      /**
       * <pre>
       *&#47; "&amp;"
       * </pre>
       *
       * <code>BITAND = 16;</code>
       */
      BITAND(16),
      /**
       * <pre>
       *&#47; "|"
       * </pre>
       *
       * <code>BITOR = 17;</code>
       */
      BITOR(17),
      /**
       * <pre>
       *&#47; "~"
       * </pre>
       *
       * <code>BITNOT = 18;</code>
       */
      BITNOT(18),
      /**
       * <pre>
       *&#47; "^"
       * </pre>
       *
       * <code>BITXOR = 19;</code>
       */
      BITXOR(19),
      /**
       * <pre>
       *&#47; "-"
       * </pre>
       *
       * <code>NEGATE = 20;</code>
       */
      NEGATE(20),
      /**
       * <pre>
       *&#47; "+"
       * </pre>
       *
       * <code>NOT_NEGATE = 21;</code>
       */
      NOT_NEGATE(21),
      /**
       * <pre>
       *&#47; "=" top of stack to variable
       * </pre>
       *
       * <code>VARIABLE_ASSIGN = 24;</code>
       */
      VARIABLE_ASSIGN(24),
      /**
       * <pre>
       *&#47; variable to top of stack
       * </pre>
       *
       * <code>VARIABLE_REF = 25;</code>
       */
      VARIABLE_REF(25),
      /**
       * <pre>
       *&#47; call function, top of stack is number of arguments
       * </pre>
       *
       * <code>FUNCTION_CALL = 26;</code>
       */
      FUNCTION_CALL(26),
      ;

      /**
       * <pre>
       *&#47; "!"
       * </pre>
       *
       * <code>NOT = 0;</code>
       */
      public static final int NOT_VALUE = 0;
      /**
       * <pre>
       *&#47; "&lt;"
       * </pre>
       *
       * <code>LESS = 1;</code>
       */
      public static final int LESS_VALUE = 1;
      /**
       * <pre>
       *&#47; "&lt;="
       * </pre>
       *
       * <code>LESS_OR_EQUAL = 2;</code>
       */
      public static final int LESS_OR_EQUAL_VALUE = 2;
      /**
       * <pre>
       *&#47; "=="
       * </pre>
       *
       * <code>EQUAL = 3;</code>
       */
      public static final int EQUAL_VALUE = 3;
      /**
       * <pre>
       *&#47; "&gt;
       * </pre>
       *
       * <code>GREATER_OR_EQUAL = 4;</code>
       */
      public static final int GREATER_OR_EQUAL_VALUE = 4;
      /**
       * <pre>
       *&#47; "&gt;
       * </pre>
       *
       * <code>GREATER = 5;</code>
       */
      public static final int GREATER_VALUE = 5;
      /**
       * <pre>
       *&#47; "!="
       * </pre>
       *
       * <code>NOT_EQUAL = 6;</code>
       */
      public static final int NOT_EQUAL_VALUE = 6;
      /**
       * <pre>
       *&#47; "&amp;&amp;"
       * </pre>
       *
       * <code>AND = 7;</code>
       */
      public static final int AND_VALUE = 7;
      /**
       * <pre>
       *&#47; "||"
       * </pre>
       *
       * <code>OR = 8;</code>
       */
      public static final int OR_VALUE = 8;
      /**
       * <pre>
       *&#47; "+"
       * </pre>
       *
       * <code>ADD = 9;</code>
       */
      public static final int ADD_VALUE = 9;
      /**
       * <pre>
       *&#47; "-"
       * </pre>
       *
       * <code>SUBTRACT = 10;</code>
       */
      public static final int SUBTRACT_VALUE = 10;
      /**
       * <pre>
       *&#47; "*"
       * </pre>
       *
       * <code>MUTLIPLY = 11;</code>
       */
      public static final int MUTLIPLY_VALUE = 11;
      /**
       * <pre>
       *&#47; "/"
       * </pre>
       *
       * <code>DIVIDE = 12;</code>
       */
      public static final int DIVIDE_VALUE = 12;
      /**
       * <pre>
       *&#47; "%"
       * </pre>
       *
       * <code>MOD = 13;</code>
       */
      public static final int MOD_VALUE = 13;
      /**
       * <pre>
       *&#47; "&lt;&lt;"
       * </pre>
       *
       * <code>LSHIFT = 14;</code>
       */
      public static final int LSHIFT_VALUE = 14;
      /**
       * <pre>
       *&#47; "&gt;
       * </pre>
       *
       * <code>RSHIFT = 15;</code>
       */
      public static final int RSHIFT_VALUE = 15;
      /**
       * <pre>
       *&#47; "&amp;"
       * </pre>
       *
       * <code>BITAND = 16;</code>
       */
      public static final int BITAND_VALUE = 16;
      /**
       * <pre>
       *&#47; "|"
       * </pre>
       *
       * <code>BITOR = 17;</code>
       */
      public static final int BITOR_VALUE = 17;
      /**
       * <pre>
       *&#47; "~"
       * </pre>
       *
       * <code>BITNOT = 18;</code>
       */
      public static final int BITNOT_VALUE = 18;
      /**
       * <pre>
       *&#47; "^"
       * </pre>
       *
       * <code>BITXOR = 19;</code>
       */
      public static final int BITXOR_VALUE = 19;
      /**
       * <pre>
       *&#47; "-"
       * </pre>
       *
       * <code>NEGATE = 20;</code>
       */
      public static final int NEGATE_VALUE = 20;
      /**
       * <pre>
       *&#47; "+"
       * </pre>
       *
       * <code>NOT_NEGATE = 21;</code>
       */
      public static final int NOT_NEGATE_VALUE = 21;
      /**
       * <pre>
       *&#47; "=" top of stack to variable
       * </pre>
       *
       * <code>VARIABLE_ASSIGN = 24;</code>
       */
      public static final int VARIABLE_ASSIGN_VALUE = 24;
      /**
       * <pre>
       *&#47; variable to top of stack
       * </pre>
       *
       * <code>VARIABLE_REF = 25;</code>
       */
      public static final int VARIABLE_REF_VALUE = 25;
      /**
       * <pre>
       *&#47; call function, top of stack is number of arguments
       * </pre>
       *
       * <code>FUNCTION_CALL = 26;</code>
       */
      public static final int FUNCTION_CALL_VALUE = 26;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static FilterOperator valueOf(int value) {
        return forNumber(value);
      }

      public static FilterOperator forNumber(int value) {
        switch (value) {
          case 0: return NOT;
          case 1: return LESS;
          case 2: return LESS_OR_EQUAL;
          case 3: return EQUAL;
          case 4: return GREATER_OR_EQUAL;
          case 5: return GREATER;
          case 6: return NOT_EQUAL;
          case 7: return AND;
          case 8: return OR;
          case 9: return ADD;
          case 10: return SUBTRACT;
          case 11: return MUTLIPLY;
          case 12: return DIVIDE;
          case 13: return MOD;
          case 14: return LSHIFT;
          case 15: return RSHIFT;
          case 16: return BITAND;
          case 17: return BITOR;
          case 18: return BITNOT;
          case 19: return BITXOR;
          case 20: return NEGATE;
          case 21: return NOT_NEGATE;
          case 24: return VARIABLE_ASSIGN;
          case 25: return VARIABLE_REF;
          case 26: return FUNCTION_CALL;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.getDescriptor().getEnumTypes().get(2);
      }

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

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

      private final int value;

      private FilterOperator(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator)
    }

    public interface QueuePolicyOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
       * </pre>
       *
       * <code>optional int32 flushRate = 1;</code>
       */
      boolean hasFlushRate();
      /**
       * <pre>
       *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
       * </pre>
       *
       * <code>optional int32 flushRate = 1;</code>
       */
      int getFlushRate();

      /**
       * <pre>
       *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
       * </pre>
       *
       * <code>optional int32 uploadRate = 2;</code>
       */
      boolean hasUploadRate();
      /**
       * <pre>
       *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
       * </pre>
       *
       * <code>optional int32 uploadRate = 2;</code>
       */
      int getUploadRate();

      /**
       * <pre>
       *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
       * </pre>
       *
       * <code>optional int32 maxSize = 3;</code>
       */
      boolean hasMaxSize();
      /**
       * <pre>
       *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
       * </pre>
       *
       * <code>optional int32 maxSize = 3;</code>
       */
      int getMaxSize();
    }
    /**
     * <pre>
     **
     *  Policy for how and when captured data is stored and sent to the SDP. The TU shall make a best effort to meet the specified targets,
     * given varying constraints on CPU, memory, storage and network capacity and availability.  
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy}
     */
    public  static final class QueuePolicy extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy)
        QueuePolicyOrBuilder {
      // Use QueuePolicy.newBuilder() to construct.
      private QueuePolicy(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private QueuePolicy() {
        flushRate_ = 0;
        uploadRate_ = 0;
        maxSize_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private QueuePolicy(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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;
                flushRate_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                uploadRate_ = input.readInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                maxSize_ = 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).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder.class);
      }

      private int bitField0_;
      public static final int FLUSHRATE_FIELD_NUMBER = 1;
      private int flushRate_;
      /**
       * <pre>
       *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
       * </pre>
       *
       * <code>optional int32 flushRate = 1;</code>
       */
      public boolean hasFlushRate() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
       * </pre>
       *
       * <code>optional int32 flushRate = 1;</code>
       */
      public int getFlushRate() {
        return flushRate_;
      }

      public static final int UPLOADRATE_FIELD_NUMBER = 2;
      private int uploadRate_;
      /**
       * <pre>
       *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
       * </pre>
       *
       * <code>optional int32 uploadRate = 2;</code>
       */
      public boolean hasUploadRate() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
       * </pre>
       *
       * <code>optional int32 uploadRate = 2;</code>
       */
      public int getUploadRate() {
        return uploadRate_;
      }

      public static final int MAXSIZE_FIELD_NUMBER = 3;
      private int maxSize_;
      /**
       * <pre>
       *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
       * </pre>
       *
       * <code>optional int32 maxSize = 3;</code>
       */
      public boolean hasMaxSize() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
       * </pre>
       *
       * <code>optional int32 maxSize = 3;</code>
       */
      public int getMaxSize() {
        return maxSize_;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, flushRate_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, uploadRate_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(3, maxSize_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, flushRate_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, uploadRate_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, maxSize_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy) obj;

        boolean result = true;
        result = result && (hasFlushRate() == other.hasFlushRate());
        if (hasFlushRate()) {
          result = result && (getFlushRate()
              == other.getFlushRate());
        }
        result = result && (hasUploadRate() == other.hasUploadRate());
        if (hasUploadRate()) {
          result = result && (getUploadRate()
              == other.getUploadRate());
        }
        result = result && (hasMaxSize() == other.hasMaxSize());
        if (hasMaxSize()) {
          result = result && (getMaxSize()
              == other.getMaxSize());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasFlushRate()) {
          hash = (37 * hash) + FLUSHRATE_FIELD_NUMBER;
          hash = (53 * hash) + getFlushRate();
        }
        if (hasUploadRate()) {
          hash = (37 * hash) + UPLOADRATE_FIELD_NUMBER;
          hash = (53 * hash) + getUploadRate();
        }
        if (hasMaxSize()) {
          hash = (37 * hash) + MAXSIZE_FIELD_NUMBER;
          hash = (53 * hash) + getMaxSize();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *  Policy for how and when captured data is stored and sent to the SDP. The TU shall make a best effort to meet the specified targets,
       * given varying constraints on CPU, memory, storage and network capacity and availability.  
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          flushRate_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          uploadRate_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          maxSize_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.flushRate_ = flushRate_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.uploadRate_ = uploadRate_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.maxSize_ = maxSize_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance()) return this;
          if (other.hasFlushRate()) {
            setFlushRate(other.getFlushRate());
          }
          if (other.hasUploadRate()) {
            setUploadRate(other.getUploadRate());
          }
          if (other.hasMaxSize()) {
            setMaxSize(other.getMaxSize());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

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

        private int flushRate_ ;
        /**
         * <pre>
         *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
         * </pre>
         *
         * <code>optional int32 flushRate = 1;</code>
         */
        public boolean hasFlushRate() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
         * </pre>
         *
         * <code>optional int32 flushRate = 1;</code>
         */
        public int getFlushRate() {
          return flushRate_;
        }
        /**
         * <pre>
         *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
         * </pre>
         *
         * <code>optional int32 flushRate = 1;</code>
         */
        public Builder setFlushRate(int value) {
          bitField0_ |= 0x00000001;
          flushRate_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; data shall be flushed to persistent storage at this rate, in milliseconds. 
         * </pre>
         *
         * <code>optional int32 flushRate = 1;</code>
         */
        public Builder clearFlushRate() {
          bitField0_ = (bitField0_ & ~0x00000001);
          flushRate_ = 0;
          onChanged();
          return this;
        }

        private int uploadRate_ ;
        /**
         * <pre>
         *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
         * </pre>
         *
         * <code>optional int32 uploadRate = 2;</code>
         */
        public boolean hasUploadRate() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
         * </pre>
         *
         * <code>optional int32 uploadRate = 2;</code>
         */
        public int getUploadRate() {
          return uploadRate_;
        }
        /**
         * <pre>
         *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
         * </pre>
         *
         * <code>optional int32 uploadRate = 2;</code>
         */
        public Builder setUploadRate(int value) {
          bitField0_ |= 0x00000002;
          uploadRate_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; queued data shall be uploaded to the SDP at this rate, in milliseconds.
         * </pre>
         *
         * <code>optional int32 uploadRate = 2;</code>
         */
        public Builder clearUploadRate() {
          bitField0_ = (bitField0_ & ~0x00000002);
          uploadRate_ = 0;
          onChanged();
          return this;
        }

        private int maxSize_ ;
        /**
         * <pre>
         *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
         * </pre>
         *
         * <code>optional int32 maxSize = 3;</code>
         */
        public boolean hasMaxSize() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
         * </pre>
         *
         * <code>optional int32 maxSize = 3;</code>
         */
        public int getMaxSize() {
          return maxSize_;
        }
        /**
         * <pre>
         *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
         * </pre>
         *
         * <code>optional int32 maxSize = 3;</code>
         */
        public Builder setMaxSize(int value) {
          bitField0_ |= 0x00000004;
          maxSize_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; the total persisted storage shall not exceed this number of bytes. Once the limit is reached, data shall be flushed in as close to a LIFO manner as possible to accommodate newly queued data.
         * </pre>
         *
         * <code>optional int32 maxSize = 3;</code>
         */
        public Builder clearMaxSize() {
          bitField0_ = (bitField0_ & ~0x00000004);
          maxSize_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<QueuePolicy>
          PARSER = new com.google.protobuf.AbstractParser<QueuePolicy>() {
        public QueuePolicy parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new QueuePolicy(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface DataSetSignalOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; The name of the signal to be collected
       * </pre>
       *
       * <code>required string signalName = 1;</code>
       */
      boolean hasSignalName();
      /**
       * <pre>
       *&#47; The name of the signal to be collected
       * </pre>
       *
       * <code>required string signalName = 1;</code>
       */
      java.lang.String getSignalName();
      /**
       * <pre>
       *&#47; The name of the signal to be collected
       * </pre>
       *
       * <code>required string signalName = 1;</code>
       */
      com.google.protobuf.ByteString
          getSignalNameBytes();

      /**
       * <pre>
       *&#47; the type of data to be collected for the signal
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
       */
      boolean hasType();
      /**
       * <pre>
       *&#47; the type of data to be collected for the signal
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum getType();
    }
    /**
     * <pre>
     **
     * &lt;p&gt;
     * A data set signal name identifies a particular data element to be collected by the TBM. Each referenced signal name will be polled at most once per interval, including use in filter criteria.
     * &lt;p&gt;
     * Some data set signal names are global, and are required to
     * be supported in all regions. The following signals are globally required:
     * &lt;ul&gt;
     * &lt;li&gt;VIN - the VIN of the vehicle the TU is installed in. String.&lt;/li&gt;
     * &lt;li&gt;SWReleaseBranch - the version of the TU firmware. String.&lt;/li&gt;
     * &lt;li&gt;HUSerialNumber - the serial number of the TU. String.&lt;/li&gt;
     * &lt;li&gt;currentTimeMillis - the TU system clock, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC. int64.&lt;/li&gt;
     * &lt;/ul&gt;
     * &lt;p&gt;If a signal name is not mandatory and global, it should be prefixed with a namespace identifier. The current set of namespace identifiers is
     * &lt;ul&gt;&lt;li&gt;KONA&lt;/li&gt;&lt;li&gt;geocode&lt;/li&gt;&lt;/ul&gt;
     *
     * &lt;p&gt;The KONA namespace describes signals supported by the VP4 KONA api. The required form is KONA.SignalName.ChannelName where SignalName and ChannelName are the KONA signal and channel names respectively.
     *
     * &lt;p&gt;The geocode namespace describes signals commonly available from commercial GPS hardware. The signals available in the geocode namespace are:
     * &lt;ul&gt;
     * &lt;li&gt;geocode.Latitude - degrees latitude. double.&lt;/li&gt;
     * &lt;li&gt;geocode.Longitude -  degrees longitude. double.&lt;/li&gt;
     * &lt;li&gt;geocode.Altitude - meters altitude. float.&lt;/li&gt;
     * &lt;li&gt;geocode.HorizontalAccuracy - horizontal position accuracy. float.&lt;/li&gt;
     * &lt;li&gt;geocode.VerticalAccuracy - vertical position accuracy. float.&lt;/li&gt;
     * &lt;li&gt;geocode.Course - course. float.&lt;/li&gt;
     * &lt;li&gt;geocode.Azimuth - azimuth. float.&lt;/li&gt;
     * &lt;li&gt;geocode.Speed -  speed. float.&lt;/li&gt;
     * &lt;li&gt;geocode.LocationMethod - method used to determine location . int32.&lt;/li&gt;
     * &lt;li&gt;geocode.Timestamp - GPS timestamp in seconds. int64.&lt;/li&gt;
     * &lt;/ul&gt;
     *
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal}
     */
    public  static final class DataSetSignal extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal)
        DataSetSignalOrBuilder {
      // Use DataSetSignal.newBuilder() to construct.
      private DataSetSignal(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DataSetSignal() {
        signalName_ = "";
        type_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DataSetSignal(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                signalName_ = bs;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum value = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  type_ = rawValue;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder.class);
      }

      private int bitField0_;
      public static final int SIGNALNAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object signalName_;
      /**
       * <pre>
       *&#47; The name of the signal to be collected
       * </pre>
       *
       * <code>required string signalName = 1;</code>
       */
      public boolean hasSignalName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; The name of the signal to be collected
       * </pre>
       *
       * <code>required string signalName = 1;</code>
       */
      public java.lang.String getSignalName() {
        java.lang.Object ref = signalName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            signalName_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *&#47; The name of the signal to be collected
       * </pre>
       *
       * <code>required string signalName = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSignalNameBytes() {
        java.lang.Object ref = signalName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          signalName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TYPE_FIELD_NUMBER = 2;
      private int type_;
      /**
       * <pre>
       *&#47; the type of data to be collected for the signal
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *&#47; the type of data to be collected for the signal
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum getType() {
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum result = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum.valueOf(type_);
        return result == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum.RAW : result;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasSignalName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, signalName_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeEnum(2, type_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, signalName_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, type_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal) obj;

        boolean result = true;
        result = result && (hasSignalName() == other.hasSignalName());
        if (hasSignalName()) {
          result = result && getSignalName()
              .equals(other.getSignalName());
        }
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result && type_ == other.type_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasSignalName()) {
          hash = (37 * hash) + SIGNALNAME_FIELD_NUMBER;
          hash = (53 * hash) + getSignalName().hashCode();
        }
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + type_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * &lt;p&gt;
       * A data set signal name identifies a particular data element to be collected by the TBM. Each referenced signal name will be polled at most once per interval, including use in filter criteria.
       * &lt;p&gt;
       * Some data set signal names are global, and are required to
       * be supported in all regions. The following signals are globally required:
       * &lt;ul&gt;
       * &lt;li&gt;VIN - the VIN of the vehicle the TU is installed in. String.&lt;/li&gt;
       * &lt;li&gt;SWReleaseBranch - the version of the TU firmware. String.&lt;/li&gt;
       * &lt;li&gt;HUSerialNumber - the serial number of the TU. String.&lt;/li&gt;
       * &lt;li&gt;currentTimeMillis - the TU system clock, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC. int64.&lt;/li&gt;
       * &lt;/ul&gt;
       * &lt;p&gt;If a signal name is not mandatory and global, it should be prefixed with a namespace identifier. The current set of namespace identifiers is
       * &lt;ul&gt;&lt;li&gt;KONA&lt;/li&gt;&lt;li&gt;geocode&lt;/li&gt;&lt;/ul&gt;
       *
       * &lt;p&gt;The KONA namespace describes signals supported by the VP4 KONA api. The required form is KONA.SignalName.ChannelName where SignalName and ChannelName are the KONA signal and channel names respectively.
       *
       * &lt;p&gt;The geocode namespace describes signals commonly available from commercial GPS hardware. The signals available in the geocode namespace are:
       * &lt;ul&gt;
       * &lt;li&gt;geocode.Latitude - degrees latitude. double.&lt;/li&gt;
       * &lt;li&gt;geocode.Longitude -  degrees longitude. double.&lt;/li&gt;
       * &lt;li&gt;geocode.Altitude - meters altitude. float.&lt;/li&gt;
       * &lt;li&gt;geocode.HorizontalAccuracy - horizontal position accuracy. float.&lt;/li&gt;
       * &lt;li&gt;geocode.VerticalAccuracy - vertical position accuracy. float.&lt;/li&gt;
       * &lt;li&gt;geocode.Course - course. float.&lt;/li&gt;
       * &lt;li&gt;geocode.Azimuth - azimuth. float.&lt;/li&gt;
       * &lt;li&gt;geocode.Speed -  speed. float.&lt;/li&gt;
       * &lt;li&gt;geocode.LocationMethod - method used to determine location . int32.&lt;/li&gt;
       * &lt;li&gt;geocode.Timestamp - GPS timestamp in seconds. int64.&lt;/li&gt;
       * &lt;/ul&gt;
       *
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          signalName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.signalName_ = signalName_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.type_ = type_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.getDefaultInstance()) return this;
          if (other.hasSignalName()) {
            bitField0_ |= 0x00000001;
            signalName_ = other.signalName_;
            onChanged();
          }
          if (other.hasType()) {
            setType(other.getType());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          if (!hasSignalName()) {
            return false;
          }
          if (!hasType()) {
            return false;
          }
          return true;
        }

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

        private java.lang.Object signalName_ = "";
        /**
         * <pre>
         *&#47; The name of the signal to be collected
         * </pre>
         *
         * <code>required string signalName = 1;</code>
         */
        public boolean hasSignalName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47; The name of the signal to be collected
         * </pre>
         *
         * <code>required string signalName = 1;</code>
         */
        public java.lang.String getSignalName() {
          java.lang.Object ref = signalName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              signalName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         *&#47; The name of the signal to be collected
         * </pre>
         *
         * <code>required string signalName = 1;</code>
         */
        public com.google.protobuf.ByteString
            getSignalNameBytes() {
          java.lang.Object ref = signalName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            signalName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#47; The name of the signal to be collected
         * </pre>
         *
         * <code>required string signalName = 1;</code>
         */
        public Builder setSignalName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          signalName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; The name of the signal to be collected
         * </pre>
         *
         * <code>required string signalName = 1;</code>
         */
        public Builder clearSignalName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          signalName_ = getDefaultInstance().getSignalName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; The name of the signal to be collected
         * </pre>
         *
         * <code>required string signalName = 1;</code>
         */
        public Builder setSignalNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          signalName_ = value;
          onChanged();
          return this;
        }

        private int type_ = 0;
        /**
         * <pre>
         *&#47; the type of data to be collected for the signal
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *&#47; the type of data to be collected for the signal
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum getType() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum result = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum.valueOf(type_);
          return result == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum.RAW : result;
        }
        /**
         * <pre>
         *&#47; the type of data to be collected for the signal
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
         */
        public Builder setType(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; the type of data to be collected for the signal
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.SignalTypeEnum type = 2;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000002);
          type_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<DataSetSignal>
          PARSER = new com.google.protobuf.AbstractParser<DataSetSignal>() {
        public DataSetSignal parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DataSetSignal(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface FilterCriteriaOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; push current value of this signal
       * </pre>
       *
       * <code>optional string signalName = 1;</code>
       */
      boolean hasSignalName();
      /**
       * <pre>
       *&#47; push current value of this signal
       * </pre>
       *
       * <code>optional string signalName = 1;</code>
       */
      java.lang.String getSignalName();
      /**
       * <pre>
       *&#47; push current value of this signal
       * </pre>
       *
       * <code>optional string signalName = 1;</code>
       */
      com.google.protobuf.ByteString
          getSignalNameBytes();

      /**
       * <pre>
       *&#47; push constant double on stack
       * </pre>
       *
       * <code>optional double doubleValue = 2;</code>
       */
      boolean hasDoubleValue();
      /**
       * <pre>
       *&#47; push constant double on stack
       * </pre>
       *
       * <code>optional double doubleValue = 2;</code>
       */
      double getDoubleValue();

      /**
       * <pre>
       *&#47; push constant float on stack
       * </pre>
       *
       * <code>optional float floatValue = 3;</code>
       */
      boolean hasFloatValue();
      /**
       * <pre>
       *&#47; push constant float on stack
       * </pre>
       *
       * <code>optional float floatValue = 3;</code>
       */
      float getFloatValue();

      /**
       * <pre>
       *&#47; push constant signed 32 bit integer on stack
       * </pre>
       *
       * <code>optional int32 int32Value = 4;</code>
       */
      boolean hasInt32Value();
      /**
       * <pre>
       *&#47; push constant signed 32 bit integer on stack
       * </pre>
       *
       * <code>optional int32 int32Value = 4;</code>
       */
      int getInt32Value();

      /**
       * <pre>
       *&#47; push constant signed 64 bit integer on stack
       * </pre>
       *
       * <code>optional int64 int64Value = 5;</code>
       */
      boolean hasInt64Value();
      /**
       * <pre>
       *&#47; push constant signed 64 bit integer on stack
       * </pre>
       *
       * <code>optional int64 int64Value = 5;</code>
       */
      long getInt64Value();

      /**
       * <pre>
       *&#47; push constant on stack
       * </pre>
       *
       * <code>optional string stringValue = 6;</code>
       */
      boolean hasStringValue();
      /**
       * <pre>
       *&#47; push constant on stack
       * </pre>
       *
       * <code>optional string stringValue = 6;</code>
       */
      java.lang.String getStringValue();
      /**
       * <pre>
       *&#47; push constant on stack
       * </pre>
       *
       * <code>optional string stringValue = 6;</code>
       */
      com.google.protobuf.ByteString
          getStringValueBytes();

      /**
       * <pre>
       *&#47; pop, eval, push result. See enum FilterOperator for details
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
       */
      boolean hasOperator();
      /**
       * <pre>
       *&#47; pop, eval, push result. See enum FilterOperator for details
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator getOperator();

      /**
       * <pre>
       *&#47; skip next branch criteria
       * </pre>
       *
       * <code>optional int32 branch = 8;</code>
       */
      boolean hasBranch();
      /**
       * <pre>
       *&#47; skip next branch criteria
       * </pre>
       *
       * <code>optional int32 branch = 8;</code>
       */
      int getBranch();

      /**
       * <pre>
       *&#47; pop stack, if true skip next branch_if criteria
       * </pre>
       *
       * <code>optional int32 branch_if = 9;</code>
       */
      boolean hasBranchIf();
      /**
       * <pre>
       *&#47; pop stack, if true skip next branch_if criteria
       * </pre>
       *
       * <code>optional int32 branch_if = 9;</code>
       */
      int getBranchIf();

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.CriteriaCase getCriteriaCase();
    }
    /**
     * <pre>
     **
     * If filter criteria are present, a data row will be generated if
     * and only if the criteria evaluate to true.
     *
     * The implementation is a simple stack machine; signal values and constants
     * are pushed, operators pop values and push booleans. The machine starts with
     * an empty stack and must end with exactly one boolean value on the stack.
     *
     * State may be carried from one iteration to the next by the use of named registers
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria}
     */
    public  static final class FilterCriteria extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria)
        FilterCriteriaOrBuilder {
      // Use FilterCriteria.newBuilder() to construct.
      private FilterCriteria(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private FilterCriteria() {
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private FilterCriteria(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                criteriaCase_ = 1;
                criteria_ = bs;
                break;
              }
              case 17: {
                criteriaCase_ = 2;
                criteria_ = input.readDouble();
                break;
              }
              case 29: {
                criteriaCase_ = 3;
                criteria_ = input.readFloat();
                break;
              }
              case 32: {
                criteriaCase_ = 4;
                criteria_ = input.readInt32();
                break;
              }
              case 40: {
                criteriaCase_ = 5;
                criteria_ = input.readInt64();
                break;
              }
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                criteriaCase_ = 6;
                criteria_ = bs;
                break;
              }
              case 56: {
                int rawValue = input.readEnum();
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator value = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(7, rawValue);
                } else {
                  criteriaCase_ = 7;
                  criteria_ = rawValue;
                }
                break;
              }
              case 64: {
                criteriaCase_ = 8;
                criteria_ = input.readInt32();
                break;
              }
              case 72: {
                criteriaCase_ = 9;
                criteria_ = 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).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder.class);
      }

      private int bitField0_;
      private int criteriaCase_ = 0;
      private java.lang.Object criteria_;
      public enum CriteriaCase
          implements com.google.protobuf.Internal.EnumLite {
        SIGNALNAME(1),
        DOUBLEVALUE(2),
        FLOATVALUE(3),
        INT32VALUE(4),
        INT64VALUE(5),
        STRINGVALUE(6),
        OPERATOR(7),
        BRANCH(8),
        BRANCH_IF(9),
        CRITERIA_NOT_SET(0);
        private final int value;
        private CriteriaCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static CriteriaCase valueOf(int value) {
          return forNumber(value);
        }

        public static CriteriaCase forNumber(int value) {
          switch (value) {
            case 1: return SIGNALNAME;
            case 2: return DOUBLEVALUE;
            case 3: return FLOATVALUE;
            case 4: return INT32VALUE;
            case 5: return INT64VALUE;
            case 6: return STRINGVALUE;
            case 7: return OPERATOR;
            case 8: return BRANCH;
            case 9: return BRANCH_IF;
            case 0: return CRITERIA_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public CriteriaCase
      getCriteriaCase() {
        return CriteriaCase.forNumber(
            criteriaCase_);
      }

      public static final int SIGNALNAME_FIELD_NUMBER = 1;
      /**
       * <pre>
       *&#47; push current value of this signal
       * </pre>
       *
       * <code>optional string signalName = 1;</code>
       */
      public boolean hasSignalName() {
        return criteriaCase_ == 1;
      }
      /**
       * <pre>
       *&#47; push current value of this signal
       * </pre>
       *
       * <code>optional string signalName = 1;</code>
       */
      public java.lang.String getSignalName() {
        java.lang.Object ref = "";
        if (criteriaCase_ == 1) {
          ref = criteria_;
        }
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8() && (criteriaCase_ == 1)) {
            criteria_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *&#47; push current value of this signal
       * </pre>
       *
       * <code>optional string signalName = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSignalNameBytes() {
        java.lang.Object ref = "";
        if (criteriaCase_ == 1) {
          ref = criteria_;
        }
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (criteriaCase_ == 1) {
            criteria_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DOUBLEVALUE_FIELD_NUMBER = 2;
      /**
       * <pre>
       *&#47; push constant double on stack
       * </pre>
       *
       * <code>optional double doubleValue = 2;</code>
       */
      public boolean hasDoubleValue() {
        return criteriaCase_ == 2;
      }
      /**
       * <pre>
       *&#47; push constant double on stack
       * </pre>
       *
       * <code>optional double doubleValue = 2;</code>
       */
      public double getDoubleValue() {
        if (criteriaCase_ == 2) {
          return (java.lang.Double) criteria_;
        }
        return 0D;
      }

      public static final int FLOATVALUE_FIELD_NUMBER = 3;
      /**
       * <pre>
       *&#47; push constant float on stack
       * </pre>
       *
       * <code>optional float floatValue = 3;</code>
       */
      public boolean hasFloatValue() {
        return criteriaCase_ == 3;
      }
      /**
       * <pre>
       *&#47; push constant float on stack
       * </pre>
       *
       * <code>optional float floatValue = 3;</code>
       */
      public float getFloatValue() {
        if (criteriaCase_ == 3) {
          return (java.lang.Float) criteria_;
        }
        return 0F;
      }

      public static final int INT32VALUE_FIELD_NUMBER = 4;
      /**
       * <pre>
       *&#47; push constant signed 32 bit integer on stack
       * </pre>
       *
       * <code>optional int32 int32Value = 4;</code>
       */
      public boolean hasInt32Value() {
        return criteriaCase_ == 4;
      }
      /**
       * <pre>
       *&#47; push constant signed 32 bit integer on stack
       * </pre>
       *
       * <code>optional int32 int32Value = 4;</code>
       */
      public int getInt32Value() {
        if (criteriaCase_ == 4) {
          return (java.lang.Integer) criteria_;
        }
        return 0;
      }

      public static final int INT64VALUE_FIELD_NUMBER = 5;
      /**
       * <pre>
       *&#47; push constant signed 64 bit integer on stack
       * </pre>
       *
       * <code>optional int64 int64Value = 5;</code>
       */
      public boolean hasInt64Value() {
        return criteriaCase_ == 5;
      }
      /**
       * <pre>
       *&#47; push constant signed 64 bit integer on stack
       * </pre>
       *
       * <code>optional int64 int64Value = 5;</code>
       */
      public long getInt64Value() {
        if (criteriaCase_ == 5) {
          return (java.lang.Long) criteria_;
        }
        return 0L;
      }

      public static final int STRINGVALUE_FIELD_NUMBER = 6;
      /**
       * <pre>
       *&#47; push constant on stack
       * </pre>
       *
       * <code>optional string stringValue = 6;</code>
       */
      public boolean hasStringValue() {
        return criteriaCase_ == 6;
      }
      /**
       * <pre>
       *&#47; push constant on stack
       * </pre>
       *
       * <code>optional string stringValue = 6;</code>
       */
      public java.lang.String getStringValue() {
        java.lang.Object ref = "";
        if (criteriaCase_ == 6) {
          ref = criteria_;
        }
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8() && (criteriaCase_ == 6)) {
            criteria_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *&#47; push constant on stack
       * </pre>
       *
       * <code>optional string stringValue = 6;</code>
       */
      public com.google.protobuf.ByteString
          getStringValueBytes() {
        java.lang.Object ref = "";
        if (criteriaCase_ == 6) {
          ref = criteria_;
        }
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (criteriaCase_ == 6) {
            criteria_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int OPERATOR_FIELD_NUMBER = 7;
      /**
       * <pre>
       *&#47; pop, eval, push result. See enum FilterOperator for details
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
       */
      public boolean hasOperator() {
        return criteriaCase_ == 7;
      }
      /**
       * <pre>
       *&#47; pop, eval, push result. See enum FilterOperator for details
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator getOperator() {
        if (criteriaCase_ == 7) {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator result = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.valueOf(
              (java.lang.Integer) criteria_);
          return result == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.NOT : result;
        }
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.NOT;
      }

      public static final int BRANCH_FIELD_NUMBER = 8;
      /**
       * <pre>
       *&#47; skip next branch criteria
       * </pre>
       *
       * <code>optional int32 branch = 8;</code>
       */
      public boolean hasBranch() {
        return criteriaCase_ == 8;
      }
      /**
       * <pre>
       *&#47; skip next branch criteria
       * </pre>
       *
       * <code>optional int32 branch = 8;</code>
       */
      public int getBranch() {
        if (criteriaCase_ == 8) {
          return (java.lang.Integer) criteria_;
        }
        return 0;
      }

      public static final int BRANCH_IF_FIELD_NUMBER = 9;
      /**
       * <pre>
       *&#47; pop stack, if true skip next branch_if criteria
       * </pre>
       *
       * <code>optional int32 branch_if = 9;</code>
       */
      public boolean hasBranchIf() {
        return criteriaCase_ == 9;
      }
      /**
       * <pre>
       *&#47; pop stack, if true skip next branch_if criteria
       * </pre>
       *
       * <code>optional int32 branch_if = 9;</code>
       */
      public int getBranchIf() {
        if (criteriaCase_ == 9) {
          return (java.lang.Integer) criteria_;
        }
        return 0;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (criteriaCase_ == 1) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, criteria_);
        }
        if (criteriaCase_ == 2) {
          output.writeDouble(
              2, (double)((java.lang.Double) criteria_));
        }
        if (criteriaCase_ == 3) {
          output.writeFloat(
              3, (float)((java.lang.Float) criteria_));
        }
        if (criteriaCase_ == 4) {
          output.writeInt32(
              4, (int)((java.lang.Integer) criteria_));
        }
        if (criteriaCase_ == 5) {
          output.writeInt64(
              5, (long)((java.lang.Long) criteria_));
        }
        if (criteriaCase_ == 6) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 6, criteria_);
        }
        if (criteriaCase_ == 7) {
          output.writeEnum(7, ((java.lang.Integer) criteria_));
        }
        if (criteriaCase_ == 8) {
          output.writeInt32(
              8, (int)((java.lang.Integer) criteria_));
        }
        if (criteriaCase_ == 9) {
          output.writeInt32(
              9, (int)((java.lang.Integer) criteria_));
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (criteriaCase_ == 1) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, criteria_);
        }
        if (criteriaCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(
                2, (double)((java.lang.Double) criteria_));
        }
        if (criteriaCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(
                3, (float)((java.lang.Float) criteria_));
        }
        if (criteriaCase_ == 4) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(
                4, (int)((java.lang.Integer) criteria_));
        }
        if (criteriaCase_ == 5) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(
                5, (long)((java.lang.Long) criteria_));
        }
        if (criteriaCase_ == 6) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, criteria_);
        }
        if (criteriaCase_ == 7) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(7, ((java.lang.Integer) criteria_));
        }
        if (criteriaCase_ == 8) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(
                8, (int)((java.lang.Integer) criteria_));
        }
        if (criteriaCase_ == 9) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(
                9, (int)((java.lang.Integer) criteria_));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria) obj;

        boolean result = true;
        result = result && getCriteriaCase().equals(
            other.getCriteriaCase());
        if (!result) return false;
        switch (criteriaCase_) {
          case 1:
            result = result && getSignalName()
                .equals(other.getSignalName());
            break;
          case 2:
            result = result && (
                java.lang.Double.doubleToLongBits(getDoubleValue())
                == java.lang.Double.doubleToLongBits(
                    other.getDoubleValue()));
            break;
          case 3:
            result = result && (
                java.lang.Float.floatToIntBits(getFloatValue())
                == java.lang.Float.floatToIntBits(
                    other.getFloatValue()));
            break;
          case 4:
            result = result && (getInt32Value()
                == other.getInt32Value());
            break;
          case 5:
            result = result && (getInt64Value()
                == other.getInt64Value());
            break;
          case 6:
            result = result && getStringValue()
                .equals(other.getStringValue());
            break;
          case 7:
            result = result && getOperator()
                .equals(other.getOperator());
            break;
          case 8:
            result = result && (getBranch()
                == other.getBranch());
            break;
          case 9:
            result = result && (getBranchIf()
                == other.getBranchIf());
            break;
          case 0:
          default:
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        switch (criteriaCase_) {
          case 1:
            hash = (37 * hash) + SIGNALNAME_FIELD_NUMBER;
            hash = (53 * hash) + getSignalName().hashCode();
            break;
          case 2:
            hash = (37 * hash) + DOUBLEVALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                java.lang.Double.doubleToLongBits(getDoubleValue()));
            break;
          case 3:
            hash = (37 * hash) + FLOATVALUE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                getFloatValue());
            break;
          case 4:
            hash = (37 * hash) + INT32VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getInt32Value();
            break;
          case 5:
            hash = (37 * hash) + INT64VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                getInt64Value());
            break;
          case 6:
            hash = (37 * hash) + STRINGVALUE_FIELD_NUMBER;
            hash = (53 * hash) + getStringValue().hashCode();
            break;
          case 7:
            hash = (37 * hash) + OPERATOR_FIELD_NUMBER;
            hash = (53 * hash) + getOperator().getNumber();
            break;
          case 8:
            hash = (37 * hash) + BRANCH_FIELD_NUMBER;
            hash = (53 * hash) + getBranch();
            break;
          case 9:
            hash = (37 * hash) + BRANCH_IF_FIELD_NUMBER;
            hash = (53 * hash) + getBranchIf();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * If filter criteria are present, a data row will be generated if
       * and only if the criteria evaluate to true.
       *
       * The implementation is a simple stack machine; signal values and constants
       * are pushed, operators pop values and push booleans. The machine starts with
       * an empty stack and must end with exactly one boolean value on the stack.
       *
       * State may be carried from one iteration to the next by the use of named registers
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          criteriaCase_ = 0;
          criteria_ = null;
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (criteriaCase_ == 1) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 2) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 3) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 4) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 5) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 6) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 7) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 8) {
            result.criteria_ = criteria_;
          }
          if (criteriaCase_ == 9) {
            result.criteria_ = criteria_;
          }
          result.bitField0_ = to_bitField0_;
          result.criteriaCase_ = criteriaCase_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.getDefaultInstance()) return this;
          switch (other.getCriteriaCase()) {
            case SIGNALNAME: {
              criteriaCase_ = 1;
              criteria_ = other.criteria_;
              onChanged();
              break;
            }
            case DOUBLEVALUE: {
              setDoubleValue(other.getDoubleValue());
              break;
            }
            case FLOATVALUE: {
              setFloatValue(other.getFloatValue());
              break;
            }
            case INT32VALUE: {
              setInt32Value(other.getInt32Value());
              break;
            }
            case INT64VALUE: {
              setInt64Value(other.getInt64Value());
              break;
            }
            case STRINGVALUE: {
              criteriaCase_ = 6;
              criteria_ = other.criteria_;
              onChanged();
              break;
            }
            case OPERATOR: {
              setOperator(other.getOperator());
              break;
            }
            case BRANCH: {
              setBranch(other.getBranch());
              break;
            }
            case BRANCH_IF: {
              setBranchIf(other.getBranchIf());
              break;
            }
            case CRITERIA_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int criteriaCase_ = 0;
        private java.lang.Object criteria_;
        public CriteriaCase
            getCriteriaCase() {
          return CriteriaCase.forNumber(
              criteriaCase_);
        }

        public Builder clearCriteria() {
          criteriaCase_ = 0;
          criteria_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        /**
         * <pre>
         *&#47; push current value of this signal
         * </pre>
         *
         * <code>optional string signalName = 1;</code>
         */
        public boolean hasSignalName() {
          return criteriaCase_ == 1;
        }
        /**
         * <pre>
         *&#47; push current value of this signal
         * </pre>
         *
         * <code>optional string signalName = 1;</code>
         */
        public java.lang.String getSignalName() {
          java.lang.Object ref = "";
          if (criteriaCase_ == 1) {
            ref = criteria_;
          }
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (criteriaCase_ == 1) {
              if (bs.isValidUtf8()) {
                criteria_ = s;
              }
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         *&#47; push current value of this signal
         * </pre>
         *
         * <code>optional string signalName = 1;</code>
         */
        public com.google.protobuf.ByteString
            getSignalNameBytes() {
          java.lang.Object ref = "";
          if (criteriaCase_ == 1) {
            ref = criteria_;
          }
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            if (criteriaCase_ == 1) {
              criteria_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#47; push current value of this signal
         * </pre>
         *
         * <code>optional string signalName = 1;</code>
         */
        public Builder setSignalName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  criteriaCase_ = 1;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; push current value of this signal
         * </pre>
         *
         * <code>optional string signalName = 1;</code>
         */
        public Builder clearSignalName() {
          if (criteriaCase_ == 1) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; push current value of this signal
         * </pre>
         *
         * <code>optional string signalName = 1;</code>
         */
        public Builder setSignalNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  criteriaCase_ = 1;
          criteria_ = value;
          onChanged();
          return this;
        }

        /**
         * <pre>
         *&#47; push constant double on stack
         * </pre>
         *
         * <code>optional double doubleValue = 2;</code>
         */
        public boolean hasDoubleValue() {
          return criteriaCase_ == 2;
        }
        /**
         * <pre>
         *&#47; push constant double on stack
         * </pre>
         *
         * <code>optional double doubleValue = 2;</code>
         */
        public double getDoubleValue() {
          if (criteriaCase_ == 2) {
            return (java.lang.Double) criteria_;
          }
          return 0D;
        }
        /**
         * <pre>
         *&#47; push constant double on stack
         * </pre>
         *
         * <code>optional double doubleValue = 2;</code>
         */
        public Builder setDoubleValue(double value) {
          criteriaCase_ = 2;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; push constant double on stack
         * </pre>
         *
         * <code>optional double doubleValue = 2;</code>
         */
        public Builder clearDoubleValue() {
          if (criteriaCase_ == 2) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; push constant float on stack
         * </pre>
         *
         * <code>optional float floatValue = 3;</code>
         */
        public boolean hasFloatValue() {
          return criteriaCase_ == 3;
        }
        /**
         * <pre>
         *&#47; push constant float on stack
         * </pre>
         *
         * <code>optional float floatValue = 3;</code>
         */
        public float getFloatValue() {
          if (criteriaCase_ == 3) {
            return (java.lang.Float) criteria_;
          }
          return 0F;
        }
        /**
         * <pre>
         *&#47; push constant float on stack
         * </pre>
         *
         * <code>optional float floatValue = 3;</code>
         */
        public Builder setFloatValue(float value) {
          criteriaCase_ = 3;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; push constant float on stack
         * </pre>
         *
         * <code>optional float floatValue = 3;</code>
         */
        public Builder clearFloatValue() {
          if (criteriaCase_ == 3) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; push constant signed 32 bit integer on stack
         * </pre>
         *
         * <code>optional int32 int32Value = 4;</code>
         */
        public boolean hasInt32Value() {
          return criteriaCase_ == 4;
        }
        /**
         * <pre>
         *&#47; push constant signed 32 bit integer on stack
         * </pre>
         *
         * <code>optional int32 int32Value = 4;</code>
         */
        public int getInt32Value() {
          if (criteriaCase_ == 4) {
            return (java.lang.Integer) criteria_;
          }
          return 0;
        }
        /**
         * <pre>
         *&#47; push constant signed 32 bit integer on stack
         * </pre>
         *
         * <code>optional int32 int32Value = 4;</code>
         */
        public Builder setInt32Value(int value) {
          criteriaCase_ = 4;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; push constant signed 32 bit integer on stack
         * </pre>
         *
         * <code>optional int32 int32Value = 4;</code>
         */
        public Builder clearInt32Value() {
          if (criteriaCase_ == 4) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; push constant signed 64 bit integer on stack
         * </pre>
         *
         * <code>optional int64 int64Value = 5;</code>
         */
        public boolean hasInt64Value() {
          return criteriaCase_ == 5;
        }
        /**
         * <pre>
         *&#47; push constant signed 64 bit integer on stack
         * </pre>
         *
         * <code>optional int64 int64Value = 5;</code>
         */
        public long getInt64Value() {
          if (criteriaCase_ == 5) {
            return (java.lang.Long) criteria_;
          }
          return 0L;
        }
        /**
         * <pre>
         *&#47; push constant signed 64 bit integer on stack
         * </pre>
         *
         * <code>optional int64 int64Value = 5;</code>
         */
        public Builder setInt64Value(long value) {
          criteriaCase_ = 5;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; push constant signed 64 bit integer on stack
         * </pre>
         *
         * <code>optional int64 int64Value = 5;</code>
         */
        public Builder clearInt64Value() {
          if (criteriaCase_ == 5) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; push constant on stack
         * </pre>
         *
         * <code>optional string stringValue = 6;</code>
         */
        public boolean hasStringValue() {
          return criteriaCase_ == 6;
        }
        /**
         * <pre>
         *&#47; push constant on stack
         * </pre>
         *
         * <code>optional string stringValue = 6;</code>
         */
        public java.lang.String getStringValue() {
          java.lang.Object ref = "";
          if (criteriaCase_ == 6) {
            ref = criteria_;
          }
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (criteriaCase_ == 6) {
              if (bs.isValidUtf8()) {
                criteria_ = s;
              }
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         *&#47; push constant on stack
         * </pre>
         *
         * <code>optional string stringValue = 6;</code>
         */
        public com.google.protobuf.ByteString
            getStringValueBytes() {
          java.lang.Object ref = "";
          if (criteriaCase_ == 6) {
            ref = criteria_;
          }
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            if (criteriaCase_ == 6) {
              criteria_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#47; push constant on stack
         * </pre>
         *
         * <code>optional string stringValue = 6;</code>
         */
        public Builder setStringValue(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  criteriaCase_ = 6;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; push constant on stack
         * </pre>
         *
         * <code>optional string stringValue = 6;</code>
         */
        public Builder clearStringValue() {
          if (criteriaCase_ == 6) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; push constant on stack
         * </pre>
         *
         * <code>optional string stringValue = 6;</code>
         */
        public Builder setStringValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  criteriaCase_ = 6;
          criteria_ = value;
          onChanged();
          return this;
        }

        /**
         * <pre>
         *&#47; pop, eval, push result. See enum FilterOperator for details
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
         */
        public boolean hasOperator() {
          return criteriaCase_ == 7;
        }
        /**
         * <pre>
         *&#47; pop, eval, push result. See enum FilterOperator for details
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator getOperator() {
          if (criteriaCase_ == 7) {
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator result = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.valueOf(
                (java.lang.Integer) criteria_);
            return result == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.NOT : result;
          }
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator.NOT;
        }
        /**
         * <pre>
         *&#47; pop, eval, push result. See enum FilterOperator for details
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
         */
        public Builder setOperator(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterOperator value) {
          if (value == null) {
            throw new NullPointerException();
          }
          criteriaCase_ = 7;
          criteria_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; pop, eval, push result. See enum FilterOperator for details
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterOperator operator = 7;</code>
         */
        public Builder clearOperator() {
          if (criteriaCase_ == 7) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; skip next branch criteria
         * </pre>
         *
         * <code>optional int32 branch = 8;</code>
         */
        public boolean hasBranch() {
          return criteriaCase_ == 8;
        }
        /**
         * <pre>
         *&#47; skip next branch criteria
         * </pre>
         *
         * <code>optional int32 branch = 8;</code>
         */
        public int getBranch() {
          if (criteriaCase_ == 8) {
            return (java.lang.Integer) criteria_;
          }
          return 0;
        }
        /**
         * <pre>
         *&#47; skip next branch criteria
         * </pre>
         *
         * <code>optional int32 branch = 8;</code>
         */
        public Builder setBranch(int value) {
          criteriaCase_ = 8;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; skip next branch criteria
         * </pre>
         *
         * <code>optional int32 branch = 8;</code>
         */
        public Builder clearBranch() {
          if (criteriaCase_ == 8) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; pop stack, if true skip next branch_if criteria
         * </pre>
         *
         * <code>optional int32 branch_if = 9;</code>
         */
        public boolean hasBranchIf() {
          return criteriaCase_ == 9;
        }
        /**
         * <pre>
         *&#47; pop stack, if true skip next branch_if criteria
         * </pre>
         *
         * <code>optional int32 branch_if = 9;</code>
         */
        public int getBranchIf() {
          if (criteriaCase_ == 9) {
            return (java.lang.Integer) criteria_;
          }
          return 0;
        }
        /**
         * <pre>
         *&#47; pop stack, if true skip next branch_if criteria
         * </pre>
         *
         * <code>optional int32 branch_if = 9;</code>
         */
        public Builder setBranchIf(int value) {
          criteriaCase_ = 9;
          criteria_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; pop stack, if true skip next branch_if criteria
         * </pre>
         *
         * <code>optional int32 branch_if = 9;</code>
         */
        public Builder clearBranchIf() {
          if (criteriaCase_ == 9) {
            criteriaCase_ = 0;
            criteria_ = null;
            onChanged();
          }
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<FilterCriteria>
          PARSER = new com.google.protobuf.AbstractParser<FilterCriteria>() {
        public FilterCriteria parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new FilterCriteria(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface DataSetSubscriptionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; data collection period in ms
       * </pre>
       *
       * <code>required int32 period = 1;</code>
       */
      boolean hasPeriod();
      /**
       * <pre>
       *&#47; data collection period in ms
       * </pre>
       *
       * <code>required int32 period = 1;</code>
       */
      int getPeriod();

      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal> 
          getDataSetSignalList();
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal getDataSetSignal(int index);
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      int getDataSetSignalCount();
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder> 
          getDataSetSignalOrBuilderList();
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder getDataSetSignalOrBuilder(
          int index);

      /**
       * <pre>
       *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
       * </pre>
       *
       * <code>required int64 dataSetId = 3;</code>
       */
      boolean hasDataSetId();
      /**
       * <pre>
       *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
       * </pre>
       *
       * <code>required int64 dataSetId = 3;</code>
       */
      long getDataSetId();

      /**
       * <pre>
       *&#47; criteria to determine how data should be queued and sent
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
       */
      boolean hasQueuePolicy();
      /**
       * <pre>
       *&#47; criteria to determine how data should be queued and sent
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy getQueuePolicy();
      /**
       * <pre>
       *&#47; criteria to determine how data should be queued and sent
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder getQueuePolicyOrBuilder();

      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria> 
          getFilterExpressionList();
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria getFilterExpression(int index);
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      int getFilterExpressionCount();
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder> 
          getFilterExpressionOrBuilderList();
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder getFilterExpressionOrBuilder(
          int index);

      /**
       * <pre>
       *&#47; how differential timestamps shall be encoded in multiple row datasets
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
       */
      boolean hasDifferentialTSEncodingType();
      /**
       * <pre>
       *&#47; how differential timestamps shall be encoded in multiple row datasets
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum getDifferentialTSEncodingType();
    }
    /**
     * <pre>
     **
     * Criteria for what data elements should be collected and at what rate, and how collected data should be queued and transmitted to the SDP.
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription}
     */
    public  static final class DataSetSubscription extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)
        DataSetSubscriptionOrBuilder {
      // Use DataSetSubscription.newBuilder() to construct.
      private DataSetSubscription(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DataSetSubscription() {
        period_ = 0;
        dataSetSignal_ = java.util.Collections.emptyList();
        dataSetId_ = 0L;
        filterExpression_ = java.util.Collections.emptyList();
        differentialTSEncodingType_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DataSetSubscription(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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;
                period_ = input.readInt32();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  dataSetSignal_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal>();
                  mutable_bitField0_ |= 0x00000002;
                }
                dataSetSignal_.add(
                    input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.PARSER, extensionRegistry));
                break;
              }
              case 24: {
                bitField0_ |= 0x00000002;
                dataSetId_ = input.readInt64();
                break;
              }
              case 34: {
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = queuePolicy_.toBuilder();
                }
                queuePolicy_ = input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(queuePolicy_);
                  queuePolicy_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 42: {
                if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                  filterExpression_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria>();
                  mutable_bitField0_ |= 0x00000010;
                }
                filterExpression_.add(
                    input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.PARSER, extensionRegistry));
                break;
              }
              case 48: {
                int rawValue = input.readEnum();
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum value = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(6, rawValue);
                } else {
                  bitField0_ |= 0x00000008;
                  differentialTSEncodingType_ = rawValue;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            dataSetSignal_ = java.util.Collections.unmodifiableList(dataSetSignal_);
          }
          if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
            filterExpression_ = java.util.Collections.unmodifiableList(filterExpression_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder.class);
      }

      private int bitField0_;
      public static final int PERIOD_FIELD_NUMBER = 1;
      private int period_;
      /**
       * <pre>
       *&#47; data collection period in ms
       * </pre>
       *
       * <code>required int32 period = 1;</code>
       */
      public boolean hasPeriod() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; data collection period in ms
       * </pre>
       *
       * <code>required int32 period = 1;</code>
       */
      public int getPeriod() {
        return period_;
      }

      public static final int DATASETSIGNAL_FIELD_NUMBER = 2;
      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal> dataSetSignal_;
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal> getDataSetSignalList() {
        return dataSetSignal_;
      }
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder> 
          getDataSetSignalOrBuilderList() {
        return dataSetSignal_;
      }
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      public int getDataSetSignalCount() {
        return dataSetSignal_.size();
      }
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal getDataSetSignal(int index) {
        return dataSetSignal_.get(index);
      }
      /**
       * <pre>
       *&#47; list of signals to be collected
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder getDataSetSignalOrBuilder(
          int index) {
        return dataSetSignal_.get(index);
      }

      public static final int DATASETID_FIELD_NUMBER = 3;
      private long dataSetId_;
      /**
       * <pre>
       *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
       * </pre>
       *
       * <code>required int64 dataSetId = 3;</code>
       */
      public boolean hasDataSetId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
       * </pre>
       *
       * <code>required int64 dataSetId = 3;</code>
       */
      public long getDataSetId() {
        return dataSetId_;
      }

      public static final int QUEUEPOLICY_FIELD_NUMBER = 4;
      private com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy_;
      /**
       * <pre>
       *&#47; criteria to determine how data should be queued and sent
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
       */
      public boolean hasQueuePolicy() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *&#47; criteria to determine how data should be queued and sent
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy getQueuePolicy() {
        return queuePolicy_ == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance() : queuePolicy_;
      }
      /**
       * <pre>
       *&#47; criteria to determine how data should be queued and sent
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder getQueuePolicyOrBuilder() {
        return queuePolicy_ == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance() : queuePolicy_;
      }

      public static final int FILTEREXPRESSION_FIELD_NUMBER = 5;
      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria> filterExpression_;
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria> getFilterExpressionList() {
        return filterExpression_;
      }
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder> 
          getFilterExpressionOrBuilderList() {
        return filterExpression_;
      }
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      public int getFilterExpressionCount() {
        return filterExpression_.size();
      }
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria getFilterExpression(int index) {
        return filterExpression_.get(index);
      }
      /**
       * <pre>
       *&#47; criteria to determine whether data should be sent or not sent
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder getFilterExpressionOrBuilder(
          int index) {
        return filterExpression_.get(index);
      }

      public static final int DIFFERENTIALTSENCODINGTYPE_FIELD_NUMBER = 6;
      private int differentialTSEncodingType_;
      /**
       * <pre>
       *&#47; how differential timestamps shall be encoded in multiple row datasets
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
       */
      public boolean hasDifferentialTSEncodingType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       *&#47; how differential timestamps shall be encoded in multiple row datasets
       * </pre>
       *
       * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum getDifferentialTSEncodingType() {
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum result = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum.valueOf(differentialTSEncodingType_);
        return result == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum.NONE : result;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasPeriod()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasDataSetId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasDifferentialTSEncodingType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getDataSetSignalCount(); i++) {
          if (!getDataSetSignal(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, period_);
        }
        for (int i = 0; i < dataSetSignal_.size(); i++) {
          output.writeMessage(2, dataSetSignal_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt64(3, dataSetId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, getQueuePolicy());
        }
        for (int i = 0; i < filterExpression_.size(); i++) {
          output.writeMessage(5, filterExpression_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeEnum(6, differentialTSEncodingType_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, period_);
        }
        for (int i = 0; i < dataSetSignal_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, dataSetSignal_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, dataSetId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getQueuePolicy());
        }
        for (int i = 0; i < filterExpression_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, filterExpression_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(6, differentialTSEncodingType_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription) obj;

        boolean result = true;
        result = result && (hasPeriod() == other.hasPeriod());
        if (hasPeriod()) {
          result = result && (getPeriod()
              == other.getPeriod());
        }
        result = result && getDataSetSignalList()
            .equals(other.getDataSetSignalList());
        result = result && (hasDataSetId() == other.hasDataSetId());
        if (hasDataSetId()) {
          result = result && (getDataSetId()
              == other.getDataSetId());
        }
        result = result && (hasQueuePolicy() == other.hasQueuePolicy());
        if (hasQueuePolicy()) {
          result = result && getQueuePolicy()
              .equals(other.getQueuePolicy());
        }
        result = result && getFilterExpressionList()
            .equals(other.getFilterExpressionList());
        result = result && (hasDifferentialTSEncodingType() == other.hasDifferentialTSEncodingType());
        if (hasDifferentialTSEncodingType()) {
          result = result && differentialTSEncodingType_ == other.differentialTSEncodingType_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasPeriod()) {
          hash = (37 * hash) + PERIOD_FIELD_NUMBER;
          hash = (53 * hash) + getPeriod();
        }
        if (getDataSetSignalCount() > 0) {
          hash = (37 * hash) + DATASETSIGNAL_FIELD_NUMBER;
          hash = (53 * hash) + getDataSetSignalList().hashCode();
        }
        if (hasDataSetId()) {
          hash = (37 * hash) + DATASETID_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getDataSetId());
        }
        if (hasQueuePolicy()) {
          hash = (37 * hash) + QUEUEPOLICY_FIELD_NUMBER;
          hash = (53 * hash) + getQueuePolicy().hashCode();
        }
        if (getFilterExpressionCount() > 0) {
          hash = (37 * hash) + FILTEREXPRESSION_FIELD_NUMBER;
          hash = (53 * hash) + getFilterExpressionList().hashCode();
        }
        if (hasDifferentialTSEncodingType()) {
          hash = (37 * hash) + DIFFERENTIALTSENCODINGTYPE_FIELD_NUMBER;
          hash = (53 * hash) + differentialTSEncodingType_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * Criteria for what data elements should be collected and at what rate, and how collected data should be queued and transmitted to the SDP.
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDataSetSignalFieldBuilder();
            getQueuePolicyFieldBuilder();
            getFilterExpressionFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          period_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (dataSetSignalBuilder_ == null) {
            dataSetSignal_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            dataSetSignalBuilder_.clear();
          }
          dataSetId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000004);
          if (queuePolicyBuilder_ == null) {
            queuePolicy_ = null;
          } else {
            queuePolicyBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (filterExpressionBuilder_ == null) {
            filterExpression_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            filterExpressionBuilder_.clear();
          }
          differentialTSEncodingType_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.period_ = period_;
          if (dataSetSignalBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              dataSetSignal_ = java.util.Collections.unmodifiableList(dataSetSignal_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.dataSetSignal_ = dataSetSignal_;
          } else {
            result.dataSetSignal_ = dataSetSignalBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000002;
          }
          result.dataSetId_ = dataSetId_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          if (queuePolicyBuilder_ == null) {
            result.queuePolicy_ = queuePolicy_;
          } else {
            result.queuePolicy_ = queuePolicyBuilder_.build();
          }
          if (filterExpressionBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              filterExpression_ = java.util.Collections.unmodifiableList(filterExpression_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.filterExpression_ = filterExpression_;
          } else {
            result.filterExpression_ = filterExpressionBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000008;
          }
          result.differentialTSEncodingType_ = differentialTSEncodingType_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.getDefaultInstance()) return this;
          if (other.hasPeriod()) {
            setPeriod(other.getPeriod());
          }
          if (dataSetSignalBuilder_ == null) {
            if (!other.dataSetSignal_.isEmpty()) {
              if (dataSetSignal_.isEmpty()) {
                dataSetSignal_ = other.dataSetSignal_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureDataSetSignalIsMutable();
                dataSetSignal_.addAll(other.dataSetSignal_);
              }
              onChanged();
            }
          } else {
            if (!other.dataSetSignal_.isEmpty()) {
              if (dataSetSignalBuilder_.isEmpty()) {
                dataSetSignalBuilder_.dispose();
                dataSetSignalBuilder_ = null;
                dataSetSignal_ = other.dataSetSignal_;
                bitField0_ = (bitField0_ & ~0x00000002);
                dataSetSignalBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getDataSetSignalFieldBuilder() : null;
              } else {
                dataSetSignalBuilder_.addAllMessages(other.dataSetSignal_);
              }
            }
          }
          if (other.hasDataSetId()) {
            setDataSetId(other.getDataSetId());
          }
          if (other.hasQueuePolicy()) {
            mergeQueuePolicy(other.getQueuePolicy());
          }
          if (filterExpressionBuilder_ == null) {
            if (!other.filterExpression_.isEmpty()) {
              if (filterExpression_.isEmpty()) {
                filterExpression_ = other.filterExpression_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureFilterExpressionIsMutable();
                filterExpression_.addAll(other.filterExpression_);
              }
              onChanged();
            }
          } else {
            if (!other.filterExpression_.isEmpty()) {
              if (filterExpressionBuilder_.isEmpty()) {
                filterExpressionBuilder_.dispose();
                filterExpressionBuilder_ = null;
                filterExpression_ = other.filterExpression_;
                bitField0_ = (bitField0_ & ~0x00000010);
                filterExpressionBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getFilterExpressionFieldBuilder() : null;
              } else {
                filterExpressionBuilder_.addAllMessages(other.filterExpression_);
              }
            }
          }
          if (other.hasDifferentialTSEncodingType()) {
            setDifferentialTSEncodingType(other.getDifferentialTSEncodingType());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          if (!hasPeriod()) {
            return false;
          }
          if (!hasDataSetId()) {
            return false;
          }
          if (!hasDifferentialTSEncodingType()) {
            return false;
          }
          for (int i = 0; i < getDataSetSignalCount(); i++) {
            if (!getDataSetSignal(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

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

        private int period_ ;
        /**
         * <pre>
         *&#47; data collection period in ms
         * </pre>
         *
         * <code>required int32 period = 1;</code>
         */
        public boolean hasPeriod() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47; data collection period in ms
         * </pre>
         *
         * <code>required int32 period = 1;</code>
         */
        public int getPeriod() {
          return period_;
        }
        /**
         * <pre>
         *&#47; data collection period in ms
         * </pre>
         *
         * <code>required int32 period = 1;</code>
         */
        public Builder setPeriod(int value) {
          bitField0_ |= 0x00000001;
          period_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; data collection period in ms
         * </pre>
         *
         * <code>required int32 period = 1;</code>
         */
        public Builder clearPeriod() {
          bitField0_ = (bitField0_ & ~0x00000001);
          period_ = 0;
          onChanged();
          return this;
        }

        private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal> dataSetSignal_ =
          java.util.Collections.emptyList();
        private void ensureDataSetSignalIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            dataSetSignal_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal>(dataSetSignal_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder> dataSetSignalBuilder_;

        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal> getDataSetSignalList() {
          if (dataSetSignalBuilder_ == null) {
            return java.util.Collections.unmodifiableList(dataSetSignal_);
          } else {
            return dataSetSignalBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public int getDataSetSignalCount() {
          if (dataSetSignalBuilder_ == null) {
            return dataSetSignal_.size();
          } else {
            return dataSetSignalBuilder_.getCount();
          }
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal getDataSetSignal(int index) {
          if (dataSetSignalBuilder_ == null) {
            return dataSetSignal_.get(index);
          } else {
            return dataSetSignalBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder setDataSetSignal(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal value) {
          if (dataSetSignalBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetSignalIsMutable();
            dataSetSignal_.set(index, value);
            onChanged();
          } else {
            dataSetSignalBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder setDataSetSignal(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder builderForValue) {
          if (dataSetSignalBuilder_ == null) {
            ensureDataSetSignalIsMutable();
            dataSetSignal_.set(index, builderForValue.build());
            onChanged();
          } else {
            dataSetSignalBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder addDataSetSignal(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal value) {
          if (dataSetSignalBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetSignalIsMutable();
            dataSetSignal_.add(value);
            onChanged();
          } else {
            dataSetSignalBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder addDataSetSignal(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal value) {
          if (dataSetSignalBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetSignalIsMutable();
            dataSetSignal_.add(index, value);
            onChanged();
          } else {
            dataSetSignalBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder addDataSetSignal(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder builderForValue) {
          if (dataSetSignalBuilder_ == null) {
            ensureDataSetSignalIsMutable();
            dataSetSignal_.add(builderForValue.build());
            onChanged();
          } else {
            dataSetSignalBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder addDataSetSignal(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder builderForValue) {
          if (dataSetSignalBuilder_ == null) {
            ensureDataSetSignalIsMutable();
            dataSetSignal_.add(index, builderForValue.build());
            onChanged();
          } else {
            dataSetSignalBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder addAllDataSetSignal(
            java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal> values) {
          if (dataSetSignalBuilder_ == null) {
            ensureDataSetSignalIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, dataSetSignal_);
            onChanged();
          } else {
            dataSetSignalBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder clearDataSetSignal() {
          if (dataSetSignalBuilder_ == null) {
            dataSetSignal_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            dataSetSignalBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public Builder removeDataSetSignal(int index) {
          if (dataSetSignalBuilder_ == null) {
            ensureDataSetSignalIsMutable();
            dataSetSignal_.remove(index);
            onChanged();
          } else {
            dataSetSignalBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder getDataSetSignalBuilder(
            int index) {
          return getDataSetSignalFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder getDataSetSignalOrBuilder(
            int index) {
          if (dataSetSignalBuilder_ == null) {
            return dataSetSignal_.get(index);  } else {
            return dataSetSignalBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder> 
             getDataSetSignalOrBuilderList() {
          if (dataSetSignalBuilder_ != null) {
            return dataSetSignalBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(dataSetSignal_);
          }
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder addDataSetSignalBuilder() {
          return getDataSetSignalFieldBuilder().addBuilder(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder addDataSetSignalBuilder(
            int index) {
          return getDataSetSignalFieldBuilder().addBuilder(
              index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; list of signals to be collected
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSignal dataSetSignal = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder> 
             getDataSetSignalBuilderList() {
          return getDataSetSignalFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder> 
            getDataSetSignalFieldBuilder() {
          if (dataSetSignalBuilder_ == null) {
            dataSetSignalBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignal.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSignalOrBuilder>(
                    dataSetSignal_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            dataSetSignal_ = null;
          }
          return dataSetSignalBuilder_;
        }

        private long dataSetId_ ;
        /**
         * <pre>
         *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
         * </pre>
         *
         * <code>required int64 dataSetId = 3;</code>
         */
        public boolean hasDataSetId() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
         * </pre>
         *
         * <code>required int64 dataSetId = 3;</code>
         */
        public long getDataSetId() {
          return dataSetId_;
        }
        /**
         * <pre>
         *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
         * </pre>
         *
         * <code>required int64 dataSetId = 3;</code>
         */
        public Builder setDataSetId(long value) {
          bitField0_ |= 0x00000004;
          dataSetId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; unique identifier for this data set, needed for the receiver to decode the list of signals
         * </pre>
         *
         * <code>required int64 dataSetId = 3;</code>
         */
        public Builder clearDataSetId() {
          bitField0_ = (bitField0_ & ~0x00000004);
          dataSetId_ = 0L;
          onChanged();
          return this;
        }

        private com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder> queuePolicyBuilder_;
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public boolean hasQueuePolicy() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy getQueuePolicy() {
          if (queuePolicyBuilder_ == null) {
            return queuePolicy_ == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance() : queuePolicy_;
          } else {
            return queuePolicyBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public Builder setQueuePolicy(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy value) {
          if (queuePolicyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            queuePolicy_ = value;
            onChanged();
          } else {
            queuePolicyBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public Builder setQueuePolicy(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder builderForValue) {
          if (queuePolicyBuilder_ == null) {
            queuePolicy_ = builderForValue.build();
            onChanged();
          } else {
            queuePolicyBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public Builder mergeQueuePolicy(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy value) {
          if (queuePolicyBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                queuePolicy_ != null &&
                queuePolicy_ != com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance()) {
              queuePolicy_ =
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.newBuilder(queuePolicy_).mergeFrom(value).buildPartial();
            } else {
              queuePolicy_ = value;
            }
            onChanged();
          } else {
            queuePolicyBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public Builder clearQueuePolicy() {
          if (queuePolicyBuilder_ == null) {
            queuePolicy_ = null;
            onChanged();
          } else {
            queuePolicyBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder getQueuePolicyBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getQueuePolicyFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder getQueuePolicyOrBuilder() {
          if (queuePolicyBuilder_ != null) {
            return queuePolicyBuilder_.getMessageOrBuilder();
          } else {
            return queuePolicy_ == null ?
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.getDefaultInstance() : queuePolicy_;
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine how data should be queued and sent
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.QueuePolicy queuePolicy = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder> 
            getQueuePolicyFieldBuilder() {
          if (queuePolicyBuilder_ == null) {
            queuePolicyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicy.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.QueuePolicyOrBuilder>(
                    getQueuePolicy(),
                    getParentForChildren(),
                    isClean());
            queuePolicy_ = null;
          }
          return queuePolicyBuilder_;
        }

        private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria> filterExpression_ =
          java.util.Collections.emptyList();
        private void ensureFilterExpressionIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            filterExpression_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria>(filterExpression_);
            bitField0_ |= 0x00000010;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder> filterExpressionBuilder_;

        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria> getFilterExpressionList() {
          if (filterExpressionBuilder_ == null) {
            return java.util.Collections.unmodifiableList(filterExpression_);
          } else {
            return filterExpressionBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public int getFilterExpressionCount() {
          if (filterExpressionBuilder_ == null) {
            return filterExpression_.size();
          } else {
            return filterExpressionBuilder_.getCount();
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria getFilterExpression(int index) {
          if (filterExpressionBuilder_ == null) {
            return filterExpression_.get(index);
          } else {
            return filterExpressionBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder setFilterExpression(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria value) {
          if (filterExpressionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFilterExpressionIsMutable();
            filterExpression_.set(index, value);
            onChanged();
          } else {
            filterExpressionBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder setFilterExpression(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder builderForValue) {
          if (filterExpressionBuilder_ == null) {
            ensureFilterExpressionIsMutable();
            filterExpression_.set(index, builderForValue.build());
            onChanged();
          } else {
            filterExpressionBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder addFilterExpression(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria value) {
          if (filterExpressionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFilterExpressionIsMutable();
            filterExpression_.add(value);
            onChanged();
          } else {
            filterExpressionBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder addFilterExpression(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria value) {
          if (filterExpressionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFilterExpressionIsMutable();
            filterExpression_.add(index, value);
            onChanged();
          } else {
            filterExpressionBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder addFilterExpression(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder builderForValue) {
          if (filterExpressionBuilder_ == null) {
            ensureFilterExpressionIsMutable();
            filterExpression_.add(builderForValue.build());
            onChanged();
          } else {
            filterExpressionBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder addFilterExpression(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder builderForValue) {
          if (filterExpressionBuilder_ == null) {
            ensureFilterExpressionIsMutable();
            filterExpression_.add(index, builderForValue.build());
            onChanged();
          } else {
            filterExpressionBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder addAllFilterExpression(
            java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria> values) {
          if (filterExpressionBuilder_ == null) {
            ensureFilterExpressionIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, filterExpression_);
            onChanged();
          } else {
            filterExpressionBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder clearFilterExpression() {
          if (filterExpressionBuilder_ == null) {
            filterExpression_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            filterExpressionBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public Builder removeFilterExpression(int index) {
          if (filterExpressionBuilder_ == null) {
            ensureFilterExpressionIsMutable();
            filterExpression_.remove(index);
            onChanged();
          } else {
            filterExpressionBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder getFilterExpressionBuilder(
            int index) {
          return getFilterExpressionFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder getFilterExpressionOrBuilder(
            int index) {
          if (filterExpressionBuilder_ == null) {
            return filterExpression_.get(index);  } else {
            return filterExpressionBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder> 
             getFilterExpressionOrBuilderList() {
          if (filterExpressionBuilder_ != null) {
            return filterExpressionBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(filterExpression_);
          }
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder addFilterExpressionBuilder() {
          return getFilterExpressionFieldBuilder().addBuilder(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder addFilterExpressionBuilder(
            int index) {
          return getFilterExpressionFieldBuilder().addBuilder(
              index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; criteria to determine whether data should be sent or not sent
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.FilterCriteria filterExpression = 5;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder> 
             getFilterExpressionBuilderList() {
          return getFilterExpressionFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder> 
            getFilterExpressionFieldBuilder() {
          if (filterExpressionBuilder_ == null) {
            filterExpressionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteria.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.FilterCriteriaOrBuilder>(
                    filterExpression_,
                    ((bitField0_ & 0x00000010) == 0x00000010),
                    getParentForChildren(),
                    isClean());
            filterExpression_ = null;
          }
          return filterExpressionBuilder_;
        }

        private int differentialTSEncodingType_ = 0;
        /**
         * <pre>
         *&#47; how differential timestamps shall be encoded in multiple row datasets
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
         */
        public boolean hasDifferentialTSEncodingType() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <pre>
         *&#47; how differential timestamps shall be encoded in multiple row datasets
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum getDifferentialTSEncodingType() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum result = com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum.valueOf(differentialTSEncodingType_);
          return result == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum.NONE : result;
        }
        /**
         * <pre>
         *&#47; how differential timestamps shall be encoded in multiple row datasets
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
         */
        public Builder setDifferentialTSEncodingType(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000020;
          differentialTSEncodingType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; how differential timestamps shall be encoded in multiple row datasets
         * </pre>
         *
         * <code>required .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DifferenceTimeStampTypeEnum differentialTSEncodingType = 6;</code>
         */
        public Builder clearDifferentialTSEncodingType() {
          bitField0_ = (bitField0_ & ~0x00000020);
          differentialTSEncodingType_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<DataSetSubscription>
          PARSER = new com.google.protobuf.AbstractParser<DataSetSubscription>() {
        public DataSetSubscription parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DataSetSubscription(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface PolicyApplicationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this Application
       * </pre>
       *
       * <code>optional bytes applicationId = 1;</code>
       */
      boolean hasApplicationId();
      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this Application
       * </pre>
       *
       * <code>optional bytes applicationId = 1;</code>
       */
      com.google.protobuf.ByteString getApplicationId();

      /**
       * <pre>
       *&#47; Name of this application
       * </pre>
       *
       * <code>required string applicationName = 3;</code>
       */
      boolean hasApplicationName();
      /**
       * <pre>
       *&#47; Name of this application
       * </pre>
       *
       * <code>required string applicationName = 3;</code>
       */
      java.lang.String getApplicationName();
      /**
       * <pre>
       *&#47; Name of this application
       * </pre>
       *
       * <code>required string applicationName = 3;</code>
       */
      com.google.protobuf.ByteString
          getApplicationNameBytes();
    }
    /**
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication}
     */
    public  static final class PolicyApplication extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication)
        PolicyApplicationOrBuilder {
      // Use PolicyApplication.newBuilder() to construct.
      private PolicyApplication(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PolicyApplication() {
        applicationId_ = com.google.protobuf.ByteString.EMPTY;
        applicationName_ = "";
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private PolicyApplication(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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 10: {
                bitField0_ |= 0x00000001;
                applicationId_ = input.readBytes();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                applicationName_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder.class);
      }

      private int bitField0_;
      public static final int APPLICATIONID_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString applicationId_;
      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this Application
       * </pre>
       *
       * <code>optional bytes applicationId = 1;</code>
       */
      public boolean hasApplicationId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this Application
       * </pre>
       *
       * <code>optional bytes applicationId = 1;</code>
       */
      public com.google.protobuf.ByteString getApplicationId() {
        return applicationId_;
      }

      public static final int APPLICATIONNAME_FIELD_NUMBER = 3;
      private volatile java.lang.Object applicationName_;
      /**
       * <pre>
       *&#47; Name of this application
       * </pre>
       *
       * <code>required string applicationName = 3;</code>
       */
      public boolean hasApplicationName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *&#47; Name of this application
       * </pre>
       *
       * <code>required string applicationName = 3;</code>
       */
      public java.lang.String getApplicationName() {
        java.lang.Object ref = applicationName_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            applicationName_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *&#47; Name of this application
       * </pre>
       *
       * <code>required string applicationName = 3;</code>
       */
      public com.google.protobuf.ByteString
          getApplicationNameBytes() {
        java.lang.Object ref = applicationName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          applicationName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

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

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, applicationId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, applicationName_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, applicationId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, applicationName_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication) obj;

        boolean result = true;
        result = result && (hasApplicationId() == other.hasApplicationId());
        if (hasApplicationId()) {
          result = result && getApplicationId()
              .equals(other.getApplicationId());
        }
        result = result && (hasApplicationName() == other.hasApplicationName());
        if (hasApplicationName()) {
          result = result && getApplicationName()
              .equals(other.getApplicationName());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasApplicationId()) {
          hash = (37 * hash) + APPLICATIONID_FIELD_NUMBER;
          hash = (53 * hash) + getApplicationId().hashCode();
        }
        if (hasApplicationName()) {
          hash = (37 * hash) + APPLICATIONNAME_FIELD_NUMBER;
          hash = (53 * hash) + getApplicationName().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          applicationId_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          applicationName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.applicationId_ = applicationId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.applicationName_ = applicationName_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance()) return this;
          if (other.hasApplicationId()) {
            setApplicationId(other.getApplicationId());
          }
          if (other.hasApplicationName()) {
            bitField0_ |= 0x00000002;
            applicationName_ = other.applicationName_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

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

        private com.google.protobuf.ByteString applicationId_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this Application
         * </pre>
         *
         * <code>optional bytes applicationId = 1;</code>
         */
        public boolean hasApplicationId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this Application
         * </pre>
         *
         * <code>optional bytes applicationId = 1;</code>
         */
        public com.google.protobuf.ByteString getApplicationId() {
          return applicationId_;
        }
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this Application
         * </pre>
         *
         * <code>optional bytes applicationId = 1;</code>
         */
        public Builder setApplicationId(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          applicationId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this Application
         * </pre>
         *
         * <code>optional bytes applicationId = 1;</code>
         */
        public Builder clearApplicationId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          applicationId_ = getDefaultInstance().getApplicationId();
          onChanged();
          return this;
        }

        private java.lang.Object applicationName_ = "";
        /**
         * <pre>
         *&#47; Name of this application
         * </pre>
         *
         * <code>required string applicationName = 3;</code>
         */
        public boolean hasApplicationName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *&#47; Name of this application
         * </pre>
         *
         * <code>required string applicationName = 3;</code>
         */
        public java.lang.String getApplicationName() {
          java.lang.Object ref = applicationName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              applicationName_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         *&#47; Name of this application
         * </pre>
         *
         * <code>required string applicationName = 3;</code>
         */
        public com.google.protobuf.ByteString
            getApplicationNameBytes() {
          java.lang.Object ref = applicationName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            applicationName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#47; Name of this application
         * </pre>
         *
         * <code>required string applicationName = 3;</code>
         */
        public Builder setApplicationName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          applicationName_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; Name of this application
         * </pre>
         *
         * <code>required string applicationName = 3;</code>
         */
        public Builder clearApplicationName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          applicationName_ = getDefaultInstance().getApplicationName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; Name of this application
         * </pre>
         *
         * <code>required string applicationName = 3;</code>
         */
        public Builder setApplicationNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
          applicationName_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<PolicyApplication>
          PARSER = new com.google.protobuf.AbstractParser<PolicyApplication>() {
        public PolicyApplication parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new PolicyApplication(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface PolicySubscriptionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
       * </pre>
       *
       * <code>optional bytes policySubscriptionId = 1;</code>
       */
      boolean hasPolicySubscriptionId();
      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
       * </pre>
       *
       * <code>optional bytes policySubscriptionId = 1;</code>
       */
      com.google.protobuf.ByteString getPolicySubscriptionId();

      /**
       * <pre>
       *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
       * </pre>
       *
       * <code>optional int64 expirationDate = 2;</code>
       */
      boolean hasExpirationDate();
      /**
       * <pre>
       *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
       * </pre>
       *
       * <code>optional int64 expirationDate = 2;</code>
       */
      long getExpirationDate();

      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription> 
          getDataSetSubscriptionList();
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription getDataSetSubscription(int index);
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      int getDataSetSubscriptionCount();
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder> 
          getDataSetSubscriptionOrBuilderList();
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder getDataSetSubscriptionOrBuilder(
          int index);

      /**
       * <pre>
       *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
       */
      boolean hasApplication();
      /**
       * <pre>
       *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication getApplication();
      /**
       * <pre>
       *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder getApplicationOrBuilder();
    }
    /**
     * <pre>
     **
     * A PolicySubscription is a set of DataSetSubscription subscriptions and the time period for data collection. 
     * A PolicySubscription with zero DataSetSubscriptions may be used to activate custom TU logic for a period of time.
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription}
     */
    public  static final class PolicySubscription extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription)
        PolicySubscriptionOrBuilder {
      // Use PolicySubscription.newBuilder() to construct.
      private PolicySubscription(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PolicySubscription() {
        policySubscriptionId_ = com.google.protobuf.ByteString.EMPTY;
        expirationDate_ = 0L;
        dataSetSubscription_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private PolicySubscription(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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 10: {
                bitField0_ |= 0x00000001;
                policySubscriptionId_ = input.readBytes();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                expirationDate_ = input.readInt64();
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  dataSetSubscription_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription>();
                  mutable_bitField0_ |= 0x00000004;
                }
                dataSetSubscription_.add(
                    input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.PARSER, extensionRegistry));
                break;
              }
              case 34: {
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = application_.toBuilder();
                }
                application_ = input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(application_);
                  application_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            dataSetSubscription_ = java.util.Collections.unmodifiableList(dataSetSubscription_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder.class);
      }

      private int bitField0_;
      public static final int POLICYSUBSCRIPTIONID_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString policySubscriptionId_;
      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
       * </pre>
       *
       * <code>optional bytes policySubscriptionId = 1;</code>
       */
      public boolean hasPolicySubscriptionId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
       * </pre>
       *
       * <code>optional bytes policySubscriptionId = 1;</code>
       */
      public com.google.protobuf.ByteString getPolicySubscriptionId() {
        return policySubscriptionId_;
      }

      public static final int EXPIRATIONDATE_FIELD_NUMBER = 2;
      private long expirationDate_;
      /**
       * <pre>
       *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
       * </pre>
       *
       * <code>optional int64 expirationDate = 2;</code>
       */
      public boolean hasExpirationDate() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
       * </pre>
       *
       * <code>optional int64 expirationDate = 2;</code>
       */
      public long getExpirationDate() {
        return expirationDate_;
      }

      public static final int DATASETSUBSCRIPTION_FIELD_NUMBER = 3;
      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription> dataSetSubscription_;
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription> getDataSetSubscriptionList() {
        return dataSetSubscription_;
      }
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder> 
          getDataSetSubscriptionOrBuilderList() {
        return dataSetSubscription_;
      }
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      public int getDataSetSubscriptionCount() {
        return dataSetSubscription_.size();
      }
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription getDataSetSubscription(int index) {
        return dataSetSubscription_.get(index);
      }
      /**
       * <pre>
       *&#47; zero or more DataSetsSubscriptions to be collected.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder getDataSetSubscriptionOrBuilder(
          int index) {
        return dataSetSubscription_.get(index);
      }

      public static final int APPLICATION_FIELD_NUMBER = 4;
      private com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication application_;
      /**
       * <pre>
       *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
       */
      public boolean hasApplication() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication getApplication() {
        return application_ == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance() : application_;
      }
      /**
       * <pre>
       *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
       * </pre>
       *
       * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder getApplicationOrBuilder() {
        return application_ == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance() : application_;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        for (int i = 0; i < getDataSetSubscriptionCount(); i++) {
          if (!getDataSetSubscription(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasApplication()) {
          if (!getApplication().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, policySubscriptionId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt64(2, expirationDate_);
        }
        for (int i = 0; i < dataSetSubscription_.size(); i++) {
          output.writeMessage(3, dataSetSubscription_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, getApplication());
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, policySubscriptionId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, expirationDate_);
        }
        for (int i = 0; i < dataSetSubscription_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, dataSetSubscription_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getApplication());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription) obj;

        boolean result = true;
        result = result && (hasPolicySubscriptionId() == other.hasPolicySubscriptionId());
        if (hasPolicySubscriptionId()) {
          result = result && getPolicySubscriptionId()
              .equals(other.getPolicySubscriptionId());
        }
        result = result && (hasExpirationDate() == other.hasExpirationDate());
        if (hasExpirationDate()) {
          result = result && (getExpirationDate()
              == other.getExpirationDate());
        }
        result = result && getDataSetSubscriptionList()
            .equals(other.getDataSetSubscriptionList());
        result = result && (hasApplication() == other.hasApplication());
        if (hasApplication()) {
          result = result && getApplication()
              .equals(other.getApplication());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasPolicySubscriptionId()) {
          hash = (37 * hash) + POLICYSUBSCRIPTIONID_FIELD_NUMBER;
          hash = (53 * hash) + getPolicySubscriptionId().hashCode();
        }
        if (hasExpirationDate()) {
          hash = (37 * hash) + EXPIRATIONDATE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getExpirationDate());
        }
        if (getDataSetSubscriptionCount() > 0) {
          hash = (37 * hash) + DATASETSUBSCRIPTION_FIELD_NUMBER;
          hash = (53 * hash) + getDataSetSubscriptionList().hashCode();
        }
        if (hasApplication()) {
          hash = (37 * hash) + APPLICATION_FIELD_NUMBER;
          hash = (53 * hash) + getApplication().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * A PolicySubscription is a set of DataSetSubscription subscriptions and the time period for data collection. 
       * A PolicySubscription with zero DataSetSubscriptions may be used to activate custom TU logic for a period of time.
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDataSetSubscriptionFieldBuilder();
            getApplicationFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          policySubscriptionId_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          expirationDate_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (dataSetSubscriptionBuilder_ == null) {
            dataSetSubscription_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            dataSetSubscriptionBuilder_.clear();
          }
          if (applicationBuilder_ == null) {
            application_ = null;
          } else {
            applicationBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.policySubscriptionId_ = policySubscriptionId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.expirationDate_ = expirationDate_;
          if (dataSetSubscriptionBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              dataSetSubscription_ = java.util.Collections.unmodifiableList(dataSetSubscription_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.dataSetSubscription_ = dataSetSubscription_;
          } else {
            result.dataSetSubscription_ = dataSetSubscriptionBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          if (applicationBuilder_ == null) {
            result.application_ = application_;
          } else {
            result.application_ = applicationBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.getDefaultInstance()) return this;
          if (other.hasPolicySubscriptionId()) {
            setPolicySubscriptionId(other.getPolicySubscriptionId());
          }
          if (other.hasExpirationDate()) {
            setExpirationDate(other.getExpirationDate());
          }
          if (dataSetSubscriptionBuilder_ == null) {
            if (!other.dataSetSubscription_.isEmpty()) {
              if (dataSetSubscription_.isEmpty()) {
                dataSetSubscription_ = other.dataSetSubscription_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureDataSetSubscriptionIsMutable();
                dataSetSubscription_.addAll(other.dataSetSubscription_);
              }
              onChanged();
            }
          } else {
            if (!other.dataSetSubscription_.isEmpty()) {
              if (dataSetSubscriptionBuilder_.isEmpty()) {
                dataSetSubscriptionBuilder_.dispose();
                dataSetSubscriptionBuilder_ = null;
                dataSetSubscription_ = other.dataSetSubscription_;
                bitField0_ = (bitField0_ & ~0x00000004);
                dataSetSubscriptionBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getDataSetSubscriptionFieldBuilder() : null;
              } else {
                dataSetSubscriptionBuilder_.addAllMessages(other.dataSetSubscription_);
              }
            }
          }
          if (other.hasApplication()) {
            mergeApplication(other.getApplication());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          for (int i = 0; i < getDataSetSubscriptionCount(); i++) {
            if (!getDataSetSubscription(i).isInitialized()) {
              return false;
            }
          }
          if (hasApplication()) {
            if (!getApplication().isInitialized()) {
              return false;
            }
          }
          return true;
        }

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

        private com.google.protobuf.ByteString policySubscriptionId_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
         * </pre>
         *
         * <code>optional bytes policySubscriptionId = 1;</code>
         */
        public boolean hasPolicySubscriptionId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
         * </pre>
         *
         * <code>optional bytes policySubscriptionId = 1;</code>
         */
        public com.google.protobuf.ByteString getPolicySubscriptionId() {
          return policySubscriptionId_;
        }
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
         * </pre>
         *
         * <code>optional bytes policySubscriptionId = 1;</code>
         */
        public Builder setPolicySubscriptionId(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          policySubscriptionId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; contain any arbitrary sequence of bytes for this PolicySubscription
         * </pre>
         *
         * <code>optional bytes policySubscriptionId = 1;</code>
         */
        public Builder clearPolicySubscriptionId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          policySubscriptionId_ = getDefaultInstance().getPolicySubscriptionId();
          onChanged();
          return this;
        }

        private long expirationDate_ ;
        /**
         * <pre>
         *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
         * </pre>
         *
         * <code>optional int64 expirationDate = 2;</code>
         */
        public boolean hasExpirationDate() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
         * </pre>
         *
         * <code>optional int64 expirationDate = 2;</code>
         */
        public long getExpirationDate() {
          return expirationDate_;
        }
        /**
         * <pre>
         *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
         * </pre>
         *
         * <code>optional int64 expirationDate = 2;</code>
         */
        public Builder setExpirationDate(long value) {
          bitField0_ |= 0x00000002;
          expirationDate_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47;contains expiration date for the current policy subscription,  in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
         * </pre>
         *
         * <code>optional int64 expirationDate = 2;</code>
         */
        public Builder clearExpirationDate() {
          bitField0_ = (bitField0_ & ~0x00000002);
          expirationDate_ = 0L;
          onChanged();
          return this;
        }

        private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription> dataSetSubscription_ =
          java.util.Collections.emptyList();
        private void ensureDataSetSubscriptionIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            dataSetSubscription_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription>(dataSetSubscription_);
            bitField0_ |= 0x00000004;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder> dataSetSubscriptionBuilder_;

        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription> getDataSetSubscriptionList() {
          if (dataSetSubscriptionBuilder_ == null) {
            return java.util.Collections.unmodifiableList(dataSetSubscription_);
          } else {
            return dataSetSubscriptionBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public int getDataSetSubscriptionCount() {
          if (dataSetSubscriptionBuilder_ == null) {
            return dataSetSubscription_.size();
          } else {
            return dataSetSubscriptionBuilder_.getCount();
          }
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription getDataSetSubscription(int index) {
          if (dataSetSubscriptionBuilder_ == null) {
            return dataSetSubscription_.get(index);
          } else {
            return dataSetSubscriptionBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder setDataSetSubscription(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription value) {
          if (dataSetSubscriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.set(index, value);
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder setDataSetSubscription(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder builderForValue) {
          if (dataSetSubscriptionBuilder_ == null) {
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.set(index, builderForValue.build());
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder addDataSetSubscription(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription value) {
          if (dataSetSubscriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.add(value);
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder addDataSetSubscription(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription value) {
          if (dataSetSubscriptionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.add(index, value);
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder addDataSetSubscription(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder builderForValue) {
          if (dataSetSubscriptionBuilder_ == null) {
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.add(builderForValue.build());
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder addDataSetSubscription(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder builderForValue) {
          if (dataSetSubscriptionBuilder_ == null) {
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.add(index, builderForValue.build());
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder addAllDataSetSubscription(
            java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription> values) {
          if (dataSetSubscriptionBuilder_ == null) {
            ensureDataSetSubscriptionIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, dataSetSubscription_);
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder clearDataSetSubscription() {
          if (dataSetSubscriptionBuilder_ == null) {
            dataSetSubscription_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public Builder removeDataSetSubscription(int index) {
          if (dataSetSubscriptionBuilder_ == null) {
            ensureDataSetSubscriptionIsMutable();
            dataSetSubscription_.remove(index);
            onChanged();
          } else {
            dataSetSubscriptionBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder getDataSetSubscriptionBuilder(
            int index) {
          return getDataSetSubscriptionFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder getDataSetSubscriptionOrBuilder(
            int index) {
          if (dataSetSubscriptionBuilder_ == null) {
            return dataSetSubscription_.get(index);  } else {
            return dataSetSubscriptionBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder> 
             getDataSetSubscriptionOrBuilderList() {
          if (dataSetSubscriptionBuilder_ != null) {
            return dataSetSubscriptionBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(dataSetSubscription_);
          }
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder addDataSetSubscriptionBuilder() {
          return getDataSetSubscriptionFieldBuilder().addBuilder(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder addDataSetSubscriptionBuilder(
            int index) {
          return getDataSetSubscriptionFieldBuilder().addBuilder(
              index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; zero or more DataSetsSubscriptions to be collected.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.DataSetSubscription dataSetSubscription = 3;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder> 
             getDataSetSubscriptionBuilderList() {
          return getDataSetSubscriptionFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder> 
            getDataSetSubscriptionFieldBuilder() {
          if (dataSetSubscriptionBuilder_ == null) {
            dataSetSubscriptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.DataSetSubscriptionOrBuilder>(
                    dataSetSubscription_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            dataSetSubscription_ = null;
          }
          return dataSetSubscriptionBuilder_;
        }

        private com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication application_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder> applicationBuilder_;
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public boolean hasApplication() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication getApplication() {
          if (applicationBuilder_ == null) {
            return application_ == null ? com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance() : application_;
          } else {
            return applicationBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public Builder setApplication(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication value) {
          if (applicationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            application_ = value;
            onChanged();
          } else {
            applicationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public Builder setApplication(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder builderForValue) {
          if (applicationBuilder_ == null) {
            application_ = builderForValue.build();
            onChanged();
          } else {
            applicationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public Builder mergeApplication(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication value) {
          if (applicationBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                application_ != null &&
                application_ != com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance()) {
              application_ =
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.newBuilder(application_).mergeFrom(value).buildPartial();
            } else {
              application_ = value;
            }
            onChanged();
          } else {
            applicationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public Builder clearApplication() {
          if (applicationBuilder_ == null) {
            application_ = null;
            onChanged();
          } else {
            applicationBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder getApplicationBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getApplicationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder getApplicationOrBuilder() {
          if (applicationBuilder_ != null) {
            return applicationBuilder_.getMessageOrBuilder();
          } else {
            return application_ == null ?
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.getDefaultInstance() : application_;
          }
        }
        /**
         * <pre>
         *&#47; The application to which this policy applies. Applications may query their currently active PolicySubscriptions
         * </pre>
         *
         * <code>optional .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicyApplication application = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder> 
            getApplicationFieldBuilder() {
          if (applicationBuilder_ == null) {
            applicationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplication.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicyApplicationOrBuilder>(
                    getApplication(),
                    getParentForChildren(),
                    isClean());
            application_ = null;
          }
          return applicationBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<PolicySubscription>
          PARSER = new com.google.protobuf.AbstractParser<PolicySubscription>() {
        public PolicySubscription parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new PolicySubscription(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * <pre>
     *&#47; A version number is assigned every time there is a change in policy
     * </pre>
     *
     * <code>required int32 version = 1;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *&#47; A version number is assigned every time there is a change in policy
     * </pre>
     *
     * <code>required int32 version = 1;</code>
     */
    public int getVersion() {
      return version_;
    }

    public static final int POLICYSUBSCRIPTION_FIELD_NUMBER = 2;
    private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription> policySubscription_;
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription> getPolicySubscriptionList() {
      return policySubscription_;
    }
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder> 
        getPolicySubscriptionOrBuilderList() {
      return policySubscription_;
    }
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    public int getPolicySubscriptionCount() {
      return policySubscription_.size();
    }
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription getPolicySubscription(int index) {
      return policySubscription_.get(index);
    }
    /**
     * <pre>
     *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder getPolicySubscriptionOrBuilder(
        int index) {
      return policySubscription_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_;
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int64 timestamp = 3;</code>
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int64 timestamp = 3;</code>
     */
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int MESSAGEID_FIELD_NUMBER = 4;
    private int messageId_;
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 messageId = 4;</code>
     */
    public boolean hasMessageId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 messageId = 4;</code>
     */
    public int getMessageId() {
      return messageId_;
    }

    public static final int SIGNATUREID_FIELD_NUMBER = 5;
    private int signatureId_;
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 signatureId = 5;</code>
     */
    public boolean hasSignatureId() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     *&#47;Added for signature correlation to message
     * </pre>
     *
     * <code>optional int32 signatureId = 5;</code>
     */
    public int getSignatureId() {
      return signatureId_;
    }

    public static final int RAWPAYLOAD_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString rawPayload_;
    /**
     * <pre>
     *&#47; Optional approach to support raw content in the Policy message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 6;</code>
     */
    public boolean hasRawPayload() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     *&#47; Optional approach to support raw content in the Policy message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 6;</code>
     */
    public com.google.protobuf.ByteString getRawPayload() {
      return rawPayload_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getPolicySubscriptionCount(); i++) {
        if (!getPolicySubscription(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, version_);
      }
      for (int i = 0; i < policySubscription_.size(); i++) {
        output.writeMessage(2, policySubscription_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(3, timestamp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(4, messageId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(5, signatureId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(6, rawPayload_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, version_);
      }
      for (int i = 0; i < policySubscription_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, policySubscription_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, messageId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, signatureId_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, rawPayload_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish)) {
        return super.equals(obj);
      }
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish) obj;

      boolean result = true;
      result = result && (hasVersion() == other.hasVersion());
      if (hasVersion()) {
        result = result && (getVersion()
            == other.getVersion());
      }
      result = result && getPolicySubscriptionList()
          .equals(other.getPolicySubscriptionList());
      result = result && (hasTimestamp() == other.hasTimestamp());
      if (hasTimestamp()) {
        result = result && (getTimestamp()
            == other.getTimestamp());
      }
      result = result && (hasMessageId() == other.hasMessageId());
      if (hasMessageId()) {
        result = result && (getMessageId()
            == other.getMessageId());
      }
      result = result && (hasSignatureId() == other.hasSignatureId());
      if (hasSignatureId()) {
        result = result && (getSignatureId()
            == other.getSignatureId());
      }
      result = result && (hasRawPayload() == other.hasRawPayload());
      if (hasRawPayload()) {
        result = result && getRawPayload()
            .equals(other.getRawPayload());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getVersion();
      }
      if (getPolicySubscriptionCount() > 0) {
        hash = (37 * hash) + POLICYSUBSCRIPTION_FIELD_NUMBER;
        hash = (53 * hash) + getPolicySubscriptionList().hashCode();
      }
      if (hasTimestamp()) {
        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTimestamp());
      }
      if (hasMessageId()) {
        hash = (37 * hash) + MESSAGEID_FIELD_NUMBER;
        hash = (53 * hash) + getMessageId();
      }
      if (hasSignatureId()) {
        hash = (37 * hash) + SIGNATUREID_FIELD_NUMBER;
        hash = (53 * hash) + getSignatureId();
      }
      if (hasRawPayload()) {
        hash = (37 * hash) + RAWPAYLOAD_FIELD_NUMBER;
        hash = (53 * hash) + getRawPayload().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * The conditions and requested values for data collection that is to be performed by this Telematics Unit.
     * If storage of VehicleDataAcquisitionPolicyPublish messages requires a signature, the signature will be sent in the same parent UconnectMessage.
     * Additionally If the connection is lost ,Diagnostic information like timestamp at loss of connection,Location and Cellular conditions
     * (RSSI,RSRP,RSRQ,SINR,EARFCN,Physical Cell ID,PLMN ID can be send with DatasetSignal.
     *&lt;div class=exmsg-main&gt;
     * &lt;h4&gt;VehicleDataAcquisitionPublish Example Message:&lt;/h4&gt;
     * &lt;div class=ex-msg&gt;
     *	&lt;code&gt;
     *      timestamp: 1489075048380
     *      messageId: 0
     *      messages
     *      {
     *          [com.fca.uconnect.global.vehicleDataAcquisitionPolicyPublish] {
     *            version: 1
     *            policySubscription {
     *              policySubscriptionId: "-&#92;0274&#92;302]&#92;325&#92;324 &#92;354K"
     *              expirationDate: 1496851048380
     *              dataSetSubscription {
     *                period: 1800000
     *                dataSetSignal {
     *                  signalName: "VIN"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "SWReleaseBranch"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "HUSerialNumber"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.VC_VEH_BRAND.VC_VEH_BRAND"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.VC_VEH_LINE.VC_VEH_LINE"
     *                  type: RAW
     *                }
     *                dataSetId: 1
     *              }
     *              dataSetSubscription {
     *                period: 1000
     *                dataSetSignal {
     *                  signalName: "KONA.Speedometer.Speedometer"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.Odometer.Odometer"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_X"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_Y"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "geocode.Latitude"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "geocode.Longitude"
     *                  type: RAW
     *                }
     *                dataSetId: 6
     *                filterCriteria {
     *                  signalName: "KONA.PowerMode.PowerMode"
     *                }
     *                filterCriteria {
     *                  int32Value: 4
     *                }
     *                filterCriteria {
     *                  operator: EQUAL
     *                }
     *              }
     *            }
     *          }
     *      }
     *  &lt;/code&gt;
     * &lt;/div&gt;
     * &lt;h4&gt;VehicleDataAcquisitionPublish Example Message (Send one message 120 seconds after engine off):&lt;/h4&gt;
     * &lt;div class=ex-msg&gt;
     *	&lt;code&gt;
     *      timestamp: 1489075048380
     *      messageId: 0
     *      messages
     *      {
     *          [com.fca.uconnect.global.vehicleDataAcquisitionPolicyPublish] {
     *            version: 1
     *            policySubscription {
     *              policySubscriptionId: "-&#92;0274&#92;302]&#92;325&#92;324 &#92;354K"
     *              expirationDate: 1496851048380
     *              dataSetSubscription {
     *                period: 1000
     *                dataSetSignal {
     *                  signalName: "KONA.Odometer.Odometer"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_X"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "KONA.VehicleAcceleration.VehPerfAccel_Y"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "geocode.Latitude"
     *                  type: RAW
     *                }
     *                dataSetSignal {
     *                  signalName: "geocode.Longitude"
     *                  type: RAW
     *                }
     *                dataSetId: 16
     *                filterCriteria { 
     *                    signalName:"KONA.PowerMode.PowerMode"
     *                }
     *                filterCriteria { 
     *                    stringValue:"currentPowerMode"' 
     *                }
     *                filterCriteria { 
     *                    operator:24 
     *                }
     *                filterCriteria { 
     *                    signalName:"currentTimeMillis"
     *                }
     *                filterCriteria { 
     *                    stringValue:"currentTime"
     *                }
     *                filterCriteria { 
     *                    operator:24
     *                }
     *                filterCriteria { 
     *                    int32Value:120000
     *                }
     *                filterCriteria { 
     *                    stringValue:"waitTime"
     *                }
     *                filterCriteria { 
     *                    operator:24 
     *                }
     *                filterCriteria { 
     *                    stringValue:"currentPowerMode"
     *                }
     *                filterCriteria { 
     *                    operator:25 
     *                }
     *                filterCriteria { 
     *                    int32Value:0
     *                }
     *                filterCriteria { 
     *                    operator:3 
     *                }
     *                filterCriteria { 
     *                    branch_if:26
     *                }
     *                filterCriteria { 
     *                    stringValue:"lastPowerMode"
     *                }
     *                filterCriteria { 
     *                    operator:25 
     *                }
     *                filterCriteria { 
     *                    int32Value:0
     *                }
     *                filterCriteria { 
     *                    operator:6 
     *                }
     *                filterCriteria { 
     *                    stringValue:"currentTime"
     *                }
     *                filterCriteria { 
     *                    operator:25 
     *                }
     *                filterCriteria { 
     *                    stringValue:"timerBegin"
     *                }
     *                filterCriteria { 
     *                    operator:24 
     *                }
     *                filterCriteria { 
     *                    int32Value:0
     *                }
     *                filterCriteria { 
     *                    stringValue:"currentTime"
     *                }
     *                filterCriteria { 
     *                    operator:25
     *                }
     *                filterCriteria { 
     *                    stringValue:"timerBegin"
     *                }
     *                filterCriteria { 
     *                    operator:25
     *                }
     *                filterCriteria { 
     *                    operator:10 
     *                }
     *                filterCriteria { 
     *                    stringValue:"waitTime"
     *                }
     *                filterCriteria { 
     *                    operator:25 
     *                }
     *                filterCriteria { 
     *                    operator:5 
     *                }
     *                filterCriteria { 
     *                    branch_if:6
     *                }
     *                filterCriteria { 
     *                    int64Value:1
     *                }
     *                filterCriteria { 
     *                    operator:20 
     *                }
     *                filterCriteria { 
     *                    stringValue:"timerBegin"
     *                }
     *                filterCriteria { 
     *                    operator:24 
     *                }
     *                filterCriteria { 
     *                    int32Value:1
     *                }
     *                filterCriteria { 
     *                    branch:2
     *                }
     *                filterCriteria { 
     *                    int32Value:0
     *                }
     *                filterCriteria { 
     *                    branch:2
     *                }
     *                filterCriteria { 
     *                    int32Value:0
     *                }
     *                filterCriteria { 
     *                    stringValue:"currentPowerMode"
     *                }
     *                filterCriteria { 
     *                    operator:25
     *                }
     *                filterCriteria { 
     *                    stringValue:"lastPowerMode"
     *                }
     *                filterCriteria { 
     *                    operator:24
     *                }
     *              }
     *            }
     *          }
     *      }
     *  &lt;/code&gt;
     * &lt;/div&gt; 
     *&lt;/div&gt;
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish)
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublishOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.Builder.class);
      }

      // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPolicySubscriptionFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        version_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (policySubscriptionBuilder_ == null) {
          policySubscription_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          policySubscriptionBuilder_.clear();
        }
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        messageId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        signatureId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        rawPayload_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor;
      }

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish getDefaultInstanceForType() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.getDefaultInstance();
      }

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish build() {
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish buildPartial() {
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.version_ = version_;
        if (policySubscriptionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            policySubscription_ = java.util.Collections.unmodifiableList(policySubscription_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.policySubscription_ = policySubscription_;
        } else {
          result.policySubscription_ = policySubscriptionBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.timestamp_ = timestamp_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.messageId_ = messageId_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.signatureId_ = signatureId_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.rawPayload_ = rawPayload_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish) {
          return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish other) {
        if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (policySubscriptionBuilder_ == null) {
          if (!other.policySubscription_.isEmpty()) {
            if (policySubscription_.isEmpty()) {
              policySubscription_ = other.policySubscription_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensurePolicySubscriptionIsMutable();
              policySubscription_.addAll(other.policySubscription_);
            }
            onChanged();
          }
        } else {
          if (!other.policySubscription_.isEmpty()) {
            if (policySubscriptionBuilder_.isEmpty()) {
              policySubscriptionBuilder_.dispose();
              policySubscriptionBuilder_ = null;
              policySubscription_ = other.policySubscription_;
              bitField0_ = (bitField0_ & ~0x00000002);
              policySubscriptionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPolicySubscriptionFieldBuilder() : null;
            } else {
              policySubscriptionBuilder_.addAllMessages(other.policySubscription_);
            }
          }
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasMessageId()) {
          setMessageId(other.getMessageId());
        }
        if (other.hasSignatureId()) {
          setSignatureId(other.getSignatureId());
        }
        if (other.hasRawPayload()) {
          setRawPayload(other.getRawPayload());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasVersion()) {
          return false;
        }
        for (int i = 0; i < getPolicySubscriptionCount(); i++) {
          if (!getPolicySubscription(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

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

      private int version_ ;
      /**
       * <pre>
       *&#47; A version number is assigned every time there is a change in policy
       * </pre>
       *
       * <code>required int32 version = 1;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; A version number is assigned every time there is a change in policy
       * </pre>
       *
       * <code>required int32 version = 1;</code>
       */
      public int getVersion() {
        return version_;
      }
      /**
       * <pre>
       *&#47; A version number is assigned every time there is a change in policy
       * </pre>
       *
       * <code>required int32 version = 1;</code>
       */
      public Builder setVersion(int value) {
        bitField0_ |= 0x00000001;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; A version number is assigned every time there is a change in policy
       * </pre>
       *
       * <code>required int32 version = 1;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription> policySubscription_ =
        java.util.Collections.emptyList();
      private void ensurePolicySubscriptionIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          policySubscription_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription>(policySubscription_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder> policySubscriptionBuilder_;

      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription> getPolicySubscriptionList() {
        if (policySubscriptionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(policySubscription_);
        } else {
          return policySubscriptionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public int getPolicySubscriptionCount() {
        if (policySubscriptionBuilder_ == null) {
          return policySubscription_.size();
        } else {
          return policySubscriptionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription getPolicySubscription(int index) {
        if (policySubscriptionBuilder_ == null) {
          return policySubscription_.get(index);
        } else {
          return policySubscriptionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder setPolicySubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription value) {
        if (policySubscriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePolicySubscriptionIsMutable();
          policySubscription_.set(index, value);
          onChanged();
        } else {
          policySubscriptionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder setPolicySubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder builderForValue) {
        if (policySubscriptionBuilder_ == null) {
          ensurePolicySubscriptionIsMutable();
          policySubscription_.set(index, builderForValue.build());
          onChanged();
        } else {
          policySubscriptionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder addPolicySubscription(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription value) {
        if (policySubscriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePolicySubscriptionIsMutable();
          policySubscription_.add(value);
          onChanged();
        } else {
          policySubscriptionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder addPolicySubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription value) {
        if (policySubscriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePolicySubscriptionIsMutable();
          policySubscription_.add(index, value);
          onChanged();
        } else {
          policySubscriptionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder addPolicySubscription(
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder builderForValue) {
        if (policySubscriptionBuilder_ == null) {
          ensurePolicySubscriptionIsMutable();
          policySubscription_.add(builderForValue.build());
          onChanged();
        } else {
          policySubscriptionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder addPolicySubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder builderForValue) {
        if (policySubscriptionBuilder_ == null) {
          ensurePolicySubscriptionIsMutable();
          policySubscription_.add(index, builderForValue.build());
          onChanged();
        } else {
          policySubscriptionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder addAllPolicySubscription(
          java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription> values) {
        if (policySubscriptionBuilder_ == null) {
          ensurePolicySubscriptionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, policySubscription_);
          onChanged();
        } else {
          policySubscriptionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder clearPolicySubscription() {
        if (policySubscriptionBuilder_ == null) {
          policySubscription_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          policySubscriptionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public Builder removePolicySubscription(int index) {
        if (policySubscriptionBuilder_ == null) {
          ensurePolicySubscriptionIsMutable();
          policySubscription_.remove(index);
          onChanged();
        } else {
          policySubscriptionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder getPolicySubscriptionBuilder(
          int index) {
        return getPolicySubscriptionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder getPolicySubscriptionOrBuilder(
          int index) {
        if (policySubscriptionBuilder_ == null) {
          return policySubscription_.get(index);  } else {
          return policySubscriptionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder> 
           getPolicySubscriptionOrBuilderList() {
        if (policySubscriptionBuilder_ != null) {
          return policySubscriptionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(policySubscription_);
        }
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder addPolicySubscriptionBuilder() {
        return getPolicySubscriptionFieldBuilder().addBuilder(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.getDefaultInstance());
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder addPolicySubscriptionBuilder(
          int index) {
        return getPolicySubscriptionFieldBuilder().addBuilder(
            index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.getDefaultInstance());
      }
      /**
       * <pre>
       *&#47; This is a message that has details for Policy Subscriptions. Multiple subscriptions may be active at a given time, with different expiration dates.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish.PolicySubscription policySubscription = 2;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder> 
           getPolicySubscriptionBuilderList() {
        return getPolicySubscriptionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder> 
          getPolicySubscriptionFieldBuilder() {
        if (policySubscriptionBuilder_ == null) {
          policySubscriptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.PolicySubscriptionOrBuilder>(
                  policySubscription_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          policySubscription_ = null;
        }
        return policySubscriptionBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int64 timestamp = 3;</code>
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int64 timestamp = 3;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int64 timestamp = 3;</code>
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000004;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int64 timestamp = 3;</code>
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000004);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private int messageId_ ;
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 messageId = 4;</code>
       */
      public boolean hasMessageId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 messageId = 4;</code>
       */
      public int getMessageId() {
        return messageId_;
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 messageId = 4;</code>
       */
      public Builder setMessageId(int value) {
        bitField0_ |= 0x00000008;
        messageId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 messageId = 4;</code>
       */
      public Builder clearMessageId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        messageId_ = 0;
        onChanged();
        return this;
      }

      private int signatureId_ ;
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 signatureId = 5;</code>
       */
      public boolean hasSignatureId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 signatureId = 5;</code>
       */
      public int getSignatureId() {
        return signatureId_;
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 signatureId = 5;</code>
       */
      public Builder setSignatureId(int value) {
        bitField0_ |= 0x00000010;
        signatureId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47;Added for signature correlation to message
       * </pre>
       *
       * <code>optional int32 signatureId = 5;</code>
       */
      public Builder clearSignatureId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        signatureId_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString rawPayload_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *&#47; Optional approach to support raw content in the Policy message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 6;</code>
       */
      public boolean hasRawPayload() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       *&#47; Optional approach to support raw content in the Policy message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 6;</code>
       */
      public com.google.protobuf.ByteString getRawPayload() {
        return rawPayload_;
      }
      /**
       * <pre>
       *&#47; Optional approach to support raw content in the Policy message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 6;</code>
       */
      public Builder setRawPayload(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000020;
        rawPayload_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Optional approach to support raw content in the Policy message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 6;</code>
       */
      public Builder clearRawPayload() {
        bitField0_ = (bitField0_ & ~0x00000020);
        rawPayload_ = getDefaultInstance().getRawPayload();
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish)
    }

    // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPolicyPublish)
    private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish();
    }

    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<VehicleDataAcquisitionPolicyPublish>
        PARSER = new com.google.protobuf.AbstractParser<VehicleDataAcquisitionPolicyPublish>() {
      public VehicleDataAcquisitionPolicyPublish parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new VehicleDataAcquisitionPolicyPublish(input, extensionRegistry);
      }
    };

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

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

    public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VehicleDataAcquisitionPublishOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPublish)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription> 
        getDataSubscriptionList();
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription getDataSubscription(int index);
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    int getDataSubscriptionCount();
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder> 
        getDataSubscriptionOrBuilderList();
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder getDataSubscriptionOrBuilder(
        int index);

    /**
     * <pre>
     *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
     * </pre>
     *
     * <code>optional string vehicleId = 2;</code>
     */
    boolean hasVehicleId();
    /**
     * <pre>
     *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
     * </pre>
     *
     * <code>optional string vehicleId = 2;</code>
     */
    java.lang.String getVehicleId();
    /**
     * <pre>
     *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
     * </pre>
     *
     * <code>optional string vehicleId = 2;</code>
     */
    com.google.protobuf.ByteString
        getVehicleIdBytes();

    /**
     * <pre>
     *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 3;</code>
     */
    boolean hasRawPayload();
    /**
     * <pre>
     *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 3;</code>
     */
    com.google.protobuf.ByteString getRawPayload();
  }
  /**
   * <pre>
   **
   * This protocol buffer message is to define the messages carrying policy specified data from the vehicle to the cloud.
   *&lt;div class=exmsg-main&gt;
   * &lt;h4&gt;VehicleDataAcquisitionPublish Example Message:&lt;/h4&gt;
   * &lt;div class=ex-msg&gt;
   *	&lt;code&gt;
   *       timestamp: 1488909734172
   *       messageId: 22
   *       messages
   *       {
   *         [com.fca.uconnect.global.vehicleDataAcquisitionPublish] {
   *           dataSubscription {
   *             policySubscriptionId: "-&#92;0274&#92;302]&#92;325&#92;324 &#92;354K"
   *             dataSet {
   *               dataSetId: 1
   *               dataRow {
   *                 timestamp: 1488909707309
   *                 signalValue {
   *                   stringValue: "9C3CDXCT8GH987JTH"
   *                 }
   *                 signalValue {
   *                   stringValue: "ChryslerUSA-MY18-ER17.2.0-20170228-E048"
   *                 }
   *                 signalValue {
   *                   stringValue: "T  M9011700254"
   *                 }
   *                 signalValue {
   *                   int32Value: 0
   *                 }
   *                 signalValue {
   *                   int32Value: 29
   *                 }
   *               }
   *             }
   *             dataSet {
   *               dataSetId: 6
   *               dataRow {
   *                 timestamp: 1488909707354
   *                 signalValue {
   *                   floatValue: 272.86719
   *                 }
   *                 signalValue {
   *                   floatValue: 4600.5
   *                 }
   *                 signalValue {
   *                   floatValue: 37.36
   *                 }
   *                 signalValue {
   *                   floatValue: 22.08
   *                 }
   *                 signalValue {
   *                   doubleValue: 42.4973594
   *                 }
   *                 signalValue {
   *                   doubleValue: -83.3761777
   *                 }
   *               }
   *             }   
   *           }
   *         }
   *       }
   *  &lt;/code&gt;
   * &lt;/div&gt;&lt;/div&gt;
   * </pre>
   *
   * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish}
   */
  public  static final class VehicleDataAcquisitionPublish extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish)
      VehicleDataAcquisitionPublishOrBuilder {
    // Use VehicleDataAcquisitionPublish.newBuilder() to construct.
    private VehicleDataAcquisitionPublish(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private VehicleDataAcquisitionPublish() {
      dataSubscription_ = java.util.Collections.emptyList();
      vehicleId_ = "";
      rawPayload_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private VehicleDataAcquisitionPublish(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      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 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                dataSubscription_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription>();
                mutable_bitField0_ |= 0x00000001;
              }
              dataSubscription_.add(
                  input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              vehicleId_ = bs;
              break;
            }
            case 26: {
              bitField0_ |= 0x00000002;
              rawPayload_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          dataSubscription_ = java.util.Collections.unmodifiableList(dataSubscription_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.Builder.class);
    }

    public interface SignalValueOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47;May contain an arbitrary sequence of bytes.
       * </pre>
       *
       * <code>optional bytes bytesValue = 1;</code>
       */
      boolean hasBytesValue();
      /**
       * <pre>
       *&#47;May contain an arbitrary sequence of bytes.
       * </pre>
       *
       * <code>optional bytes bytesValue = 1;</code>
       */
      com.google.protobuf.ByteString getBytesValue();

      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
       * </pre>
       *
       * <code>optional int32 int32Value = 2;</code>
       */
      boolean hasInt32Value();
      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
       * </pre>
       *
       * <code>optional int32 int32Value = 2;</code>
       */
      int getInt32Value();

      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
       * </pre>
       *
       * <code>optional int64 int64Value = 3;</code>
       */
      boolean hasInt64Value();
      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
       * </pre>
       *
       * <code>optional int64 int64Value = 3;</code>
       */
      long getInt64Value();

      /**
       * <pre>
       *&#47; uses boolean variable, i.e. true or false.
       * </pre>
       *
       * <code>optional bool booleanValue = 4;</code>
       */
      boolean hasBooleanValue();
      /**
       * <pre>
       *&#47; uses boolean variable, i.e. true or false.
       * </pre>
       *
       * <code>optional bool booleanValue = 4;</code>
       */
      boolean getBooleanValue();

      /**
       * <pre>
       *&#47; IEE754 32bit float value.
       * </pre>
       *
       * <code>optional float floatValue = 5;</code>
       */
      boolean hasFloatValue();
      /**
       * <pre>
       *&#47; IEE754 32bit float value.
       * </pre>
       *
       * <code>optional float floatValue = 5;</code>
       */
      float getFloatValue();

      /**
       * <pre>
       *&#47; IEE754 double value.
       * </pre>
       *
       * <code>optional double doubleValue = 6;</code>
       */
      boolean hasDoubleValue();
      /**
       * <pre>
       *&#47; IEE754 double value.
       * </pre>
       *
       * <code>optional double doubleValue = 6;</code>
       */
      double getDoubleValue();

      /**
       * <pre>
       *&#47; Variable length string that contains UTF-8 encoded characters.
       * </pre>
       *
       * <code>optional string stringValue = 7;</code>
       */
      boolean hasStringValue();
      /**
       * <pre>
       *&#47; Variable length string that contains UTF-8 encoded characters.
       * </pre>
       *
       * <code>optional string stringValue = 7;</code>
       */
      java.lang.String getStringValue();
      /**
       * <pre>
       *&#47; Variable length string that contains UTF-8 encoded characters.
       * </pre>
       *
       * <code>optional string stringValue = 7;</code>
       */
      com.google.protobuf.ByteString
          getStringValueBytes();

      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint32 sint32Value = 8;</code>
       */
      boolean hasSint32Value();
      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint32 sint32Value = 8;</code>
       */
      int getSint32Value();

      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint64 sint64Value = 9;</code>
       */
      boolean hasSint64Value();
      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint64 sint64Value = 9;</code>
       */
      long getSint64Value();

      /**
       * <pre>
       *&#47; always 4 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed32 sfixed32Value = 10;</code>
       */
      boolean hasSfixed32Value();
      /**
       * <pre>
       *&#47; always 4 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed32 sfixed32Value = 10;</code>
       */
      int getSfixed32Value();

      /**
       * <pre>
       *&#47; always 8 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed64 sfixed64Value = 11;</code>
       */
      boolean hasSfixed64Value();
      /**
       * <pre>
       *&#47; always 8 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed64 sfixed64Value = 11;</code>
       */
      long getSfixed64Value();

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.ValueCase getValueCase();
    }
    /**
     * <pre>
     **
     * An actual data value collected. int32/sint32/sfixed32 all have the same range, as do int64/sint64/sfixed64. The sender should select as appropriate for the expected pattern of data. 
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue}
     */
    public  static final class SignalValue extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue)
        SignalValueOrBuilder {
      // Use SignalValue.newBuilder() to construct.
      private SignalValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SignalValue() {
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SignalValue(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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 10: {
                valueCase_ = 1;
                value_ = input.readBytes();
                break;
              }
              case 16: {
                valueCase_ = 2;
                value_ = input.readInt32();
                break;
              }
              case 24: {
                valueCase_ = 3;
                value_ = input.readInt64();
                break;
              }
              case 32: {
                valueCase_ = 4;
                value_ = input.readBool();
                break;
              }
              case 45: {
                valueCase_ = 5;
                value_ = input.readFloat();
                break;
              }
              case 49: {
                valueCase_ = 6;
                value_ = input.readDouble();
                break;
              }
              case 58: {
                com.google.protobuf.ByteString bs = input.readBytes();
                valueCase_ = 7;
                value_ = bs;
                break;
              }
              case 64: {
                valueCase_ = 8;
                value_ = input.readSInt32();
                break;
              }
              case 72: {
                valueCase_ = 9;
                value_ = input.readSInt64();
                break;
              }
              case 85: {
                valueCase_ = 10;
                value_ = input.readSFixed32();
                break;
              }
              case 89: {
                valueCase_ = 11;
                value_ = input.readSFixed64();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder.class);
      }

      private int bitField0_;
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public enum ValueCase
          implements com.google.protobuf.Internal.EnumLite {
        BYTESVALUE(1),
        INT32VALUE(2),
        INT64VALUE(3),
        BOOLEANVALUE(4),
        FLOATVALUE(5),
        DOUBLEVALUE(6),
        STRINGVALUE(7),
        SINT32VALUE(8),
        SINT64VALUE(9),
        SFIXED32VALUE(10),
        SFIXED64VALUE(11),
        VALUE_NOT_SET(0);
        private final int value;
        private ValueCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ValueCase valueOf(int value) {
          return forNumber(value);
        }

        public static ValueCase forNumber(int value) {
          switch (value) {
            case 1: return BYTESVALUE;
            case 2: return INT32VALUE;
            case 3: return INT64VALUE;
            case 4: return BOOLEANVALUE;
            case 5: return FLOATVALUE;
            case 6: return DOUBLEVALUE;
            case 7: return STRINGVALUE;
            case 8: return SINT32VALUE;
            case 9: return SINT64VALUE;
            case 10: return SFIXED32VALUE;
            case 11: return SFIXED64VALUE;
            case 0: return VALUE_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ValueCase
      getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public static final int BYTESVALUE_FIELD_NUMBER = 1;
      /**
       * <pre>
       *&#47;May contain an arbitrary sequence of bytes.
       * </pre>
       *
       * <code>optional bytes bytesValue = 1;</code>
       */
      public boolean hasBytesValue() {
        return valueCase_ == 1;
      }
      /**
       * <pre>
       *&#47;May contain an arbitrary sequence of bytes.
       * </pre>
       *
       * <code>optional bytes bytesValue = 1;</code>
       */
      public com.google.protobuf.ByteString getBytesValue() {
        if (valueCase_ == 1) {
          return (com.google.protobuf.ByteString) value_;
        }
        return com.google.protobuf.ByteString.EMPTY;
      }

      public static final int INT32VALUE_FIELD_NUMBER = 2;
      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
       * </pre>
       *
       * <code>optional int32 int32Value = 2;</code>
       */
      public boolean hasInt32Value() {
        return valueCase_ == 2;
      }
      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
       * </pre>
       *
       * <code>optional int32 int32Value = 2;</code>
       */
      public int getInt32Value() {
        if (valueCase_ == 2) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }

      public static final int INT64VALUE_FIELD_NUMBER = 3;
      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
       * </pre>
       *
       * <code>optional int64 int64Value = 3;</code>
       */
      public boolean hasInt64Value() {
        return valueCase_ == 3;
      }
      /**
       * <pre>
       *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
       * </pre>
       *
       * <code>optional int64 int64Value = 3;</code>
       */
      public long getInt64Value() {
        if (valueCase_ == 3) {
          return (java.lang.Long) value_;
        }
        return 0L;
      }

      public static final int BOOLEANVALUE_FIELD_NUMBER = 4;
      /**
       * <pre>
       *&#47; uses boolean variable, i.e. true or false.
       * </pre>
       *
       * <code>optional bool booleanValue = 4;</code>
       */
      public boolean hasBooleanValue() {
        return valueCase_ == 4;
      }
      /**
       * <pre>
       *&#47; uses boolean variable, i.e. true or false.
       * </pre>
       *
       * <code>optional bool booleanValue = 4;</code>
       */
      public boolean getBooleanValue() {
        if (valueCase_ == 4) {
          return (java.lang.Boolean) value_;
        }
        return false;
      }

      public static final int FLOATVALUE_FIELD_NUMBER = 5;
      /**
       * <pre>
       *&#47; IEE754 32bit float value.
       * </pre>
       *
       * <code>optional float floatValue = 5;</code>
       */
      public boolean hasFloatValue() {
        return valueCase_ == 5;
      }
      /**
       * <pre>
       *&#47; IEE754 32bit float value.
       * </pre>
       *
       * <code>optional float floatValue = 5;</code>
       */
      public float getFloatValue() {
        if (valueCase_ == 5) {
          return (java.lang.Float) value_;
        }
        return 0F;
      }

      public static final int DOUBLEVALUE_FIELD_NUMBER = 6;
      /**
       * <pre>
       *&#47; IEE754 double value.
       * </pre>
       *
       * <code>optional double doubleValue = 6;</code>
       */
      public boolean hasDoubleValue() {
        return valueCase_ == 6;
      }
      /**
       * <pre>
       *&#47; IEE754 double value.
       * </pre>
       *
       * <code>optional double doubleValue = 6;</code>
       */
      public double getDoubleValue() {
        if (valueCase_ == 6) {
          return (java.lang.Double) value_;
        }
        return 0D;
      }

      public static final int STRINGVALUE_FIELD_NUMBER = 7;
      /**
       * <pre>
       *&#47; Variable length string that contains UTF-8 encoded characters.
       * </pre>
       *
       * <code>optional string stringValue = 7;</code>
       */
      public boolean hasStringValue() {
        return valueCase_ == 7;
      }
      /**
       * <pre>
       *&#47; Variable length string that contains UTF-8 encoded characters.
       * </pre>
       *
       * <code>optional string stringValue = 7;</code>
       */
      public java.lang.String getStringValue() {
        java.lang.Object ref = "";
        if (valueCase_ == 7) {
          ref = value_;
        }
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8() && (valueCase_ == 7)) {
            value_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       *&#47; Variable length string that contains UTF-8 encoded characters.
       * </pre>
       *
       * <code>optional string stringValue = 7;</code>
       */
      public com.google.protobuf.ByteString
          getStringValueBytes() {
        java.lang.Object ref = "";
        if (valueCase_ == 7) {
          ref = value_;
        }
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (valueCase_ == 7) {
            value_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SINT32VALUE_FIELD_NUMBER = 8;
      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint32 sint32Value = 8;</code>
       */
      public boolean hasSint32Value() {
        return valueCase_ == 8;
      }
      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint32 sint32Value = 8;</code>
       */
      public int getSint32Value() {
        if (valueCase_ == 8) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }

      public static final int SINT64VALUE_FIELD_NUMBER = 9;
      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint64 sint64Value = 9;</code>
       */
      public boolean hasSint64Value() {
        return valueCase_ == 9;
      }
      /**
       * <pre>
       *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
       * </pre>
       *
       * <code>optional sint64 sint64Value = 9;</code>
       */
      public long getSint64Value() {
        if (valueCase_ == 9) {
          return (java.lang.Long) value_;
        }
        return 0L;
      }

      public static final int SFIXED32VALUE_FIELD_NUMBER = 10;
      /**
       * <pre>
       *&#47; always 4 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed32 sfixed32Value = 10;</code>
       */
      public boolean hasSfixed32Value() {
        return valueCase_ == 10;
      }
      /**
       * <pre>
       *&#47; always 4 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed32 sfixed32Value = 10;</code>
       */
      public int getSfixed32Value() {
        if (valueCase_ == 10) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }

      public static final int SFIXED64VALUE_FIELD_NUMBER = 11;
      /**
       * <pre>
       *&#47; always 8 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed64 sfixed64Value = 11;</code>
       */
      public boolean hasSfixed64Value() {
        return valueCase_ == 11;
      }
      /**
       * <pre>
       *&#47; always 8 bytes, use if the field has a broad range of values
       * </pre>
       *
       * <code>optional sfixed64 sfixed64Value = 11;</code>
       */
      public long getSfixed64Value() {
        if (valueCase_ == 11) {
          return (java.lang.Long) value_;
        }
        return 0L;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (valueCase_ == 1) {
          output.writeBytes(
              1, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) value_));
        }
        if (valueCase_ == 2) {
          output.writeInt32(
              2, (int)((java.lang.Integer) value_));
        }
        if (valueCase_ == 3) {
          output.writeInt64(
              3, (long)((java.lang.Long) value_));
        }
        if (valueCase_ == 4) {
          output.writeBool(
              4, (boolean)((java.lang.Boolean) value_));
        }
        if (valueCase_ == 5) {
          output.writeFloat(
              5, (float)((java.lang.Float) value_));
        }
        if (valueCase_ == 6) {
          output.writeDouble(
              6, (double)((java.lang.Double) value_));
        }
        if (valueCase_ == 7) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 7, value_);
        }
        if (valueCase_ == 8) {
          output.writeSInt32(
              8, (int)((java.lang.Integer) value_));
        }
        if (valueCase_ == 9) {
          output.writeSInt64(
              9, (long)((java.lang.Long) value_));
        }
        if (valueCase_ == 10) {
          output.writeSFixed32(
              10, (int)((java.lang.Integer) value_));
        }
        if (valueCase_ == 11) {
          output.writeSFixed64(
              11, (long)((java.lang.Long) value_));
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (valueCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(
                1, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) value_));
        }
        if (valueCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(
                2, (int)((java.lang.Integer) value_));
        }
        if (valueCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(
                3, (long)((java.lang.Long) value_));
        }
        if (valueCase_ == 4) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(
                4, (boolean)((java.lang.Boolean) value_));
        }
        if (valueCase_ == 5) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(
                5, (float)((java.lang.Float) value_));
        }
        if (valueCase_ == 6) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(
                6, (double)((java.lang.Double) value_));
        }
        if (valueCase_ == 7) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, value_);
        }
        if (valueCase_ == 8) {
          size += com.google.protobuf.CodedOutputStream
            .computeSInt32Size(
                8, (int)((java.lang.Integer) value_));
        }
        if (valueCase_ == 9) {
          size += com.google.protobuf.CodedOutputStream
            .computeSInt64Size(
                9, (long)((java.lang.Long) value_));
        }
        if (valueCase_ == 10) {
          size += com.google.protobuf.CodedOutputStream
            .computeSFixed32Size(
                10, (int)((java.lang.Integer) value_));
        }
        if (valueCase_ == 11) {
          size += com.google.protobuf.CodedOutputStream
            .computeSFixed64Size(
                11, (long)((java.lang.Long) value_));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue) obj;

        boolean result = true;
        result = result && getValueCase().equals(
            other.getValueCase());
        if (!result) return false;
        switch (valueCase_) {
          case 1:
            result = result && getBytesValue()
                .equals(other.getBytesValue());
            break;
          case 2:
            result = result && (getInt32Value()
                == other.getInt32Value());
            break;
          case 3:
            result = result && (getInt64Value()
                == other.getInt64Value());
            break;
          case 4:
            result = result && (getBooleanValue()
                == other.getBooleanValue());
            break;
          case 5:
            result = result && (
                java.lang.Float.floatToIntBits(getFloatValue())
                == java.lang.Float.floatToIntBits(
                    other.getFloatValue()));
            break;
          case 6:
            result = result && (
                java.lang.Double.doubleToLongBits(getDoubleValue())
                == java.lang.Double.doubleToLongBits(
                    other.getDoubleValue()));
            break;
          case 7:
            result = result && getStringValue()
                .equals(other.getStringValue());
            break;
          case 8:
            result = result && (getSint32Value()
                == other.getSint32Value());
            break;
          case 9:
            result = result && (getSint64Value()
                == other.getSint64Value());
            break;
          case 10:
            result = result && (getSfixed32Value()
                == other.getSfixed32Value());
            break;
          case 11:
            result = result && (getSfixed64Value()
                == other.getSfixed64Value());
            break;
          case 0:
          default:
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        switch (valueCase_) {
          case 1:
            hash = (37 * hash) + BYTESVALUE_FIELD_NUMBER;
            hash = (53 * hash) + getBytesValue().hashCode();
            break;
          case 2:
            hash = (37 * hash) + INT32VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getInt32Value();
            break;
          case 3:
            hash = (37 * hash) + INT64VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                getInt64Value());
            break;
          case 4:
            hash = (37 * hash) + BOOLEANVALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getBooleanValue());
            break;
          case 5:
            hash = (37 * hash) + FLOATVALUE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(
                getFloatValue());
            break;
          case 6:
            hash = (37 * hash) + DOUBLEVALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                java.lang.Double.doubleToLongBits(getDoubleValue()));
            break;
          case 7:
            hash = (37 * hash) + STRINGVALUE_FIELD_NUMBER;
            hash = (53 * hash) + getStringValue().hashCode();
            break;
          case 8:
            hash = (37 * hash) + SINT32VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getSint32Value();
            break;
          case 9:
            hash = (37 * hash) + SINT64VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                getSint64Value());
            break;
          case 10:
            hash = (37 * hash) + SFIXED32VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getSfixed32Value();
            break;
          case 11:
            hash = (37 * hash) + SFIXED64VALUE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                getSfixed64Value());
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * An actual data value collected. int32/sint32/sfixed32 all have the same range, as do int64/sint64/sfixed64. The sender should select as appropriate for the expected pattern of data. 
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          valueCase_ = 0;
          value_ = null;
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (valueCase_ == 1) {
            result.value_ = value_;
          }
          if (valueCase_ == 2) {
            result.value_ = value_;
          }
          if (valueCase_ == 3) {
            result.value_ = value_;
          }
          if (valueCase_ == 4) {
            result.value_ = value_;
          }
          if (valueCase_ == 5) {
            result.value_ = value_;
          }
          if (valueCase_ == 6) {
            result.value_ = value_;
          }
          if (valueCase_ == 7) {
            result.value_ = value_;
          }
          if (valueCase_ == 8) {
            result.value_ = value_;
          }
          if (valueCase_ == 9) {
            result.value_ = value_;
          }
          if (valueCase_ == 10) {
            result.value_ = value_;
          }
          if (valueCase_ == 11) {
            result.value_ = value_;
          }
          result.bitField0_ = to_bitField0_;
          result.valueCase_ = valueCase_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.getDefaultInstance()) return this;
          switch (other.getValueCase()) {
            case BYTESVALUE: {
              setBytesValue(other.getBytesValue());
              break;
            }
            case INT32VALUE: {
              setInt32Value(other.getInt32Value());
              break;
            }
            case INT64VALUE: {
              setInt64Value(other.getInt64Value());
              break;
            }
            case BOOLEANVALUE: {
              setBooleanValue(other.getBooleanValue());
              break;
            }
            case FLOATVALUE: {
              setFloatValue(other.getFloatValue());
              break;
            }
            case DOUBLEVALUE: {
              setDoubleValue(other.getDoubleValue());
              break;
            }
            case STRINGVALUE: {
              valueCase_ = 7;
              value_ = other.value_;
              onChanged();
              break;
            }
            case SINT32VALUE: {
              setSint32Value(other.getSint32Value());
              break;
            }
            case SINT64VALUE: {
              setSint64Value(other.getSint64Value());
              break;
            }
            case SFIXED32VALUE: {
              setSfixed32Value(other.getSfixed32Value());
              break;
            }
            case SFIXED64VALUE: {
              setSfixed64Value(other.getSfixed64Value());
              break;
            }
            case VALUE_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int valueCase_ = 0;
        private java.lang.Object value_;
        public ValueCase
            getValueCase() {
          return ValueCase.forNumber(
              valueCase_);
        }

        public Builder clearValue() {
          valueCase_ = 0;
          value_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        /**
         * <pre>
         *&#47;May contain an arbitrary sequence of bytes.
         * </pre>
         *
         * <code>optional bytes bytesValue = 1;</code>
         */
        public boolean hasBytesValue() {
          return valueCase_ == 1;
        }
        /**
         * <pre>
         *&#47;May contain an arbitrary sequence of bytes.
         * </pre>
         *
         * <code>optional bytes bytesValue = 1;</code>
         */
        public com.google.protobuf.ByteString getBytesValue() {
          if (valueCase_ == 1) {
            return (com.google.protobuf.ByteString) value_;
          }
          return com.google.protobuf.ByteString.EMPTY;
        }
        /**
         * <pre>
         *&#47;May contain an arbitrary sequence of bytes.
         * </pre>
         *
         * <code>optional bytes bytesValue = 1;</code>
         */
        public Builder setBytesValue(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  valueCase_ = 1;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47;May contain an arbitrary sequence of bytes.
         * </pre>
         *
         * <code>optional bytes bytesValue = 1;</code>
         */
        public Builder clearBytesValue() {
          if (valueCase_ == 1) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
         * </pre>
         *
         * <code>optional int32 int32Value = 2;</code>
         */
        public boolean hasInt32Value() {
          return valueCase_ == 2;
        }
        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
         * </pre>
         *
         * <code>optional int32 int32Value = 2;</code>
         */
        public int getInt32Value() {
          if (valueCase_ == 2) {
            return (java.lang.Integer) value_;
          }
          return 0;
        }
        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
         * </pre>
         *
         * <code>optional int32 int32Value = 2;</code>
         */
        public Builder setInt32Value(int value) {
          valueCase_ = 2;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
         * </pre>
         *
         * <code>optional int32 int32Value = 2;</code>
         */
        public Builder clearInt32Value() {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
         * </pre>
         *
         * <code>optional int64 int64Value = 3;</code>
         */
        public boolean hasInt64Value() {
          return valueCase_ == 3;
        }
        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
         * </pre>
         *
         * <code>optional int64 int64Value = 3;</code>
         */
        public long getInt64Value() {
          if (valueCase_ == 3) {
            return (java.lang.Long) value_;
          }
          return 0L;
        }
        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
         * </pre>
         *
         * <code>optional int64 int64Value = 3;</code>
         */
        public Builder setInt64Value(long value) {
          valueCase_ = 3;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47;Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
         * </pre>
         *
         * <code>optional int64 int64Value = 3;</code>
         */
        public Builder clearInt64Value() {
          if (valueCase_ == 3) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; uses boolean variable, i.e. true or false.
         * </pre>
         *
         * <code>optional bool booleanValue = 4;</code>
         */
        public boolean hasBooleanValue() {
          return valueCase_ == 4;
        }
        /**
         * <pre>
         *&#47; uses boolean variable, i.e. true or false.
         * </pre>
         *
         * <code>optional bool booleanValue = 4;</code>
         */
        public boolean getBooleanValue() {
          if (valueCase_ == 4) {
            return (java.lang.Boolean) value_;
          }
          return false;
        }
        /**
         * <pre>
         *&#47; uses boolean variable, i.e. true or false.
         * </pre>
         *
         * <code>optional bool booleanValue = 4;</code>
         */
        public Builder setBooleanValue(boolean value) {
          valueCase_ = 4;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; uses boolean variable, i.e. true or false.
         * </pre>
         *
         * <code>optional bool booleanValue = 4;</code>
         */
        public Builder clearBooleanValue() {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; IEE754 32bit float value.
         * </pre>
         *
         * <code>optional float floatValue = 5;</code>
         */
        public boolean hasFloatValue() {
          return valueCase_ == 5;
        }
        /**
         * <pre>
         *&#47; IEE754 32bit float value.
         * </pre>
         *
         * <code>optional float floatValue = 5;</code>
         */
        public float getFloatValue() {
          if (valueCase_ == 5) {
            return (java.lang.Float) value_;
          }
          return 0F;
        }
        /**
         * <pre>
         *&#47; IEE754 32bit float value.
         * </pre>
         *
         * <code>optional float floatValue = 5;</code>
         */
        public Builder setFloatValue(float value) {
          valueCase_ = 5;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; IEE754 32bit float value.
         * </pre>
         *
         * <code>optional float floatValue = 5;</code>
         */
        public Builder clearFloatValue() {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; IEE754 double value.
         * </pre>
         *
         * <code>optional double doubleValue = 6;</code>
         */
        public boolean hasDoubleValue() {
          return valueCase_ == 6;
        }
        /**
         * <pre>
         *&#47; IEE754 double value.
         * </pre>
         *
         * <code>optional double doubleValue = 6;</code>
         */
        public double getDoubleValue() {
          if (valueCase_ == 6) {
            return (java.lang.Double) value_;
          }
          return 0D;
        }
        /**
         * <pre>
         *&#47; IEE754 double value.
         * </pre>
         *
         * <code>optional double doubleValue = 6;</code>
         */
        public Builder setDoubleValue(double value) {
          valueCase_ = 6;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; IEE754 double value.
         * </pre>
         *
         * <code>optional double doubleValue = 6;</code>
         */
        public Builder clearDoubleValue() {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; Variable length string that contains UTF-8 encoded characters.
         * </pre>
         *
         * <code>optional string stringValue = 7;</code>
         */
        public boolean hasStringValue() {
          return valueCase_ == 7;
        }
        /**
         * <pre>
         *&#47; Variable length string that contains UTF-8 encoded characters.
         * </pre>
         *
         * <code>optional string stringValue = 7;</code>
         */
        public java.lang.String getStringValue() {
          java.lang.Object ref = "";
          if (valueCase_ == 7) {
            ref = value_;
          }
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (valueCase_ == 7) {
              if (bs.isValidUtf8()) {
                value_ = s;
              }
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         *&#47; Variable length string that contains UTF-8 encoded characters.
         * </pre>
         *
         * <code>optional string stringValue = 7;</code>
         */
        public com.google.protobuf.ByteString
            getStringValueBytes() {
          java.lang.Object ref = "";
          if (valueCase_ == 7) {
            ref = value_;
          }
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            if (valueCase_ == 7) {
              value_ = b;
            }
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#47; Variable length string that contains UTF-8 encoded characters.
         * </pre>
         *
         * <code>optional string stringValue = 7;</code>
         */
        public Builder setStringValue(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  valueCase_ = 7;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; Variable length string that contains UTF-8 encoded characters.
         * </pre>
         *
         * <code>optional string stringValue = 7;</code>
         */
        public Builder clearStringValue() {
          if (valueCase_ == 7) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; Variable length string that contains UTF-8 encoded characters.
         * </pre>
         *
         * <code>optional string stringValue = 7;</code>
         */
        public Builder setStringValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  valueCase_ = 7;
          value_ = value;
          onChanged();
          return this;
        }

        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint32 sint32Value = 8;</code>
         */
        public boolean hasSint32Value() {
          return valueCase_ == 8;
        }
        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint32 sint32Value = 8;</code>
         */
        public int getSint32Value() {
          if (valueCase_ == 8) {
            return (java.lang.Integer) value_;
          }
          return 0;
        }
        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint32 sint32Value = 8;</code>
         */
        public Builder setSint32Value(int value) {
          valueCase_ = 8;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint32 sint32Value = 8;</code>
         */
        public Builder clearSint32Value() {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint64 sint64Value = 9;</code>
         */
        public boolean hasSint64Value() {
          return valueCase_ == 9;
        }
        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint64 sint64Value = 9;</code>
         */
        public long getSint64Value() {
          if (valueCase_ == 9) {
            return (java.lang.Long) value_;
          }
          return 0L;
        }
        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint64 sint64Value = 9;</code>
         */
        public Builder setSint64Value(long value) {
          valueCase_ = 9;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; Efficient for negative as well as positive numbers. Size increases with absolute value
         * </pre>
         *
         * <code>optional sint64 sint64Value = 9;</code>
         */
        public Builder clearSint64Value() {
          if (valueCase_ == 9) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; always 4 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed32 sfixed32Value = 10;</code>
         */
        public boolean hasSfixed32Value() {
          return valueCase_ == 10;
        }
        /**
         * <pre>
         *&#47; always 4 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed32 sfixed32Value = 10;</code>
         */
        public int getSfixed32Value() {
          if (valueCase_ == 10) {
            return (java.lang.Integer) value_;
          }
          return 0;
        }
        /**
         * <pre>
         *&#47; always 4 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed32 sfixed32Value = 10;</code>
         */
        public Builder setSfixed32Value(int value) {
          valueCase_ = 10;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; always 4 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed32 sfixed32Value = 10;</code>
         */
        public Builder clearSfixed32Value() {
          if (valueCase_ == 10) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }

        /**
         * <pre>
         *&#47; always 8 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed64 sfixed64Value = 11;</code>
         */
        public boolean hasSfixed64Value() {
          return valueCase_ == 11;
        }
        /**
         * <pre>
         *&#47; always 8 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed64 sfixed64Value = 11;</code>
         */
        public long getSfixed64Value() {
          if (valueCase_ == 11) {
            return (java.lang.Long) value_;
          }
          return 0L;
        }
        /**
         * <pre>
         *&#47; always 8 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed64 sfixed64Value = 11;</code>
         */
        public Builder setSfixed64Value(long value) {
          valueCase_ = 11;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; always 8 bytes, use if the field has a broad range of values
         * </pre>
         *
         * <code>optional sfixed64 sfixed64Value = 11;</code>
         */
        public Builder clearSfixed64Value() {
          if (valueCase_ == 11) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<SignalValue>
          PARSER = new com.google.protobuf.AbstractParser<SignalValue>() {
        public SignalValue parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SignalValue(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface DataRowOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
       * </pre>
       *
       * <code>optional int64 timestamp = 1;</code>
       */
      boolean hasTimestamp();
      /**
       * <pre>
       *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
       * </pre>
       *
       * <code>optional int64 timestamp = 1;</code>
       */
      long getTimestamp();

      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue> 
          getSignalValueList();
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue getSignalValue(int index);
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      int getSignalValueCount();
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder> 
          getSignalValueOrBuilderList();
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder getSignalValueOrBuilder(
          int index);
    }
    /**
     * <pre>
     **
     * Each iteration of data collection for a DataSet will generate one data row. To fully decode and understand a data row the original DataSetSubscription list of signal names must be avaliable because the signal name is not present in this message.
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow}
     */
    public  static final class DataRow extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow)
        DataRowOrBuilder {
      // Use DataRow.newBuilder() to construct.
      private DataRow(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DataRow() {
        timestamp_ = 0L;
        signalValue_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DataRow(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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;
                timestamp_ = input.readInt64();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  signalValue_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue>();
                  mutable_bitField0_ |= 0x00000002;
                }
                signalValue_.add(
                    input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            signalValue_ = java.util.Collections.unmodifiableList(signalValue_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder.class);
      }

      private int bitField0_;
      public static final int TIMESTAMP_FIELD_NUMBER = 1;
      private long timestamp_;
      /**
       * <pre>
       *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
       * </pre>
       *
       * <code>optional int64 timestamp = 1;</code>
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
       * </pre>
       *
       * <code>optional int64 timestamp = 1;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }

      public static final int SIGNALVALUE_FIELD_NUMBER = 2;
      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue> signalValue_;
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue> getSignalValueList() {
        return signalValue_;
      }
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder> 
          getSignalValueOrBuilderList() {
        return signalValue_;
      }
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      public int getSignalValueCount() {
        return signalValue_.size();
      }
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue getSignalValue(int index) {
        return signalValue_.get(index);
      }
      /**
       * <pre>
       *&#47;Contains information for signal value which can be any data type per SignalValue
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder getSignalValueOrBuilder(
          int index) {
        return signalValue_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt64(1, timestamp_);
        }
        for (int i = 0; i < signalValue_.size(); i++) {
          output.writeMessage(2, signalValue_.get(i));
        }
        unknownFields.writeTo(output);
      }

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

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

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow) obj;

        boolean result = true;
        result = result && (hasTimestamp() == other.hasTimestamp());
        if (hasTimestamp()) {
          result = result && (getTimestamp()
              == other.getTimestamp());
        }
        result = result && getSignalValueList()
            .equals(other.getSignalValueList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTimestamp()) {
          hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTimestamp());
        }
        if (getSignalValueCount() > 0) {
          hash = (37 * hash) + SIGNALVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getSignalValueList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * Each iteration of data collection for a DataSet will generate one data row. To fully decode and understand a data row the original DataSetSubscription list of signal names must be avaliable because the signal name is not present in this message.
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getSignalValueFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          timestamp_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (signalValueBuilder_ == null) {
            signalValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            signalValueBuilder_.clear();
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.timestamp_ = timestamp_;
          if (signalValueBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              signalValue_ = java.util.Collections.unmodifiableList(signalValue_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.signalValue_ = signalValue_;
          } else {
            result.signalValue_ = signalValueBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.getDefaultInstance()) return this;
          if (other.hasTimestamp()) {
            setTimestamp(other.getTimestamp());
          }
          if (signalValueBuilder_ == null) {
            if (!other.signalValue_.isEmpty()) {
              if (signalValue_.isEmpty()) {
                signalValue_ = other.signalValue_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureSignalValueIsMutable();
                signalValue_.addAll(other.signalValue_);
              }
              onChanged();
            }
          } else {
            if (!other.signalValue_.isEmpty()) {
              if (signalValueBuilder_.isEmpty()) {
                signalValueBuilder_.dispose();
                signalValueBuilder_ = null;
                signalValue_ = other.signalValue_;
                bitField0_ = (bitField0_ & ~0x00000002);
                signalValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getSignalValueFieldBuilder() : null;
              } else {
                signalValueBuilder_.addAllMessages(other.signalValue_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

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

        private long timestamp_ ;
        /**
         * <pre>
         *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
         * </pre>
         *
         * <code>optional int64 timestamp = 1;</code>
         */
        public boolean hasTimestamp() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
         * </pre>
         *
         * <code>optional int64 timestamp = 1;</code>
         */
        public long getTimestamp() {
          return timestamp_;
        }
        /**
         * <pre>
         *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
         * </pre>
         *
         * <code>optional int64 timestamp = 1;</code>
         */
        public Builder setTimestamp(long value) {
          bitField0_ |= 0x00000001;
          timestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47; Timestamp for when this data row was collected. Timestamps will typically increment per the DataSetSubscription's periodic rate, but many sources of timing jitter may affect this. If differental encoding is in use, timestamp may be sent as an absolute value in the first row, with subsequent rows having either a delta (DIFFERENTIAL_DELTA_TIME) or no timestamp value (DIFFERENATIAL_IMPLIED_PERIOD) at all.
         * </pre>
         *
         * <code>optional int64 timestamp = 1;</code>
         */
        public Builder clearTimestamp() {
          bitField0_ = (bitField0_ & ~0x00000001);
          timestamp_ = 0L;
          onChanged();
          return this;
        }

        private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue> signalValue_ =
          java.util.Collections.emptyList();
        private void ensureSignalValueIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            signalValue_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue>(signalValue_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder> signalValueBuilder_;

        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue> getSignalValueList() {
          if (signalValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(signalValue_);
          } else {
            return signalValueBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public int getSignalValueCount() {
          if (signalValueBuilder_ == null) {
            return signalValue_.size();
          } else {
            return signalValueBuilder_.getCount();
          }
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue getSignalValue(int index) {
          if (signalValueBuilder_ == null) {
            return signalValue_.get(index);
          } else {
            return signalValueBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder setSignalValue(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue value) {
          if (signalValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSignalValueIsMutable();
            signalValue_.set(index, value);
            onChanged();
          } else {
            signalValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder setSignalValue(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder builderForValue) {
          if (signalValueBuilder_ == null) {
            ensureSignalValueIsMutable();
            signalValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            signalValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder addSignalValue(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue value) {
          if (signalValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSignalValueIsMutable();
            signalValue_.add(value);
            onChanged();
          } else {
            signalValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder addSignalValue(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue value) {
          if (signalValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureSignalValueIsMutable();
            signalValue_.add(index, value);
            onChanged();
          } else {
            signalValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder addSignalValue(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder builderForValue) {
          if (signalValueBuilder_ == null) {
            ensureSignalValueIsMutable();
            signalValue_.add(builderForValue.build());
            onChanged();
          } else {
            signalValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder addSignalValue(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder builderForValue) {
          if (signalValueBuilder_ == null) {
            ensureSignalValueIsMutable();
            signalValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            signalValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder addAllSignalValue(
            java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue> values) {
          if (signalValueBuilder_ == null) {
            ensureSignalValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, signalValue_);
            onChanged();
          } else {
            signalValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder clearSignalValue() {
          if (signalValueBuilder_ == null) {
            signalValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            signalValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public Builder removeSignalValue(int index) {
          if (signalValueBuilder_ == null) {
            ensureSignalValueIsMutable();
            signalValue_.remove(index);
            onChanged();
          } else {
            signalValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder getSignalValueBuilder(
            int index) {
          return getSignalValueFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder getSignalValueOrBuilder(
            int index) {
          if (signalValueBuilder_ == null) {
            return signalValue_.get(index);  } else {
            return signalValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder> 
             getSignalValueOrBuilderList() {
          if (signalValueBuilder_ != null) {
            return signalValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(signalValue_);
          }
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder addSignalValueBuilder() {
          return getSignalValueFieldBuilder().addBuilder(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder addSignalValueBuilder(
            int index) {
          return getSignalValueFieldBuilder().addBuilder(
              index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47;Contains information for signal value which can be any data type per SignalValue
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.SignalValue signalValue = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder> 
             getSignalValueBuilderList() {
          return getSignalValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder> 
            getSignalValueFieldBuilder() {
          if (signalValueBuilder_ == null) {
            signalValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValue.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.SignalValueOrBuilder>(
                    signalValue_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            signalValue_ = null;
          }
          return signalValueBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<DataRow>
          PARSER = new com.google.protobuf.AbstractParser<DataRow>() {
        public DataRow parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DataRow(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface DataSetOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
       * </pre>
       *
       * <code>required int64 dataSetId = 1;</code>
       */
      boolean hasDataSetId();
      /**
       * <pre>
       *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
       * </pre>
       *
       * <code>required int64 dataSetId = 1;</code>
       */
      long getDataSetId();

      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow> 
          getDataRowList();
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow getDataRow(int index);
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      int getDataRowCount();
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder> 
          getDataRowOrBuilderList();
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder getDataRowOrBuilder(
          int index);
    }
    /**
     * <pre>
     **
     * Multiple iterations of data collection will be gathered on the TU, queued and sent as a DataSet
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet}
     */
    public  static final class DataSet extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet)
        DataSetOrBuilder {
      // Use DataSet.newBuilder() to construct.
      private DataSet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DataSet() {
        dataSetId_ = 0L;
        dataRow_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DataSet(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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;
                dataSetId_ = input.readInt64();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  dataRow_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow>();
                  mutable_bitField0_ |= 0x00000002;
                }
                dataRow_.add(
                    input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            dataRow_ = java.util.Collections.unmodifiableList(dataRow_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder.class);
      }

      private int bitField0_;
      public static final int DATASETID_FIELD_NUMBER = 1;
      private long dataSetId_;
      /**
       * <pre>
       *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
       * </pre>
       *
       * <code>required int64 dataSetId = 1;</code>
       */
      public boolean hasDataSetId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
       * </pre>
       *
       * <code>required int64 dataSetId = 1;</code>
       */
      public long getDataSetId() {
        return dataSetId_;
      }

      public static final int DATAROW_FIELD_NUMBER = 2;
      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow> dataRow_;
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow> getDataRowList() {
        return dataRow_;
      }
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder> 
          getDataRowOrBuilderList() {
        return dataRow_;
      }
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      public int getDataRowCount() {
        return dataRow_.size();
      }
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow getDataRow(int index) {
        return dataRow_.get(index);
      }
      /**
       * <pre>
       *&#47;this represents signal Value that is collected and its timestamp.
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder getDataRowOrBuilder(
          int index) {
        return dataRow_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

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

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt64(1, dataSetId_);
        }
        for (int i = 0; i < dataRow_.size(); i++) {
          output.writeMessage(2, dataRow_.get(i));
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, dataSetId_);
        }
        for (int i = 0; i < dataRow_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, dataRow_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet) obj;

        boolean result = true;
        result = result && (hasDataSetId() == other.hasDataSetId());
        if (hasDataSetId()) {
          result = result && (getDataSetId()
              == other.getDataSetId());
        }
        result = result && getDataRowList()
            .equals(other.getDataRowList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasDataSetId()) {
          hash = (37 * hash) + DATASETID_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getDataSetId());
        }
        if (getDataRowCount() > 0) {
          hash = (37 * hash) + DATAROW_FIELD_NUMBER;
          hash = (53 * hash) + getDataRowList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       * Multiple iterations of data collection will be gathered on the TU, queued and sent as a DataSet
       * </pre>
       *
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDataRowFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          dataSetId_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (dataRowBuilder_ == null) {
            dataRow_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            dataRowBuilder_.clear();
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.dataSetId_ = dataSetId_;
          if (dataRowBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              dataRow_ = java.util.Collections.unmodifiableList(dataRow_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.dataRow_ = dataRow_;
          } else {
            result.dataRow_ = dataRowBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.getDefaultInstance()) return this;
          if (other.hasDataSetId()) {
            setDataSetId(other.getDataSetId());
          }
          if (dataRowBuilder_ == null) {
            if (!other.dataRow_.isEmpty()) {
              if (dataRow_.isEmpty()) {
                dataRow_ = other.dataRow_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureDataRowIsMutable();
                dataRow_.addAll(other.dataRow_);
              }
              onChanged();
            }
          } else {
            if (!other.dataRow_.isEmpty()) {
              if (dataRowBuilder_.isEmpty()) {
                dataRowBuilder_.dispose();
                dataRowBuilder_ = null;
                dataRow_ = other.dataRow_;
                bitField0_ = (bitField0_ & ~0x00000002);
                dataRowBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getDataRowFieldBuilder() : null;
              } else {
                dataRowBuilder_.addAllMessages(other.dataRow_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

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

        private long dataSetId_ ;
        /**
         * <pre>
         *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
         * </pre>
         *
         * <code>required int64 dataSetId = 1;</code>
         */
        public boolean hasDataSetId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
         * </pre>
         *
         * <code>required int64 dataSetId = 1;</code>
         */
        public long getDataSetId() {
          return dataSetId_;
        }
        /**
         * <pre>
         *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
         * </pre>
         *
         * <code>required int64 dataSetId = 1;</code>
         */
        public Builder setDataSetId(long value) {
          bitField0_ |= 0x00000001;
          dataSetId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47;unique identifier for this data set, needed for the receiver to decode the list of signals.
         * </pre>
         *
         * <code>required int64 dataSetId = 1;</code>
         */
        public Builder clearDataSetId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          dataSetId_ = 0L;
          onChanged();
          return this;
        }

        private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow> dataRow_ =
          java.util.Collections.emptyList();
        private void ensureDataRowIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            dataRow_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow>(dataRow_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder> dataRowBuilder_;

        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow> getDataRowList() {
          if (dataRowBuilder_ == null) {
            return java.util.Collections.unmodifiableList(dataRow_);
          } else {
            return dataRowBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public int getDataRowCount() {
          if (dataRowBuilder_ == null) {
            return dataRow_.size();
          } else {
            return dataRowBuilder_.getCount();
          }
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow getDataRow(int index) {
          if (dataRowBuilder_ == null) {
            return dataRow_.get(index);
          } else {
            return dataRowBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder setDataRow(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow value) {
          if (dataRowBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataRowIsMutable();
            dataRow_.set(index, value);
            onChanged();
          } else {
            dataRowBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder setDataRow(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder builderForValue) {
          if (dataRowBuilder_ == null) {
            ensureDataRowIsMutable();
            dataRow_.set(index, builderForValue.build());
            onChanged();
          } else {
            dataRowBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder addDataRow(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow value) {
          if (dataRowBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataRowIsMutable();
            dataRow_.add(value);
            onChanged();
          } else {
            dataRowBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder addDataRow(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow value) {
          if (dataRowBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataRowIsMutable();
            dataRow_.add(index, value);
            onChanged();
          } else {
            dataRowBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder addDataRow(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder builderForValue) {
          if (dataRowBuilder_ == null) {
            ensureDataRowIsMutable();
            dataRow_.add(builderForValue.build());
            onChanged();
          } else {
            dataRowBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder addDataRow(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder builderForValue) {
          if (dataRowBuilder_ == null) {
            ensureDataRowIsMutable();
            dataRow_.add(index, builderForValue.build());
            onChanged();
          } else {
            dataRowBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder addAllDataRow(
            java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow> values) {
          if (dataRowBuilder_ == null) {
            ensureDataRowIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, dataRow_);
            onChanged();
          } else {
            dataRowBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder clearDataRow() {
          if (dataRowBuilder_ == null) {
            dataRow_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            dataRowBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public Builder removeDataRow(int index) {
          if (dataRowBuilder_ == null) {
            ensureDataRowIsMutable();
            dataRow_.remove(index);
            onChanged();
          } else {
            dataRowBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder getDataRowBuilder(
            int index) {
          return getDataRowFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder getDataRowOrBuilder(
            int index) {
          if (dataRowBuilder_ == null) {
            return dataRow_.get(index);  } else {
            return dataRowBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder> 
             getDataRowOrBuilderList() {
          if (dataRowBuilder_ != null) {
            return dataRowBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(dataRow_);
          }
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder addDataRowBuilder() {
          return getDataRowFieldBuilder().addBuilder(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder addDataRowBuilder(
            int index) {
          return getDataRowFieldBuilder().addBuilder(
              index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47;this represents signal Value that is collected and its timestamp.
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataRow dataRow = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder> 
             getDataRowBuilderList() {
          return getDataRowFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder> 
            getDataRowFieldBuilder() {
          if (dataRowBuilder_ == null) {
            dataRowBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRow.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataRowOrBuilder>(
                    dataRow_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            dataRow_ = null;
          }
          return dataRowBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<DataSet>
          PARSER = new com.google.protobuf.AbstractParser<DataSet>() {
        public DataSet parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DataSet(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface DataSubscriptionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
       * </pre>
       *
       * <code>required bytes policySubscriptionId = 1;</code>
       */
      boolean hasPolicySubscriptionId();
      /**
       * <pre>
       *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
       * </pre>
       *
       * <code>required bytes policySubscriptionId = 1;</code>
       */
      com.google.protobuf.ByteString getPolicySubscriptionId();

      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet> 
          getDataSetList();
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet getDataSet(int index);
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      int getDataSetCount();
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder> 
          getDataSetOrBuilderList();
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder getDataSetOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription}
     */
    public  static final class DataSubscription extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription)
        DataSubscriptionOrBuilder {
      // Use DataSubscription.newBuilder() to construct.
      private DataSubscription(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DataSubscription() {
        policySubscriptionId_ = com.google.protobuf.ByteString.EMPTY;
        dataSet_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DataSubscription(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        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 10: {
                bitField0_ |= 0x00000001;
                policySubscriptionId_ = input.readBytes();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  dataSet_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet>();
                  mutable_bitField0_ |= 0x00000002;
                }
                dataSet_.add(
                    input.readMessage(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            dataSet_ = java.util.Collections.unmodifiableList(dataSet_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder.class);
      }

      private int bitField0_;
      public static final int POLICYSUBSCRIPTIONID_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString policySubscriptionId_;
      /**
       * <pre>
       *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
       * </pre>
       *
       * <code>required bytes policySubscriptionId = 1;</code>
       */
      public boolean hasPolicySubscriptionId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
       * </pre>
       *
       * <code>required bytes policySubscriptionId = 1;</code>
       */
      public com.google.protobuf.ByteString getPolicySubscriptionId() {
        return policySubscriptionId_;
      }

      public static final int DATASET_FIELD_NUMBER = 2;
      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet> dataSet_;
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet> getDataSetList() {
        return dataSet_;
      }
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder> 
          getDataSetOrBuilderList() {
        return dataSet_;
      }
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      public int getDataSetCount() {
        return dataSet_.size();
      }
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet getDataSet(int index) {
        return dataSet_.get(index);
      }
      /**
       * <pre>
       *&#47; DataSets collected and queued on the TU per the QueuePolicy
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder getDataSetOrBuilder(
          int index) {
        return dataSet_.get(index);
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        if (!hasPolicySubscriptionId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getDataSetCount(); i++) {
          if (!getDataSet(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, policySubscriptionId_);
        }
        for (int i = 0; i < dataSet_.size(); i++) {
          output.writeMessage(2, dataSet_.get(i));
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, policySubscriptionId_);
        }
        for (int i = 0; i < dataSet_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, dataSet_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription)) {
          return super.equals(obj);
        }
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription) obj;

        boolean result = true;
        result = result && (hasPolicySubscriptionId() == other.hasPolicySubscriptionId());
        if (hasPolicySubscriptionId()) {
          result = result && getPolicySubscriptionId()
              .equals(other.getPolicySubscriptionId());
        }
        result = result && getDataSetList()
            .equals(other.getDataSetList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasPolicySubscriptionId()) {
          hash = (37 * hash) + POLICYSUBSCRIPTIONID_FIELD_NUMBER;
          hash = (53 * hash) + getPolicySubscriptionId().hashCode();
        }
        if (getDataSetCount() > 0) {
          hash = (37 * hash) + DATASET_FIELD_NUMBER;
          hash = (53 * hash) + getDataSetList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription)
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder.class);
        }

        // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDataSetFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          policySubscriptionId_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (dataSetBuilder_ == null) {
            dataSet_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            dataSetBuilder_.clear();
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_descriptor;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription getDefaultInstanceForType() {
          return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.getDefaultInstance();
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription build() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription buildPartial() {
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.policySubscriptionId_ = policySubscriptionId_;
          if (dataSetBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              dataSet_ = java.util.Collections.unmodifiableList(dataSet_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.dataSet_ = dataSet_;
          } else {
            result.dataSet_ = dataSetBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription) {
            return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription other) {
          if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.getDefaultInstance()) return this;
          if (other.hasPolicySubscriptionId()) {
            setPolicySubscriptionId(other.getPolicySubscriptionId());
          }
          if (dataSetBuilder_ == null) {
            if (!other.dataSet_.isEmpty()) {
              if (dataSet_.isEmpty()) {
                dataSet_ = other.dataSet_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureDataSetIsMutable();
                dataSet_.addAll(other.dataSet_);
              }
              onChanged();
            }
          } else {
            if (!other.dataSet_.isEmpty()) {
              if (dataSetBuilder_.isEmpty()) {
                dataSetBuilder_.dispose();
                dataSetBuilder_ = null;
                dataSet_ = other.dataSet_;
                bitField0_ = (bitField0_ & ~0x00000002);
                dataSetBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getDataSetFieldBuilder() : null;
              } else {
                dataSetBuilder_.addAllMessages(other.dataSet_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          if (!hasPolicySubscriptionId()) {
            return false;
          }
          for (int i = 0; i < getDataSetCount(); i++) {
            if (!getDataSet(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

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

        private com.google.protobuf.ByteString policySubscriptionId_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <pre>
         *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
         * </pre>
         *
         * <code>required bytes policySubscriptionId = 1;</code>
         */
        public boolean hasPolicySubscriptionId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
         * </pre>
         *
         * <code>required bytes policySubscriptionId = 1;</code>
         */
        public com.google.protobuf.ByteString getPolicySubscriptionId() {
          return policySubscriptionId_;
        }
        /**
         * <pre>
         *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
         * </pre>
         *
         * <code>required bytes policySubscriptionId = 1;</code>
         */
        public Builder setPolicySubscriptionId(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          policySubscriptionId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#47;contain any arbitrary sequence of bytes for the Policy subscription id.
         * </pre>
         *
         * <code>required bytes policySubscriptionId = 1;</code>
         */
        public Builder clearPolicySubscriptionId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          policySubscriptionId_ = getDefaultInstance().getPolicySubscriptionId();
          onChanged();
          return this;
        }

        private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet> dataSet_ =
          java.util.Collections.emptyList();
        private void ensureDataSetIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            dataSet_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet>(dataSet_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder> dataSetBuilder_;

        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet> getDataSetList() {
          if (dataSetBuilder_ == null) {
            return java.util.Collections.unmodifiableList(dataSet_);
          } else {
            return dataSetBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public int getDataSetCount() {
          if (dataSetBuilder_ == null) {
            return dataSet_.size();
          } else {
            return dataSetBuilder_.getCount();
          }
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet getDataSet(int index) {
          if (dataSetBuilder_ == null) {
            return dataSet_.get(index);
          } else {
            return dataSetBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder setDataSet(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet value) {
          if (dataSetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetIsMutable();
            dataSet_.set(index, value);
            onChanged();
          } else {
            dataSetBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder setDataSet(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder builderForValue) {
          if (dataSetBuilder_ == null) {
            ensureDataSetIsMutable();
            dataSet_.set(index, builderForValue.build());
            onChanged();
          } else {
            dataSetBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder addDataSet(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet value) {
          if (dataSetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetIsMutable();
            dataSet_.add(value);
            onChanged();
          } else {
            dataSetBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder addDataSet(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet value) {
          if (dataSetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDataSetIsMutable();
            dataSet_.add(index, value);
            onChanged();
          } else {
            dataSetBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder addDataSet(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder builderForValue) {
          if (dataSetBuilder_ == null) {
            ensureDataSetIsMutable();
            dataSet_.add(builderForValue.build());
            onChanged();
          } else {
            dataSetBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder addDataSet(
            int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder builderForValue) {
          if (dataSetBuilder_ == null) {
            ensureDataSetIsMutable();
            dataSet_.add(index, builderForValue.build());
            onChanged();
          } else {
            dataSetBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder addAllDataSet(
            java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet> values) {
          if (dataSetBuilder_ == null) {
            ensureDataSetIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, dataSet_);
            onChanged();
          } else {
            dataSetBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder clearDataSet() {
          if (dataSetBuilder_ == null) {
            dataSet_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            dataSetBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public Builder removeDataSet(int index) {
          if (dataSetBuilder_ == null) {
            ensureDataSetIsMutable();
            dataSet_.remove(index);
            onChanged();
          } else {
            dataSetBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder getDataSetBuilder(
            int index) {
          return getDataSetFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder getDataSetOrBuilder(
            int index) {
          if (dataSetBuilder_ == null) {
            return dataSet_.get(index);  } else {
            return dataSetBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder> 
             getDataSetOrBuilderList() {
          if (dataSetBuilder_ != null) {
            return dataSetBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(dataSet_);
          }
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder addDataSetBuilder() {
          return getDataSetFieldBuilder().addBuilder(
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder addDataSetBuilder(
            int index) {
          return getDataSetFieldBuilder().addBuilder(
              index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.getDefaultInstance());
        }
        /**
         * <pre>
         *&#47; DataSets collected and queued on the TU per the QueuePolicy
         * </pre>
         *
         * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSet dataSet = 2;</code>
         */
        public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder> 
             getDataSetBuilderList() {
          return getDataSetFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder> 
            getDataSetFieldBuilder() {
          if (dataSetBuilder_ == null) {
            dataSetBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSet.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSetOrBuilder>(
                    dataSet_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            dataSet_ = null;
          }
          return dataSetBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription)
      }

      // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription)
      private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription();
      }

      public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      @java.lang.Deprecated public static final com.google.protobuf.Parser<DataSubscription>
          PARSER = new com.google.protobuf.AbstractParser<DataSubscription>() {
        public DataSubscription parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new DataSubscription(input, extensionRegistry);
        }
      };

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

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

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int DATASUBSCRIPTION_FIELD_NUMBER = 1;
    private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription> dataSubscription_;
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription> getDataSubscriptionList() {
      return dataSubscription_;
    }
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder> 
        getDataSubscriptionOrBuilderList() {
      return dataSubscription_;
    }
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    public int getDataSubscriptionCount() {
      return dataSubscription_.size();
    }
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription getDataSubscription(int index) {
      return dataSubscription_.get(index);
    }
    /**
     * <pre>
     *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
     * </pre>
     *
     * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
     */
    public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder getDataSubscriptionOrBuilder(
        int index) {
      return dataSubscription_.get(index);
    }

    public static final int VEHICLEID_FIELD_NUMBER = 2;
    private volatile java.lang.Object vehicleId_;
    /**
     * <pre>
     *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
     * </pre>
     *
     * <code>optional string vehicleId = 2;</code>
     */
    public boolean hasVehicleId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
     * </pre>
     *
     * <code>optional string vehicleId = 2;</code>
     */
    public java.lang.String getVehicleId() {
      java.lang.Object ref = vehicleId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          vehicleId_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
     * </pre>
     *
     * <code>optional string vehicleId = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVehicleIdBytes() {
      java.lang.Object ref = vehicleId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        vehicleId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RAWPAYLOAD_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString rawPayload_;
    /**
     * <pre>
     *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 3;</code>
     */
    public boolean hasRawPayload() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
     * </pre>
     *
     * <code>optional bytes rawPayload = 3;</code>
     */
    public com.google.protobuf.ByteString getRawPayload() {
      return rawPayload_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getDataSubscriptionCount(); i++) {
        if (!getDataSubscription(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < dataSubscription_.size(); i++) {
        output.writeMessage(1, dataSubscription_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, vehicleId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(3, rawPayload_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < dataSubscription_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, dataSubscription_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, vehicleId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, rawPayload_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish)) {
        return super.equals(obj);
      }
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish other = (com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish) obj;

      boolean result = true;
      result = result && getDataSubscriptionList()
          .equals(other.getDataSubscriptionList());
      result = result && (hasVehicleId() == other.hasVehicleId());
      if (hasVehicleId()) {
        result = result && getVehicleId()
            .equals(other.getVehicleId());
      }
      result = result && (hasRawPayload() == other.hasRawPayload());
      if (hasRawPayload()) {
        result = result && getRawPayload()
            .equals(other.getRawPayload());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getDataSubscriptionCount() > 0) {
        hash = (37 * hash) + DATASUBSCRIPTION_FIELD_NUMBER;
        hash = (53 * hash) + getDataSubscriptionList().hashCode();
      }
      if (hasVehicleId()) {
        hash = (37 * hash) + VEHICLEID_FIELD_NUMBER;
        hash = (53 * hash) + getVehicleId().hashCode();
      }
      if (hasRawPayload()) {
        hash = (37 * hash) + RAWPAYLOAD_FIELD_NUMBER;
        hash = (53 * hash) + getRawPayload().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     **
     * This protocol buffer message is to define the messages carrying policy specified data from the vehicle to the cloud.
     *&lt;div class=exmsg-main&gt;
     * &lt;h4&gt;VehicleDataAcquisitionPublish Example Message:&lt;/h4&gt;
     * &lt;div class=ex-msg&gt;
     *	&lt;code&gt;
     *       timestamp: 1488909734172
     *       messageId: 22
     *       messages
     *       {
     *         [com.fca.uconnect.global.vehicleDataAcquisitionPublish] {
     *           dataSubscription {
     *             policySubscriptionId: "-&#92;0274&#92;302]&#92;325&#92;324 &#92;354K"
     *             dataSet {
     *               dataSetId: 1
     *               dataRow {
     *                 timestamp: 1488909707309
     *                 signalValue {
     *                   stringValue: "9C3CDXCT8GH987JTH"
     *                 }
     *                 signalValue {
     *                   stringValue: "ChryslerUSA-MY18-ER17.2.0-20170228-E048"
     *                 }
     *                 signalValue {
     *                   stringValue: "T  M9011700254"
     *                 }
     *                 signalValue {
     *                   int32Value: 0
     *                 }
     *                 signalValue {
     *                   int32Value: 29
     *                 }
     *               }
     *             }
     *             dataSet {
     *               dataSetId: 6
     *               dataRow {
     *                 timestamp: 1488909707354
     *                 signalValue {
     *                   floatValue: 272.86719
     *                 }
     *                 signalValue {
     *                   floatValue: 4600.5
     *                 }
     *                 signalValue {
     *                   floatValue: 37.36
     *                 }
     *                 signalValue {
     *                   floatValue: 22.08
     *                 }
     *                 signalValue {
     *                   doubleValue: 42.4973594
     *                 }
     *                 signalValue {
     *                   doubleValue: -83.3761777
     *                 }
     *               }
     *             }   
     *           }
     *         }
     *       }
     *  &lt;/code&gt;
     * &lt;/div&gt;&lt;/div&gt;
     * </pre>
     *
     * Protobuf type {@code com.fca.uconnect.global.VehicleDataAcquisitionPublish}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.fca.uconnect.global.VehicleDataAcquisitionPublish)
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublishOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.class, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.Builder.class);
      }

      // Construct using com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDataSubscriptionFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (dataSubscriptionBuilder_ == null) {
          dataSubscription_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          dataSubscriptionBuilder_.clear();
        }
        vehicleId_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        rawPayload_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor;
      }

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish getDefaultInstanceForType() {
        return com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.getDefaultInstance();
      }

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish build() {
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish buildPartial() {
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish result = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (dataSubscriptionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            dataSubscription_ = java.util.Collections.unmodifiableList(dataSubscription_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.dataSubscription_ = dataSubscription_;
        } else {
          result.dataSubscription_ = dataSubscriptionBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.vehicleId_ = vehicleId_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.rawPayload_ = rawPayload_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish) {
          return mergeFrom((com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish other) {
        if (other == com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.getDefaultInstance()) return this;
        if (dataSubscriptionBuilder_ == null) {
          if (!other.dataSubscription_.isEmpty()) {
            if (dataSubscription_.isEmpty()) {
              dataSubscription_ = other.dataSubscription_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDataSubscriptionIsMutable();
              dataSubscription_.addAll(other.dataSubscription_);
            }
            onChanged();
          }
        } else {
          if (!other.dataSubscription_.isEmpty()) {
            if (dataSubscriptionBuilder_.isEmpty()) {
              dataSubscriptionBuilder_.dispose();
              dataSubscriptionBuilder_ = null;
              dataSubscription_ = other.dataSubscription_;
              bitField0_ = (bitField0_ & ~0x00000001);
              dataSubscriptionBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDataSubscriptionFieldBuilder() : null;
            } else {
              dataSubscriptionBuilder_.addAllMessages(other.dataSubscription_);
            }
          }
        }
        if (other.hasVehicleId()) {
          bitField0_ |= 0x00000002;
          vehicleId_ = other.vehicleId_;
          onChanged();
        }
        if (other.hasRawPayload()) {
          setRawPayload(other.getRawPayload());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getDataSubscriptionCount(); i++) {
          if (!getDataSubscription(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

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

      private java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription> dataSubscription_ =
        java.util.Collections.emptyList();
      private void ensureDataSubscriptionIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          dataSubscription_ = new java.util.ArrayList<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription>(dataSubscription_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder> dataSubscriptionBuilder_;

      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription> getDataSubscriptionList() {
        if (dataSubscriptionBuilder_ == null) {
          return java.util.Collections.unmodifiableList(dataSubscription_);
        } else {
          return dataSubscriptionBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public int getDataSubscriptionCount() {
        if (dataSubscriptionBuilder_ == null) {
          return dataSubscription_.size();
        } else {
          return dataSubscriptionBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription getDataSubscription(int index) {
        if (dataSubscriptionBuilder_ == null) {
          return dataSubscription_.get(index);
        } else {
          return dataSubscriptionBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder setDataSubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription value) {
        if (dataSubscriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataSubscriptionIsMutable();
          dataSubscription_.set(index, value);
          onChanged();
        } else {
          dataSubscriptionBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder setDataSubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder builderForValue) {
        if (dataSubscriptionBuilder_ == null) {
          ensureDataSubscriptionIsMutable();
          dataSubscription_.set(index, builderForValue.build());
          onChanged();
        } else {
          dataSubscriptionBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder addDataSubscription(com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription value) {
        if (dataSubscriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataSubscriptionIsMutable();
          dataSubscription_.add(value);
          onChanged();
        } else {
          dataSubscriptionBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder addDataSubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription value) {
        if (dataSubscriptionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataSubscriptionIsMutable();
          dataSubscription_.add(index, value);
          onChanged();
        } else {
          dataSubscriptionBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder addDataSubscription(
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder builderForValue) {
        if (dataSubscriptionBuilder_ == null) {
          ensureDataSubscriptionIsMutable();
          dataSubscription_.add(builderForValue.build());
          onChanged();
        } else {
          dataSubscriptionBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder addDataSubscription(
          int index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder builderForValue) {
        if (dataSubscriptionBuilder_ == null) {
          ensureDataSubscriptionIsMutable();
          dataSubscription_.add(index, builderForValue.build());
          onChanged();
        } else {
          dataSubscriptionBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder addAllDataSubscription(
          java.lang.Iterable<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription> values) {
        if (dataSubscriptionBuilder_ == null) {
          ensureDataSubscriptionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, dataSubscription_);
          onChanged();
        } else {
          dataSubscriptionBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder clearDataSubscription() {
        if (dataSubscriptionBuilder_ == null) {
          dataSubscription_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          dataSubscriptionBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public Builder removeDataSubscription(int index) {
        if (dataSubscriptionBuilder_ == null) {
          ensureDataSubscriptionIsMutable();
          dataSubscription_.remove(index);
          onChanged();
        } else {
          dataSubscriptionBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder getDataSubscriptionBuilder(
          int index) {
        return getDataSubscriptionFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder getDataSubscriptionOrBuilder(
          int index) {
        if (dataSubscriptionBuilder_ == null) {
          return dataSubscription_.get(index);  } else {
          return dataSubscriptionBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public java.util.List<? extends com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder> 
           getDataSubscriptionOrBuilderList() {
        if (dataSubscriptionBuilder_ != null) {
          return dataSubscriptionBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(dataSubscription_);
        }
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder addDataSubscriptionBuilder() {
        return getDataSubscriptionFieldBuilder().addBuilder(
            com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.getDefaultInstance());
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder addDataSubscriptionBuilder(
          int index) {
        return getDataSubscriptionFieldBuilder().addBuilder(
            index, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.getDefaultInstance());
      }
      /**
       * <pre>
       *&#47; Multiple data set subscriptions may be collected concurrently in one PolicySubscription and sent in the same message
       * </pre>
       *
       * <code>repeated .com.fca.uconnect.global.VehicleDataAcquisitionPublish.DataSubscription dataSubscription = 1;</code>
       */
      public java.util.List<com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder> 
           getDataSubscriptionBuilderList() {
        return getDataSubscriptionFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder> 
          getDataSubscriptionFieldBuilder() {
        if (dataSubscriptionBuilder_ == null) {
          dataSubscriptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscription.Builder, com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.DataSubscriptionOrBuilder>(
                  dataSubscription_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          dataSubscription_ = null;
        }
        return dataSubscriptionBuilder_;
      }

      private java.lang.Object vehicleId_ = "";
      /**
       * <pre>
       *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
       * </pre>
       *
       * <code>optional string vehicleId = 2;</code>
       */
      public boolean hasVehicleId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
       * </pre>
       *
       * <code>optional string vehicleId = 2;</code>
       */
      public java.lang.String getVehicleId() {
        java.lang.Object ref = vehicleId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            vehicleId_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
       * </pre>
       *
       * <code>optional string vehicleId = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVehicleIdBytes() {
        java.lang.Object ref = vehicleId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          vehicleId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
       * </pre>
       *
       * <code>optional string vehicleId = 2;</code>
       */
      public Builder setVehicleId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        vehicleId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
       * </pre>
       *
       * <code>optional string vehicleId = 2;</code>
       */
      public Builder clearVehicleId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        vehicleId_ = getDefaultInstance().getVehicleId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
       * </pre>
       *
       * <code>optional string vehicleId = 2;</code>
       */
      public Builder setVehicleIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        vehicleId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString rawPayload_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 3;</code>
       */
      public boolean hasRawPayload() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 3;</code>
       */
      public com.google.protobuf.ByteString getRawPayload() {
        return rawPayload_;
      }
      /**
       * <pre>
       *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 3;</code>
       */
      public Builder setRawPayload(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        rawPayload_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#47; Optional approach to upload raw content in the VehicleDataAcquisitionPublish message.	
       * </pre>
       *
       * <code>optional bytes rawPayload = 3;</code>
       */
      public Builder clearRawPayload() {
        bitField0_ = (bitField0_ & ~0x00000004);
        rawPayload_ = getDefaultInstance().getRawPayload();
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish)
    }

    // @@protoc_insertion_point(class_scope:com.fca.uconnect.global.VehicleDataAcquisitionPublish)
    private static final com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish();
    }

    public static com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<VehicleDataAcquisitionPublish>
        PARSER = new com.google.protobuf.AbstractParser<VehicleDataAcquisitionPublish>() {
      public VehicleDataAcquisitionPublish parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new VehicleDataAcquisitionPublish(input, extensionRegistry);
      }
    };

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

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

    public com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public static final int VEHICLEDATAACQUISITIONPUBLISH_FIELD_NUMBER = 200;
  /**
   * <code>extend .com.fca.uconnect.global.UconnectAny { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.fca.uconnect.global.GlobalUconnectControl.UconnectAny,
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish> vehicleDataAcquisitionPublish = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.class,
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPublish.getDefaultInstance());
  public static final int VEHICLEDATAACQUISITIONPOLICYPUBLISH_FIELD_NUMBER = 250;
  /**
   * <code>extend .com.fca.uconnect.global.UconnectAny { ... }</code>
   */
  public static final
    com.google.protobuf.GeneratedMessage.GeneratedExtension<
      com.fca.uconnect.global.GlobalUconnectControl.UconnectAny,
      com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish> vehicleDataAcquisitionPolicyPublish = com.google.protobuf.GeneratedMessage
          .newFileScopedGeneratedExtension(
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.class,
        com.fca.uconnect.global.GlobalUconnectExtVehDataAcquisition.VehicleDataAcquisitionPolicyPublish.getDefaultInstance());
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n,Global_Uconnect_Ext_VehDataAcquisition" +
      ".proto\022\027com.fca.uconnect.global\032\035Global_" +
      "Uconnect_Control.proto\"\377\020\n#VehicleDataAc" +
      "quisitionPolicyPublish\022\017\n\007version\030\001 \002(\005\022" +
      "k\n\022policySubscription\030\002 \003(\0132O.com.fca.uc" +
      "onnect.global.VehicleDataAcquisitionPoli" +
      "cyPublish.PolicySubscription\022\021\n\ttimestam" +
      "p\030\003 \001(\003\022\021\n\tmessageId\030\004 \001(\005\022\023\n\013signatureI" +
      "d\030\005 \001(\005\022\022\n\nrawPayload\030\006 \001(\014\032E\n\013QueuePoli" +
      "cy\022\021\n\tflushRate\030\001 \001(\005\022\022\n\nuploadRate\030\002 \001(",
      "\005\022\017\n\007maxSize\030\003 \001(\005\032~\n\rDataSetSignal\022\022\n\ns" +
      "ignalName\030\001 \002(\t\022Y\n\004type\030\002 \002(\0162K.com.fca." +
      "uconnect.global.VehicleDataAcquisitionPo" +
      "licyPublish.SignalTypeEnum\032\252\002\n\016FilterCri" +
      "teria\022\024\n\nsignalName\030\001 \001(\tH\000\022\025\n\013doubleVal" +
      "ue\030\002 \001(\001H\000\022\024\n\nfloatValue\030\003 \001(\002H\000\022\024\n\nint3" +
      "2Value\030\004 \001(\005H\000\022\024\n\nint64Value\030\005 \001(\003H\000\022\025\n\013" +
      "stringValue\030\006 \001(\tH\000\022_\n\010operator\030\007 \001(\0162K." +
      "com.fca.uconnect.global.VehicleDataAcqui" +
      "sitionPolicyPublish.FilterOperatorH\000\022\020\n\006",
      "branch\030\010 \001(\005H\000\022\023\n\tbranch_if\030\t \001(\005H\000B\n\n\010c" +
      "riteria\032\337\003\n\023DataSetSubscription\022\016\n\006perio" +
      "d\030\001 \002(\005\022a\n\rdataSetSignal\030\002 \003(\0132J.com.fca" +
      ".uconnect.global.VehicleDataAcquisitionP" +
      "olicyPublish.DataSetSignal\022\021\n\tdataSetId\030" +
      "\003 \002(\003\022]\n\013queuePolicy\030\004 \001(\0132H.com.fca.uco" +
      "nnect.global.VehicleDataAcquisitionPolic" +
      "yPublish.QueuePolicy\022e\n\020filterExpression" +
      "\030\005 \003(\0132K.com.fca.uconnect.global.Vehicle" +
      "DataAcquisitionPolicyPublish.FilterCrite",
      "ria\022|\n\032differentialTSEncodingType\030\006 \002(\0162" +
      "X.com.fca.uconnect.global.VehicleDataAcq" +
      "uisitionPolicyPublish.DifferenceTimeStam" +
      "pTypeEnum\032C\n\021PolicyApplication\022\025\n\rapplic" +
      "ationId\030\001 \001(\014\022\027\n\017applicationName\030\003 \002(\t\032\236" +
      "\002\n\022PolicySubscription\022\034\n\024policySubscript" +
      "ionId\030\001 \001(\014\022\026\n\016expirationDate\030\002 \001(\003\022m\n\023d" +
      "ataSetSubscription\030\003 \003(\0132P.com.fca.uconn" +
      "ect.global.VehicleDataAcquisitionPolicyP" +
      "ublish.DataSetSubscription\022c\n\013applicatio",
      "n\030\004 \001(\0132N.com.fca.uconnect.global.Vehicl" +
      "eDataAcquisitionPolicyPublish.PolicyAppl" +
      "ication\"\217\001\n\016SignalTypeEnum\022\007\n\003RAW\020\000\022\025\n\021E" +
      "NGINEERING_UNITS\020\001\022\r\n\tENCRYPTED\020\002\022\022\n\016DIF" +
      "FERENCE_RAW\020\003\022 \n\034DIFFERENCE_ENGINEERING_" +
      "UNITS\020\004\022\030\n\024DIFFERENCE_ENCRYPTED\020\005\"_\n\033Dif" +
      "ferenceTimeStampTypeEnum\022\010\n\004NONE\020\000\022\030\n\024EX" +
      "PLICIT_DIFFERENCES\020\001\022\034\n\030FIXED_PERIOD_DIF" +
      "FERENCES\020\002\"\333\002\n\016FilterOperator\022\007\n\003NOT\020\000\022\010" +
      "\n\004LESS\020\001\022\021\n\rLESS_OR_EQUAL\020\002\022\t\n\005EQUAL\020\003\022\024",
      "\n\020GREATER_OR_EQUAL\020\004\022\013\n\007GREATER\020\005\022\r\n\tNOT" +
      "_EQUAL\020\006\022\007\n\003AND\020\007\022\006\n\002OR\020\010\022\007\n\003ADD\020\t\022\014\n\010SU" +
      "BTRACT\020\n\022\014\n\010MUTLIPLY\020\013\022\n\n\006DIVIDE\020\014\022\007\n\003MO" +
      "D\020\r\022\n\n\006LSHIFT\020\016\022\n\n\006RSHIFT\020\017\022\n\n\006BITAND\020\020\022" +
      "\t\n\005BITOR\020\021\022\n\n\006BITNOT\020\022\022\n\n\006BITXOR\020\023\022\n\n\006NE" +
      "GATE\020\024\022\016\n\nNOT_NEGATE\020\025\022\023\n\017VARIABLE_ASSIG" +
      "N\020\030\022\020\n\014VARIABLE_REF\020\031\022\021\n\rFUNCTION_CALL\020\032" +
      "\"\252\006\n\035VehicleDataAcquisitionPublish\022a\n\020da" +
      "taSubscription\030\001 \003(\0132G.com.fca.uconnect." +
      "global.VehicleDataAcquisitionPublish.Dat",
      "aSubscription\022\021\n\tvehicleId\030\002 \001(\t\022\022\n\nrawP" +
      "ayload\030\003 \001(\014\032\224\002\n\013SignalValue\022\024\n\nbytesVal" +
      "ue\030\001 \001(\014H\000\022\024\n\nint32Value\030\002 \001(\005H\000\022\024\n\nint6" +
      "4Value\030\003 \001(\003H\000\022\026\n\014booleanValue\030\004 \001(\010H\000\022\024" +
      "\n\nfloatValue\030\005 \001(\002H\000\022\025\n\013doubleValue\030\006 \001(" +
      "\001H\000\022\025\n\013stringValue\030\007 \001(\tH\000\022\025\n\013sint32Valu" +
      "e\030\010 \001(\021H\000\022\025\n\013sint64Value\030\t \001(\022H\000\022\027\n\rsfix" +
      "ed32Value\030\n \001(\017H\000\022\027\n\rsfixed64Value\030\013 \001(\020" +
      "H\000B\007\n\005value\032u\n\007DataRow\022\021\n\ttimestamp\030\001 \001(" +
      "\003\022W\n\013signalValue\030\002 \003(\0132B.com.fca.uconnec",
      "t.global.VehicleDataAcquisitionPublish.S" +
      "ignalValue\032m\n\007DataSet\022\021\n\tdataSetId\030\001 \002(\003" +
      "\022O\n\007dataRow\030\002 \003(\0132>.com.fca.uconnect.glo" +
      "bal.VehicleDataAcquisitionPublish.DataRo" +
      "w\032\201\001\n\020DataSubscription\022\034\n\024policySubscrip" +
      "tionId\030\001 \002(\014\022O\n\007dataSet\030\002 \003(\0132>.com.fca." +
      "uconnect.global.VehicleDataAcquisitionPu" +
      "blish.DataSet:\204\001\n\035vehicleDataAcquisition" +
      "Publish\022$.com.fca.uconnect.global.Uconne" +
      "ctAny\030\310\001 \001(\01326.com.fca.uconnect.global.V",
      "ehicleDataAcquisitionPublish:\220\001\n#vehicle" +
      "DataAcquisitionPolicyPublish\022$.com.fca.u" +
      "connect.global.UconnectAny\030\372\001 \001(\0132<.com." +
      "fca.uconnect.global.VehicleDataAcquisiti" +
      "onPolicyPublishP\000"
    };
    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[] {
          com.fca.uconnect.global.GlobalUconnectControl.getDescriptor(),
        }, assigner);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor,
        new java.lang.String[] { "Version", "PolicySubscription", "Timestamp", "MessageId", "SignatureId", "RawPayload", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor.getNestedTypes().get(0);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_QueuePolicy_descriptor,
        new java.lang.String[] { "FlushRate", "UploadRate", "MaxSize", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor.getNestedTypes().get(1);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSignal_descriptor,
        new java.lang.String[] { "SignalName", "Type", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor.getNestedTypes().get(2);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_FilterCriteria_descriptor,
        new java.lang.String[] { "SignalName", "DoubleValue", "FloatValue", "Int32Value", "Int64Value", "StringValue", "Operator", "Branch", "BranchIf", "Criteria", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor.getNestedTypes().get(3);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_DataSetSubscription_descriptor,
        new java.lang.String[] { "Period", "DataSetSignal", "DataSetId", "QueuePolicy", "FilterExpression", "DifferentialTSEncodingType", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor.getNestedTypes().get(4);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicyApplication_descriptor,
        new java.lang.String[] { "ApplicationId", "ApplicationName", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_descriptor.getNestedTypes().get(5);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPolicyPublish_PolicySubscription_descriptor,
        new java.lang.String[] { "PolicySubscriptionId", "ExpirationDate", "DataSetSubscription", "Application", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor,
        new java.lang.String[] { "DataSubscription", "VehicleId", "RawPayload", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor.getNestedTypes().get(0);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_SignalValue_descriptor,
        new java.lang.String[] { "BytesValue", "Int32Value", "Int64Value", "BooleanValue", "FloatValue", "DoubleValue", "StringValue", "Sint32Value", "Sint64Value", "Sfixed32Value", "Sfixed64Value", "Value", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor.getNestedTypes().get(1);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataRow_descriptor,
        new java.lang.String[] { "Timestamp", "SignalValue", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor.getNestedTypes().get(2);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSet_descriptor,
        new java.lang.String[] { "DataSetId", "DataRow", });
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_descriptor =
      internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_descriptor.getNestedTypes().get(3);
    internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_fca_uconnect_global_VehicleDataAcquisitionPublish_DataSubscription_descriptor,
        new java.lang.String[] { "PolicySubscriptionId", "DataSet", });
    vehicleDataAcquisitionPublish.internalInit(descriptor.getExtensions().get(0));
    vehicleDataAcquisitionPolicyPublish.internalInit(descriptor.getExtensions().get(1));
    com.fca.uconnect.global.GlobalUconnectControl.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
