// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_Provision.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Com.Fca.Uconnect.Global {

  /// <summary>Holder for reflection information generated from Global_Uconnect_Ext_Provision.proto</summary>
  public static partial class GlobalUconnectExtProvisionReflection {

    #region Descriptor
    /// <summary>File descriptor for Global_Uconnect_Ext_Provision.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static GlobalUconnectExtProvisionReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiNHbG9iYWxfVWNvbm5lY3RfRXh0X1Byb3Zpc2lvbi5wcm90bxIXY29tLmZj",
            "YS51Y29ubmVjdC5nbG9iYWwaHEdsb2JhbF9VY29ubmVjdF9EZXZpY2UucHJv",
            "dG8aGUdsb2JhbF9VY29ubmVjdF9EUk0ucHJvdG8ipAEKGEluaXRpYXRlUHJv",
            "dmlzaW9uaW5nUHVzaBJVCgpwYXJhbWV0ZXJzGAEgAygLMkEuY29tLmZjYS51",
            "Y29ubmVjdC5nbG9iYWwuSW5pdGlhdGVQcm92aXNpb25pbmdQdXNoLlBhcmFt",
            "ZXRlcnNFbnRyeRoxCg9QYXJhbWV0ZXJzRW50cnkSCwoDa2V5GAEgASgJEg0K",
            "BXZhbHVlGAIgASgJOgI4ASL8AwoTUHJvdmlzaW9uaW5nUmVxdWVzdBIRCgl2",
            "ZWhpY2xlSWQYASABKAkSDwoHRHJtSGFzaBgFIAEoDBJmChVhZGRpdGlvbmFs",
            "TW9kZW1QYXJhbXMYAyADKAsyRy5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5Q",
            "cm92aXNpb25pbmdSZXF1ZXN0LkFkZGl0aW9uYWxNb2RlbVBhcmFtc0VudHJ5",
            "EkcKBnJlYXNvbhgEIAEoDjI3LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlBy",
            "b3Zpc2lvbmluZ1JlcXVlc3QuUmVhc29uRW51bRo8ChpBZGRpdGlvbmFsTW9k",
            "ZW1QYXJhbXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgB",
            "ItEBCgpSZWFzb25FbnVtEhgKFElHTklUSU9OX0NZQ0xFX0NIRUNLEAASDQoJ",
            "VEJNX0ZMQVNIEAESDAoISFVfRkxBU0gQAhINCglPTl9ERU1BTkQQAxISCg5N",
            "SVNETl9NSVNNQVRDSBAEEhUKEURJU0NSRVBFTkNZX0NIRUNLEAUSFAoQU09G",
            "VFdBUkVfUkVGUkVTSBAGEgsKB0hVX1NXQVAQBxIMCghUQk1fU1dBUBAIEg4K",
            "CkVOUk9MTE1FTlQQCRIRCg1SRVRVUk5fVE9fTkVXEAoiwgEKFFByb3Zpc2lv",
            "bmluZ1Jlc3BvbnNlElAKDHJlc3BvbnNlRW51bRgBIAEoDjI6LmNvbS5mY2Eu",
            "dWNvbm5lY3QuZ2xvYmFsLlByb3Zpc2lvbmluZ1Jlc3BvbnNlLlJlc3BvbnNl",
            "RW51bRITCgtpc1RyYW5zaWVudBgCIAEoCBIZChFmYWlsdXJlUmVhc29uQ29k",
            "ZRgDIAEoBSIoCgxSZXNwb25zZUVudW0SCwoHU1VDQ0VTUxAAEgsKB0ZBSUxV",
            "UkUQASL+AQoQUHJvdmlzaW9uaW5nUHVzaBJNChNzZXJ2aWNlU3Vic2NyaXB0",
            "aW9uGAEgASgLMjAuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuU2VydmljZVN1",
            "YnNjcmlwdGlvbkluZm8SKQoDZHJtGAIgASgLMhwuY29tLmZjYS51Y29ubmVj",
            "dC5nbG9iYWwuRFJNEhEKCXRpbWVzdGFtcBgDIAEoAxIRCgltZXNzYWdlSWQY",
            "BCABKAUSEwoLc2lnbmF0dXJlSWQYBSABKAUSNQoHYmltZFBTSxgGIAEoCzIk",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkJJTURQU0tJbmZvItwBChNQcm92",
            "aXNpb25pbmdQdXNoQWNrElsKCHJlc3BvbnNlGAEgASgOMkkuY29tLmZjYS51",
            "Y29ubmVjdC5nbG9iYWwuUHJvdmlzaW9uaW5nUHVzaEFjay5Qcm92aXNpb25p",
            "bmdQdXNoUmVzcG9uc2VFbnVtEhMKC2lzVHJhbnNpZW50GAIgASgIEhkKEWZh",
            "aWx1cmVSZWFzb25Db2RlGAMgASgFIjgKHFByb3Zpc2lvbmluZ1B1c2hSZXNw",
            "b25zZUVudW0SCwoHU1VDQ0VTUxAAEgsKB0ZBSUxVUkUQASKiCAoSU2Vydmlj",
            "ZURlc2NyaXB0aW9uElAKC3NlcnZpY2VUeXBlGAEgASgOMjsuY29tLmZjYS51",
            "Y29ubmVjdC5nbG9iYWwuU2VydmljZURlc2NyaXB0aW9uLlNlcnZpY2VUeXBl",
            "RW51bRISCgpleHBpcmVUaW1lGAIgASgDEmMKFGFkZGl0aW9uYWxQYXJhbWV0",
            "ZXJzGAMgAygLMkUuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuU2VydmljZURl",
            "c2NyaXB0aW9uLkFkZGl0aW9uYWxQYXJhbWV0ZXJzRW50cnkSQgoGc3RhdHVz",
            "GAQgASgOMjIuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuU2VydmljZURlc2Ny",
            "aXB0aW9uLlN0YXR1cxIPCgd2ZXJzaW9uGAUgASgFEhEKCWNvbnRlbnRJZBgG",
            "IAEoBRIVCg1hcHBJZGVudGlmaWVyGAcgASgJEhcKD2FwcExhdW5jaGVyTWFz",
            "axgIIAEoBRIVCg1pbnN0YWxsZXJUeXBlGAkgASgJEhEKCWFjY291bnREThgK",
            "IAEoCRISCgpmaWxlTGVuZ3RoGAsgASgFEhQKDGZpbGVDaGVja3N1bRgMIAEo",
            "BRITCgtmZWF0dXJlTWFzaxgNIAEoCRIoCiBleHBpcmV4VGltZVNwYW5CZWdp",
            "VGltZVNwYW5CZWdpbhgOIAEoAxIZChFleHBpcmVUaW1lU3BhbkVuZBgPIAEo",
            "AxIPCgdlbWFpbElkGBAgASgJGjsKGUFkZGl0aW9uYWxQYXJhbWV0ZXJzRW50",
            "cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKIAwoPU2Vydmlj",
            "ZVR5cGVFbnVtEg8KC1dJRklIT1RTUE9UEAASCQoFRUNBTEwQARISCg5ST0FE",
            "U0lERUFTU0lTVBACEhoKFlRIRUZUQUxBUk1OT1RJRklDQVRJT04QAxIXChNT",
            "VE9MRU5WRUhJQ0xFQVNTSVNUEAQSGAoUU0VORERFU1RJTkFUSU9OVE9DQVIQ",
            "BRIRCg1WRUhJQ0xFRklOREVSEAYSFQoRUkVNT1RFRE9PUkNPTlRST0wQBxIV",
            "ChFSRU1PVEVFTkdJTkVTVEFSVBAIEhYKElJFTU9URUhPUk5BTkRGTEFTSBAJ",
            "EhAKDFJBRElPUFJFU0VUUxAKEhIKDk1VU0lDRkFWT1JJVEVTEAsSDwoLVEVN",
            "UEVSQVRVUkUQDBIVChFIRUFURURDT09MRURTRUFUUxANEhcKE0hFQVRFRFNU",
            "RUVSSU5HV0hFRUwQDhIUChBDT05ORUNURURWRUhJQ0xFEA8SCAoEU1FERhAQ",
            "EgcKA0ZUTRAREg0KCUVWREFUQUNIThASIiIKBlN0YXR1cxIMCghJTkFDVElW",
            "RRAAEgoKBkFDVElWRRABIlgKF1NlcnZpY2VTdWJzY3JpcHRpb25JbmZvEj0K",
            "CHNlcnZpY2VzGAEgAygLMisuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuU2Vy",
            "dmljZURlc2NyaXB0aW9uIogBCgtCSU1EUFNLSW5mbxJACgpkZXZpY2VLZXlz",
            "GAEgAygLMiwuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuQklNRFBTS0luZm8u",
            "QklNRFBTSxo3CgdCSU1EUFNLEhYKDm1vYmlsZURldmljZUlkGAEgASgJEhQK",
            "DHByZVNoYXJlZEtleRgCIAEoDFAAUAFiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectDeviceReflection.Descriptor, global::Com.Fca.Uconnect.Global.GlobalUconnectDRMReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.InitiateProvisioningPush), global::Com.Fca.Uconnect.Global.InitiateProvisioningPush.Parser, new[]{ "Parameters" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ProvisioningRequest), global::Com.Fca.Uconnect.Global.ProvisioningRequest.Parser, new[]{ "VehicleId", "DrmHash", "AdditionalModemParams", "Reason" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ProvisioningRequest.Types.ReasonEnum) }, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ProvisioningResponse), global::Com.Fca.Uconnect.Global.ProvisioningResponse.Parser, new[]{ "ResponseEnum", "IsTransient", "FailureReasonCode" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ProvisioningResponse.Types.ResponseEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ProvisioningPush), global::Com.Fca.Uconnect.Global.ProvisioningPush.Parser, new[]{ "ServiceSubscription", "Drm", "Timestamp", "MessageId", "SignatureId", "BimdPSK" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ProvisioningPushAck), global::Com.Fca.Uconnect.Global.ProvisioningPushAck.Parser, new[]{ "Response", "IsTransient", "FailureReasonCode" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ProvisioningPushAck.Types.ProvisioningPushResponseEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ServiceDescription), global::Com.Fca.Uconnect.Global.ServiceDescription.Parser, new[]{ "ServiceType", "ExpireTime", "AdditionalParameters", "Status", "Version", "ContentId", "AppIdentifier", "AppLauncherMask", "InstallerType", "AccountDN", "FileLength", "FileChecksum", "FeatureMask", "ExpirexTimeSpanBegiTimeSpanBegin", "ExpireTimeSpanEnd", "EmailId" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ServiceDescription.Types.ServiceTypeEnum), typeof(global::Com.Fca.Uconnect.Global.ServiceDescription.Types.Status) }, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ServiceSubscriptionInfo), global::Com.Fca.Uconnect.Global.ServiceSubscriptionInfo.Parser, new[]{ "Services" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.BIMDPSKInfo), global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Parser, new[]{ "DeviceKeys" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK), global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK.Parser, new[]{ "MobileDeviceId", "PreSharedKey" }, null, null, null)})
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message is to initiate a New Registration from SDP.
  ///
  ///&lt;div class=exmsg-main>
  /// &lt;h4>InitiateProvisioningPush Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1488743306361
  /// 		messageId: 2
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.initiateProvisioningPush]
  /// 		 {
  ///
  /// 		 }
  /// 		}
  ///  &lt;/code>
  /// &lt;/div>
  ///&lt;/div>
  /// </summary>
  public sealed partial class InitiateProvisioningPush : pb::IMessage<InitiateProvisioningPush> {
    private static readonly pb::MessageParser<InitiateProvisioningPush> _parser = new pb::MessageParser<InitiateProvisioningPush>(() => new InitiateProvisioningPush());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<InitiateProvisioningPush> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public InitiateProvisioningPush() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public InitiateProvisioningPush(InitiateProvisioningPush other) : this() {
      parameters_ = other.parameters_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public InitiateProvisioningPush Clone() {
      return new InitiateProvisioningPush(this);
    }

    /// <summary>Field number for the "parameters" field.</summary>
    public const int ParametersFieldNumber = 1;
    private static readonly pbc::MapField<string, string>.Codec _map_parameters_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 10);
    private readonly pbc::MapField<string, string> parameters_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> Parameters {
      get { return parameters_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as InitiateProvisioningPush);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(InitiateProvisioningPush other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!Parameters.Equals(other.Parameters)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= Parameters.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      parameters_.WriteTo(output, _map_parameters_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += parameters_.CalculateSize(_map_parameters_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(InitiateProvisioningPush other) {
      if (other == null) {
        return;
      }
      parameters_.Add(other.parameters_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            parameters_.AddEntriesFrom(input, _map_parameters_codec);
            break;
          }
        }
      }
    }

  }

  public sealed partial class ProvisioningRequest : pb::IMessage<ProvisioningRequest> {
    private static readonly pb::MessageParser<ProvisioningRequest> _parser = new pb::MessageParser<ProvisioningRequest>(() => new ProvisioningRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ProvisioningRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningRequest(ProvisioningRequest other) : this() {
      vehicleId_ = other.vehicleId_;
      drmHash_ = other.drmHash_;
      additionalModemParams_ = other.additionalModemParams_.Clone();
      reason_ = other.reason_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningRequest Clone() {
      return new ProvisioningRequest(this);
    }

    /// <summary>Field number for the "vehicleId" field.</summary>
    public const int VehicleIdFieldNumber = 1;
    private string vehicleId_ = "";
    /// <summary>
    //// VIN or other unique identifier for the vehicle this Telematics Unit is installed in.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string VehicleId {
      get { return vehicleId_; }
      set {
        vehicleId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "DrmHash" field.</summary>
    public const int DrmHashFieldNumber = 5;
    private pb::ByteString drmHash_ = pb::ByteString.Empty;
    /// <summary>
    /// Device device = 2;
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString DrmHash {
      get { return drmHash_; }
      set {
        drmHash_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "additionalModemParams" field.</summary>
    public const int AdditionalModemParamsFieldNumber = 3;
    private static readonly pbc::MapField<string, string>.Codec _map_additionalModemParams_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 26);
    private readonly pbc::MapField<string, string> additionalModemParams_ = new pbc::MapField<string, string>();
    /// <summary>
    //// This can be used as key value pair for additional Modem Identifiers.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> AdditionalModemParams {
      get { return additionalModemParams_; }
    }

    /// <summary>Field number for the "reason" field.</summary>
    public const int ReasonFieldNumber = 4;
    private global::Com.Fca.Uconnect.Global.ProvisioningRequest.Types.ReasonEnum reason_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ProvisioningRequest.Types.ReasonEnum Reason {
      get { return reason_; }
      set {
        reason_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ProvisioningRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ProvisioningRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VehicleId != other.VehicleId) return false;
      if (DrmHash != other.DrmHash) return false;
      if (!AdditionalModemParams.Equals(other.AdditionalModemParams)) return false;
      if (Reason != other.Reason) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (VehicleId.Length != 0) hash ^= VehicleId.GetHashCode();
      if (DrmHash.Length != 0) hash ^= DrmHash.GetHashCode();
      hash ^= AdditionalModemParams.GetHashCode();
      if (Reason != 0) hash ^= Reason.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (VehicleId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VehicleId);
      }
      additionalModemParams_.WriteTo(output, _map_additionalModemParams_codec);
      if (Reason != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Reason);
      }
      if (DrmHash.Length != 0) {
        output.WriteRawTag(42);
        output.WriteBytes(DrmHash);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (VehicleId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VehicleId);
      }
      if (DrmHash.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(DrmHash);
      }
      size += additionalModemParams_.CalculateSize(_map_additionalModemParams_codec);
      if (Reason != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Reason);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ProvisioningRequest other) {
      if (other == null) {
        return;
      }
      if (other.VehicleId.Length != 0) {
        VehicleId = other.VehicleId;
      }
      if (other.DrmHash.Length != 0) {
        DrmHash = other.DrmHash;
      }
      additionalModemParams_.Add(other.additionalModemParams_);
      if (other.Reason != 0) {
        Reason = other.Reason;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            VehicleId = input.ReadString();
            break;
          }
          case 26: {
            additionalModemParams_.AddEntriesFrom(input, _map_additionalModemParams_codec);
            break;
          }
          case 32: {
            reason_ = (global::Com.Fca.Uconnect.Global.ProvisioningRequest.Types.ReasonEnum) input.ReadEnum();
            break;
          }
          case 42: {
            DrmHash = input.ReadBytes();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ProvisioningRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ReasonEnum {
        /// <summary>
        //// IGNITION_CYCLE_CHECK
        /// </summary>
        [pbr::OriginalName("IGNITION_CYCLE_CHECK")] IgnitionCycleCheck = 0,
        /// <summary>
        //// TBM_FLASH
        /// </summary>
        [pbr::OriginalName("TBM_FLASH")] TbmFlash = 1,
        /// <summary>
        //// HU_FLASH
        /// </summary>
        [pbr::OriginalName("HU_FLASH")] HuFlash = 2,
        /// <summary>
        //// ON_DEMAND
        /// </summary>
        [pbr::OriginalName("ON_DEMAND")] OnDemand = 3,
        /// <summary>
        //// MISDN_MISMATCH
        /// </summary>
        [pbr::OriginalName("MISDN_MISMATCH")] MisdnMismatch = 4,
        /// <summary>
        //// DISCREPENCY_CHECK
        /// </summary>
        [pbr::OriginalName("DISCREPENCY_CHECK")] DiscrepencyCheck = 5,
        /// <summary>
        //// SOFTWARE_REFRESH
        /// </summary>
        [pbr::OriginalName("SOFTWARE_REFRESH")] SoftwareRefresh = 6,
        /// <summary>
        //// HU_SWAP
        /// </summary>
        [pbr::OriginalName("HU_SWAP")] HuSwap = 7,
        /// <summary>
        ////TBM_SWAP
        /// </summary>
        [pbr::OriginalName("TBM_SWAP")] TbmSwap = 8,
        /// <summary>
        //// ENROLLMENT
        /// </summary>
        [pbr::OriginalName("ENROLLMENT")] Enrollment = 9,
        /// <summary>
        ////
        /// </summary>
        [pbr::OriginalName("RETURN_TO_NEW")] ReturnToNew = 10,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is sent as response to ProvisionRequest.
  ///&lt;div class=exmsg-main>
  ///  &lt;h4>ProvisioningResponse Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1488746450628
  /// 		messageId: 101
  /// 		correlationId: 301
  /// 		messages
  /// 		{
  /// 		 provisioningResponse
  /// 		 {
  /// 			responseEnum: SUCCESS
  /// 		 }
  /// 		}
  ///  &lt;/code>
  /// &lt;/div>
  ///&lt;/div>
  /// </summary>
  public sealed partial class ProvisioningResponse : pb::IMessage<ProvisioningResponse> {
    private static readonly pb::MessageParser<ProvisioningResponse> _parser = new pb::MessageParser<ProvisioningResponse>(() => new ProvisioningResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ProvisioningResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningResponse(ProvisioningResponse other) : this() {
      responseEnum_ = other.responseEnum_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningResponse Clone() {
      return new ProvisioningResponse(this);
    }

    /// <summary>Field number for the "responseEnum" field.</summary>
    public const int ResponseEnumFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ProvisioningResponse.Types.ResponseEnum responseEnum_ = 0;
    /// <summary>
    //// Success or Failure Response
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ProvisioningResponse.Types.ResponseEnum ResponseEnum {
      get { return responseEnum_; }
      set {
        responseEnum_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 2;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 3;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ProvisioningResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ProvisioningResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ResponseEnum != other.ResponseEnum) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (ResponseEnum != 0) hash ^= ResponseEnum.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ResponseEnum != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) ResponseEnum);
      }
      if (IsTransient != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailureReasonCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (ResponseEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ResponseEnum);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ProvisioningResponse other) {
      if (other == null) {
        return;
      }
      if (other.ResponseEnum != 0) {
        ResponseEnum = other.ResponseEnum;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            responseEnum_ = (global::Com.Fca.Uconnect.Global.ProvisioningResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 16: {
            IsTransient = input.ReadBool();
            break;
          }
          case 24: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ProvisioningResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        /// <summary>
        //// Response successful for provisioning.
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 0,
        /// <summary>
        //// Response failure for provisioning.
        /// </summary>
        [pbr::OriginalName("FAILURE")] Failure = 1,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This is for asynchronously pushing the provisioning with services  and/or BIMDPSKInfo.
  ///&lt;div class=exmsg-main>
  /// &lt;h4>ProvisioningPush Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1488828296489
  /// 		messageId: 102
  ///		correlationId: 301
  /// 		messages
  /// 		{
  /// 		provisioningPush
  /// 		 {
  /// 		   drm
  ///         {
  ///           drmFile:"fgnbooe8y73nfmlsi0iufnjej876reef=="
  /// 		   }
  /// 		 }
  /// 		}
  /// &lt;/code>
  /// &lt;/div>
  ///&lt;/div>
  /// </summary>
  public sealed partial class ProvisioningPush : pb::IMessage<ProvisioningPush> {
    private static readonly pb::MessageParser<ProvisioningPush> _parser = new pb::MessageParser<ProvisioningPush>(() => new ProvisioningPush());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ProvisioningPush> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningPush() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningPush(ProvisioningPush other) : this() {
      ServiceSubscription = other.serviceSubscription_ != null ? other.ServiceSubscription.Clone() : null;
      Drm = other.drm_ != null ? other.Drm.Clone() : null;
      timestamp_ = other.timestamp_;
      messageId_ = other.messageId_;
      signatureId_ = other.signatureId_;
      BimdPSK = other.bimdPSK_ != null ? other.BimdPSK.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningPush Clone() {
      return new ProvisioningPush(this);
    }

    /// <summary>Field number for the "serviceSubscription" field.</summary>
    public const int ServiceSubscriptionFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ServiceSubscriptionInfo serviceSubscription_;
    /// <summary>
    ////Added Params to support APAC
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ServiceSubscriptionInfo ServiceSubscription {
      get { return serviceSubscription_; }
      set {
        serviceSubscription_ = value;
      }
    }

    /// <summary>Field number for the "drm" field.</summary>
    public const int DrmFieldNumber = 2;
    private global::Com.Fca.Uconnect.Global.DRM drm_;
    /// <summary>
    //// DRM content to support provisioning applications.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.DRM Drm {
      get { return drm_; }
      set {
        drm_ = value;
      }
    }

    /// <summary>Field number for the "timestamp" field.</summary>
    public const int TimestampFieldNumber = 3;
    private long timestamp_;
    /// <summary>
    ////Added for signature correlation to message
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long Timestamp {
      get { return timestamp_; }
      set {
        timestamp_ = value;
      }
    }

    /// <summary>Field number for the "messageId" field.</summary>
    public const int MessageIdFieldNumber = 4;
    private int messageId_;
    /// <summary>
    ////Added for signature correlation to message
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int MessageId {
      get { return messageId_; }
      set {
        messageId_ = value;
      }
    }

    /// <summary>Field number for the "signatureId" field.</summary>
    public const int SignatureIdFieldNumber = 5;
    private int signatureId_;
    /// <summary>
    ////Added for signature correlation to message
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int SignatureId {
      get { return signatureId_; }
      set {
        signatureId_ = value;
      }
    }

    /// <summary>Field number for the "bimdPSK" field.</summary>
    public const int BimdPSKFieldNumber = 6;
    private global::Com.Fca.Uconnect.Global.BIMDPSKInfo bimdPSK_;
    /// <summary>
    ////Provides TLS-PSK Tokens for secure connection with Mobile Devices.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.BIMDPSKInfo BimdPSK {
      get { return bimdPSK_; }
      set {
        bimdPSK_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ProvisioningPush);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ProvisioningPush other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ServiceSubscription, other.ServiceSubscription)) return false;
      if (!object.Equals(Drm, other.Drm)) return false;
      if (Timestamp != other.Timestamp) return false;
      if (MessageId != other.MessageId) return false;
      if (SignatureId != other.SignatureId) return false;
      if (!object.Equals(BimdPSK, other.BimdPSK)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (serviceSubscription_ != null) hash ^= ServiceSubscription.GetHashCode();
      if (drm_ != null) hash ^= Drm.GetHashCode();
      if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
      if (MessageId != 0) hash ^= MessageId.GetHashCode();
      if (SignatureId != 0) hash ^= SignatureId.GetHashCode();
      if (bimdPSK_ != null) hash ^= BimdPSK.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (serviceSubscription_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ServiceSubscription);
      }
      if (drm_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Drm);
      }
      if (Timestamp != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(Timestamp);
      }
      if (MessageId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(MessageId);
      }
      if (SignatureId != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(SignatureId);
      }
      if (bimdPSK_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(BimdPSK);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (serviceSubscription_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ServiceSubscription);
      }
      if (drm_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Drm);
      }
      if (Timestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
      }
      if (MessageId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MessageId);
      }
      if (SignatureId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(SignatureId);
      }
      if (bimdPSK_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BimdPSK);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ProvisioningPush other) {
      if (other == null) {
        return;
      }
      if (other.serviceSubscription_ != null) {
        if (serviceSubscription_ == null) {
          serviceSubscription_ = new global::Com.Fca.Uconnect.Global.ServiceSubscriptionInfo();
        }
        ServiceSubscription.MergeFrom(other.ServiceSubscription);
      }
      if (other.drm_ != null) {
        if (drm_ == null) {
          drm_ = new global::Com.Fca.Uconnect.Global.DRM();
        }
        Drm.MergeFrom(other.Drm);
      }
      if (other.Timestamp != 0L) {
        Timestamp = other.Timestamp;
      }
      if (other.MessageId != 0) {
        MessageId = other.MessageId;
      }
      if (other.SignatureId != 0) {
        SignatureId = other.SignatureId;
      }
      if (other.bimdPSK_ != null) {
        if (bimdPSK_ == null) {
          bimdPSK_ = new global::Com.Fca.Uconnect.Global.BIMDPSKInfo();
        }
        BimdPSK.MergeFrom(other.BimdPSK);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (serviceSubscription_ == null) {
              serviceSubscription_ = new global::Com.Fca.Uconnect.Global.ServiceSubscriptionInfo();
            }
            input.ReadMessage(serviceSubscription_);
            break;
          }
          case 18: {
            if (drm_ == null) {
              drm_ = new global::Com.Fca.Uconnect.Global.DRM();
            }
            input.ReadMessage(drm_);
            break;
          }
          case 24: {
            Timestamp = input.ReadInt64();
            break;
          }
          case 32: {
            MessageId = input.ReadInt32();
            break;
          }
          case 40: {
            SignatureId = input.ReadInt32();
            break;
          }
          case 50: {
            if (bimdPSK_ == null) {
              bimdPSK_ = new global::Com.Fca.Uconnect.Global.BIMDPSKInfo();
            }
            input.ReadMessage(bimdPSK_);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ///*
  /// This message is to acknowledge ProvisioningPush message .
  ///&lt;div class=exmsg-main>
  /// &lt;h4>ProvisioningPushAck Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1488828296500
  /// 		messageId: 302
  ///		correlationId: 102
  /// 		messages
  /// 		{
  /// 			provisioningPushAck
  /// 		 {
  /// 		   response:SUCCESS
  /// 		 }
  /// 		}
  /// &lt;/code>
  /// &lt;/div>
  ///&lt;/div>
  /// </summary>
  public sealed partial class ProvisioningPushAck : pb::IMessage<ProvisioningPushAck> {
    private static readonly pb::MessageParser<ProvisioningPushAck> _parser = new pb::MessageParser<ProvisioningPushAck>(() => new ProvisioningPushAck());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ProvisioningPushAck> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningPushAck() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningPushAck(ProvisioningPushAck other) : this() {
      response_ = other.response_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ProvisioningPushAck Clone() {
      return new ProvisioningPushAck(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ProvisioningPushAck.Types.ProvisioningPushResponseEnum response_ = 0;
    /// <summary>
    //// Success or Failure Response
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ProvisioningPushAck.Types.ProvisioningPushResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 2;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 3;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ProvisioningPushAck);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ProvisioningPushAck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Response != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Response);
      }
      if (IsTransient != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailureReasonCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ProvisioningPushAck other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            response_ = (global::Com.Fca.Uconnect.Global.ProvisioningPushAck.Types.ProvisioningPushResponseEnum) input.ReadEnum();
            break;
          }
          case 16: {
            IsTransient = input.ReadBool();
            break;
          }
          case 24: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ProvisioningPushAck message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ProvisioningPushResponseEnum {
        [pbr::OriginalName("SUCCESS")] Success = 0,
        [pbr::OriginalName("FAILURE")] Failure = 1,
      }

    }
    #endregion

  }

  /// <summary>
  ////**
  ///* This Message represents the Service name and expiration time that Service is going to expire
  ///*/
  /// </summary>
  public sealed partial class ServiceDescription : pb::IMessage<ServiceDescription> {
    private static readonly pb::MessageParser<ServiceDescription> _parser = new pb::MessageParser<ServiceDescription>(() => new ServiceDescription());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ServiceDescription> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ServiceDescription() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ServiceDescription(ServiceDescription other) : this() {
      serviceType_ = other.serviceType_;
      expireTime_ = other.expireTime_;
      additionalParameters_ = other.additionalParameters_.Clone();
      status_ = other.status_;
      version_ = other.version_;
      contentId_ = other.contentId_;
      appIdentifier_ = other.appIdentifier_;
      appLauncherMask_ = other.appLauncherMask_;
      installerType_ = other.installerType_;
      accountDN_ = other.accountDN_;
      fileLength_ = other.fileLength_;
      fileChecksum_ = other.fileChecksum_;
      featureMask_ = other.featureMask_;
      expirexTimeSpanBegiTimeSpanBegin_ = other.expirexTimeSpanBegiTimeSpanBegin_;
      expireTimeSpanEnd_ = other.expireTimeSpanEnd_;
      emailId_ = other.emailId_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ServiceDescription Clone() {
      return new ServiceDescription(this);
    }

    /// <summary>Field number for the "serviceType" field.</summary>
    public const int ServiceTypeFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ServiceDescription.Types.ServiceTypeEnum serviceType_ = 0;
    /// <summary>
    //// The type of service being provisioned/activated
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ServiceDescription.Types.ServiceTypeEnum ServiceType {
      get { return serviceType_; }
      set {
        serviceType_ = value;
      }
    }

    /// <summary>Field number for the "expireTime" field.</summary>
    public const int ExpireTimeFieldNumber = 2;
    private long expireTime_;
    /// <summary>
    //// The service being provisioned/activated is considered active from the time this message is received until the expire time, expressed in milliseconds elapsed since 1 January 1970 00:00:00 UTC.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ExpireTime {
      get { return expireTime_; }
      set {
        expireTime_ = value;
      }
    }

    /// <summary>Field number for the "additionalParameters" field.</summary>
    public const int AdditionalParametersFieldNumber = 3;
    private static readonly pbc::MapField<string, string>.Codec _map_additionalParameters_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 26);
    private readonly pbc::MapField<string, string> additionalParameters_ = new pbc::MapField<string, string>();
    /// <summary>
    ////This is for Configuration Parameters as a key-value pair like Call Center number,Server URL.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> AdditionalParameters {
      get { return additionalParameters_; }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 4;
    private global::Com.Fca.Uconnect.Global.ServiceDescription.Types.Status status_ = 0;
    /// <summary>
    //// This is to define whether service is Active/InActive.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ServiceDescription.Types.Status Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 5;
    private int version_;
    /// <summary>
    //// Service version number 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Version {
      get { return version_; }
      set {
        version_ = value;
      }
    }

    /// <summary>Field number for the "contentId" field.</summary>
    public const int ContentIdFieldNumber = 6;
    private int contentId_;
    /// <summary>
    //// Content ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ContentId {
      get { return contentId_; }
      set {
        contentId_ = value;
      }
    }

    /// <summary>Field number for the "appIdentifier" field.</summary>
    public const int AppIdentifierFieldNumber = 7;
    private string appIdentifier_ = "";
    /// <summary>
    //// Application ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AppIdentifier {
      get { return appIdentifier_; }
      set {
        appIdentifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "appLauncherMask" field.</summary>
    public const int AppLauncherMaskFieldNumber = 8;
    private int appLauncherMask_;
    /// <summary>
    //// App Launcher Mask (auto start, manual)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int AppLauncherMask {
      get { return appLauncherMask_; }
      set {
        appLauncherMask_ = value;
      }
    }

    /// <summary>Field number for the "installerType" field.</summary>
    public const int InstallerTypeFieldNumber = 9;
    private string installerType_ = "";
    /// <summary>
    //// Installer type 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string InstallerType {
      get { return installerType_; }
      set {
        installerType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "accountDN" field.</summary>
    public const int AccountDNFieldNumber = 10;
    private string accountDN_ = "";
    /// <summary>
    //// Account DN 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AccountDN {
      get { return accountDN_; }
      set {
        accountDN_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "fileLength" field.</summary>
    public const int FileLengthFieldNumber = 11;
    private int fileLength_;
    /// <summary>
    //// fileLength
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FileLength {
      get { return fileLength_; }
      set {
        fileLength_ = value;
      }
    }

    /// <summary>Field number for the "fileChecksum" field.</summary>
    public const int FileChecksumFieldNumber = 12;
    private int fileChecksum_;
    /// <summary>
    //// Checksum data
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FileChecksum {
      get { return fileChecksum_; }
      set {
        fileChecksum_ = value;
      }
    }

    /// <summary>Field number for the "featureMask" field.</summary>
    public const int FeatureMaskFieldNumber = 13;
    private string featureMask_ = "";
    /// <summary>
    //// Feature Mask
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string FeatureMask {
      get { return featureMask_; }
      set {
        featureMask_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "expirexTimeSpanBegiTimeSpanBegin" field.</summary>
    public const int ExpirexTimeSpanBegiTimeSpanBeginFieldNumber = 14;
    private long expirexTimeSpanBegiTimeSpanBegin_;
    /// <summary>
    //// DRM expiration Time Begin
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ExpirexTimeSpanBegiTimeSpanBegin {
      get { return expirexTimeSpanBegiTimeSpanBegin_; }
      set {
        expirexTimeSpanBegiTimeSpanBegin_ = value;
      }
    }

    /// <summary>Field number for the "expireTimeSpanEnd" field.</summary>
    public const int ExpireTimeSpanEndFieldNumber = 15;
    private long expireTimeSpanEnd_;
    /// <summary>
    //// DRM  Time Span End
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ExpireTimeSpanEnd {
      get { return expireTimeSpanEnd_; }
      set {
        expireTimeSpanEnd_ = value;
      }
    }

    /// <summary>Field number for the "emailId" field.</summary>
    public const int EmailIdFieldNumber = 16;
    private string emailId_ = "";
    /// <summary>
    ////Email ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string EmailId {
      get { return emailId_; }
      set {
        emailId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ServiceDescription);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ServiceDescription other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServiceType != other.ServiceType) return false;
      if (ExpireTime != other.ExpireTime) return false;
      if (!AdditionalParameters.Equals(other.AdditionalParameters)) return false;
      if (Status != other.Status) return false;
      if (Version != other.Version) return false;
      if (ContentId != other.ContentId) return false;
      if (AppIdentifier != other.AppIdentifier) return false;
      if (AppLauncherMask != other.AppLauncherMask) return false;
      if (InstallerType != other.InstallerType) return false;
      if (AccountDN != other.AccountDN) return false;
      if (FileLength != other.FileLength) return false;
      if (FileChecksum != other.FileChecksum) return false;
      if (FeatureMask != other.FeatureMask) return false;
      if (ExpirexTimeSpanBegiTimeSpanBegin != other.ExpirexTimeSpanBegiTimeSpanBegin) return false;
      if (ExpireTimeSpanEnd != other.ExpireTimeSpanEnd) return false;
      if (EmailId != other.EmailId) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (ServiceType != 0) hash ^= ServiceType.GetHashCode();
      if (ExpireTime != 0L) hash ^= ExpireTime.GetHashCode();
      hash ^= AdditionalParameters.GetHashCode();
      if (Status != 0) hash ^= Status.GetHashCode();
      if (Version != 0) hash ^= Version.GetHashCode();
      if (ContentId != 0) hash ^= ContentId.GetHashCode();
      if (AppIdentifier.Length != 0) hash ^= AppIdentifier.GetHashCode();
      if (AppLauncherMask != 0) hash ^= AppLauncherMask.GetHashCode();
      if (InstallerType.Length != 0) hash ^= InstallerType.GetHashCode();
      if (AccountDN.Length != 0) hash ^= AccountDN.GetHashCode();
      if (FileLength != 0) hash ^= FileLength.GetHashCode();
      if (FileChecksum != 0) hash ^= FileChecksum.GetHashCode();
      if (FeatureMask.Length != 0) hash ^= FeatureMask.GetHashCode();
      if (ExpirexTimeSpanBegiTimeSpanBegin != 0L) hash ^= ExpirexTimeSpanBegiTimeSpanBegin.GetHashCode();
      if (ExpireTimeSpanEnd != 0L) hash ^= ExpireTimeSpanEnd.GetHashCode();
      if (EmailId.Length != 0) hash ^= EmailId.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ServiceType != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) ServiceType);
      }
      if (ExpireTime != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(ExpireTime);
      }
      additionalParameters_.WriteTo(output, _map_additionalParameters_codec);
      if (Status != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Status);
      }
      if (Version != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(Version);
      }
      if (ContentId != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(ContentId);
      }
      if (AppIdentifier.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(AppIdentifier);
      }
      if (AppLauncherMask != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(AppLauncherMask);
      }
      if (InstallerType.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(InstallerType);
      }
      if (AccountDN.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(AccountDN);
      }
      if (FileLength != 0) {
        output.WriteRawTag(88);
        output.WriteInt32(FileLength);
      }
      if (FileChecksum != 0) {
        output.WriteRawTag(96);
        output.WriteInt32(FileChecksum);
      }
      if (FeatureMask.Length != 0) {
        output.WriteRawTag(106);
        output.WriteString(FeatureMask);
      }
      if (ExpirexTimeSpanBegiTimeSpanBegin != 0L) {
        output.WriteRawTag(112);
        output.WriteInt64(ExpirexTimeSpanBegiTimeSpanBegin);
      }
      if (ExpireTimeSpanEnd != 0L) {
        output.WriteRawTag(120);
        output.WriteInt64(ExpireTimeSpanEnd);
      }
      if (EmailId.Length != 0) {
        output.WriteRawTag(130, 1);
        output.WriteString(EmailId);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (ServiceType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ServiceType);
      }
      if (ExpireTime != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpireTime);
      }
      size += additionalParameters_.CalculateSize(_map_additionalParameters_codec);
      if (Status != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
      }
      if (Version != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Version);
      }
      if (ContentId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ContentId);
      }
      if (AppIdentifier.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AppIdentifier);
      }
      if (AppLauncherMask != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(AppLauncherMask);
      }
      if (InstallerType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstallerType);
      }
      if (AccountDN.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AccountDN);
      }
      if (FileLength != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FileLength);
      }
      if (FileChecksum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FileChecksum);
      }
      if (FeatureMask.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(FeatureMask);
      }
      if (ExpirexTimeSpanBegiTimeSpanBegin != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirexTimeSpanBegiTimeSpanBegin);
      }
      if (ExpireTimeSpanEnd != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpireTimeSpanEnd);
      }
      if (EmailId.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(EmailId);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ServiceDescription other) {
      if (other == null) {
        return;
      }
      if (other.ServiceType != 0) {
        ServiceType = other.ServiceType;
      }
      if (other.ExpireTime != 0L) {
        ExpireTime = other.ExpireTime;
      }
      additionalParameters_.Add(other.additionalParameters_);
      if (other.Status != 0) {
        Status = other.Status;
      }
      if (other.Version != 0) {
        Version = other.Version;
      }
      if (other.ContentId != 0) {
        ContentId = other.ContentId;
      }
      if (other.AppIdentifier.Length != 0) {
        AppIdentifier = other.AppIdentifier;
      }
      if (other.AppLauncherMask != 0) {
        AppLauncherMask = other.AppLauncherMask;
      }
      if (other.InstallerType.Length != 0) {
        InstallerType = other.InstallerType;
      }
      if (other.AccountDN.Length != 0) {
        AccountDN = other.AccountDN;
      }
      if (other.FileLength != 0) {
        FileLength = other.FileLength;
      }
      if (other.FileChecksum != 0) {
        FileChecksum = other.FileChecksum;
      }
      if (other.FeatureMask.Length != 0) {
        FeatureMask = other.FeatureMask;
      }
      if (other.ExpirexTimeSpanBegiTimeSpanBegin != 0L) {
        ExpirexTimeSpanBegiTimeSpanBegin = other.ExpirexTimeSpanBegiTimeSpanBegin;
      }
      if (other.ExpireTimeSpanEnd != 0L) {
        ExpireTimeSpanEnd = other.ExpireTimeSpanEnd;
      }
      if (other.EmailId.Length != 0) {
        EmailId = other.EmailId;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            serviceType_ = (global::Com.Fca.Uconnect.Global.ServiceDescription.Types.ServiceTypeEnum) input.ReadEnum();
            break;
          }
          case 16: {
            ExpireTime = input.ReadInt64();
            break;
          }
          case 26: {
            additionalParameters_.AddEntriesFrom(input, _map_additionalParameters_codec);
            break;
          }
          case 32: {
            status_ = (global::Com.Fca.Uconnect.Global.ServiceDescription.Types.Status) input.ReadEnum();
            break;
          }
          case 40: {
            Version = input.ReadInt32();
            break;
          }
          case 48: {
            ContentId = input.ReadInt32();
            break;
          }
          case 58: {
            AppIdentifier = input.ReadString();
            break;
          }
          case 64: {
            AppLauncherMask = input.ReadInt32();
            break;
          }
          case 74: {
            InstallerType = input.ReadString();
            break;
          }
          case 82: {
            AccountDN = input.ReadString();
            break;
          }
          case 88: {
            FileLength = input.ReadInt32();
            break;
          }
          case 96: {
            FileChecksum = input.ReadInt32();
            break;
          }
          case 106: {
            FeatureMask = input.ReadString();
            break;
          }
          case 112: {
            ExpirexTimeSpanBegiTimeSpanBegin = input.ReadInt64();
            break;
          }
          case 120: {
            ExpireTimeSpanEnd = input.ReadInt64();
            break;
          }
          case 130: {
            EmailId = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ServiceDescription message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ServiceTypeEnum {
        /// <summary>
        //// Wifi service.
        /// </summary>
        [pbr::OriginalName("WIFIHOTSPOT")] Wifihotspot = 0,
        /// <summary>
        //// Emergency Call service.
        /// </summary>
        [pbr::OriginalName("ECALL")] Ecall = 1,
        /// <summary>
        ////Road side assistance service.
        /// </summary>
        [pbr::OriginalName("ROADSIDEASSIST")] Roadsideassist = 2,
        /// <summary>
        //// This service notifies when Theft alarm is enabled.
        /// </summary>
        [pbr::OriginalName("THEFTALARMNOTIFICATION")] Theftalarmnotification = 3,
        /// <summary>
        //// This is for stolen vehicle assistance.
        /// </summary>
        [pbr::OriginalName("STOLENVEHICLEASSIST")] Stolenvehicleassist = 4,
        /// <summary>
        //// This is for sending destination location to car.
        /// </summary>
        [pbr::OriginalName("SENDDESTINATIONTOCAR")] Senddestinationtocar = 5,
        /// <summary>
        //// This service finds vehicle location.
        /// </summary>
        [pbr::OriginalName("VEHICLEFINDER")] Vehiclefinder = 6,
        /// <summary>
        //// This service enables Remote Door Lock/Unlock opertions.
        /// </summary>
        [pbr::OriginalName("REMOTEDOORCONTROL")] Remotedoorcontrol = 7,
        /// <summary>
        //// This service enables Remote Start/Stop opertions.
        /// </summary>
        [pbr::OriginalName("REMOTEENGINESTART")] Remoteenginestart = 8,
        /// <summary>
        //// This service enables Remote Horn and lights opertions.
        /// </summary>
        [pbr::OriginalName("REMOTEHORNANDFLASH")] Remotehornandflash = 9,
        /// <summary>
        ////This Service enables Radio Presets.
        /// </summary>
        [pbr::OriginalName("RADIOPRESETS")] Radiopresets = 10,
        /// <summary>
        ////This service enables to favorite Songs/bands/Teams.
        /// </summary>
        [pbr::OriginalName("MUSICFAVORITES")] Musicfavorites = 11,
        /// <summary>
        ////This service enables Temperature settings.
        /// </summary>
        [pbr::OriginalName("TEMPERATURE")] Temperature = 12,
        /// <summary>
        ////This service enables Heating or cooling Seats.
        /// </summary>
        [pbr::OriginalName("HEATEDCOOLEDSEATS")] Heatedcooledseats = 13,
        /// <summary>
        ////This service enables Heating Steering Wheel.
        /// </summary>
        [pbr::OriginalName("HEATEDSTEERINGWHEEL")] Heatedsteeringwheel = 14,
        /// <summary>
        //// Connected Vehicle Service
        /// </summary>
        [pbr::OriginalName("CONNECTEDVEHICLE")] Connectedvehicle = 15,
        /// <summary>
        //// This service enables SQDF
        /// </summary>
        [pbr::OriginalName("SQDF")] Sqdf = 16,
        /// <summary>
        //// This service enables Fleet Telematics 
        /// </summary>
        [pbr::OriginalName("FTM")] Ftm = 17,
        /// <summary>
        ////This service represents PHEV Data.
        /// </summary>
        [pbr::OriginalName("EVDATACHN")] Evdatachn = 18,
      }

      public enum Status {
        /// <summary>
        ////Service is not active.
        /// </summary>
        [pbr::OriginalName("INACTIVE")] Inactive = 0,
        /// <summary>
        ////Service is active.
        /// </summary>
        [pbr::OriginalName("ACTIVE")] Active = 1,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This Message represents the list of Services that User can or may subscribed to.
  ///
  /// This message may be sent with an ProvisioningResponse or can be asynchronously at any time from the SDP.
  ///&lt;div class=exmsg-main>
  ///  &lt;h4>ServiceSubscriptionInfo  Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1488746451561
  ///		messageId: 4
  ///		messages
  ///		{
  ///		 [com.fca.uconnect.global.serviceSubscriptionInfo]
  ///		 {
  ///			services
  ///			{
  ///			  serviceType: ECALL
  ///			  expireTime: 1234567890
  ///			}
  ///			services
  ///			{
  ///			  serviceType: REMOTEENGINESTART
  ///			  expireTime: 1234567890
  ///			}
  ///		 }
  ///	   }
  ///   &lt;/code>
  /// &lt;/div>&lt;/div>
  /// </summary>
  public sealed partial class ServiceSubscriptionInfo : pb::IMessage<ServiceSubscriptionInfo> {
    private static readonly pb::MessageParser<ServiceSubscriptionInfo> _parser = new pb::MessageParser<ServiceSubscriptionInfo>(() => new ServiceSubscriptionInfo());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ServiceSubscriptionInfo> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ServiceSubscriptionInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ServiceSubscriptionInfo(ServiceSubscriptionInfo other) : this() {
      services_ = other.services_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ServiceSubscriptionInfo Clone() {
      return new ServiceSubscriptionInfo(this);
    }

    /// <summary>Field number for the "services" field.</summary>
    public const int ServicesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.ServiceDescription> _repeated_services_codec
        = pb::FieldCodec.ForMessage(10, global::Com.Fca.Uconnect.Global.ServiceDescription.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ServiceDescription> services_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ServiceDescription>();
    /// <summary>
    //// The services enumerated in this message are enable from the time of receipt. All other services not explicitly listed are disabled immediately if possible, and upon the next ignition on cycle under all circumstances.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ServiceDescription> Services {
      get { return services_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ServiceSubscriptionInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ServiceSubscriptionInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!services_.Equals(other.services_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= services_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      services_.WriteTo(output, _repeated_services_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += services_.CalculateSize(_repeated_services_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ServiceSubscriptionInfo other) {
      if (other == null) {
        return;
      }
      services_.Add(other.services_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            services_.AddEntriesFrom(input, _repeated_services_codec);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ////This is for Authentication
  /// </summary>
  public sealed partial class BIMDPSKInfo : pb::IMessage<BIMDPSKInfo> {
    private static readonly pb::MessageParser<BIMDPSKInfo> _parser = new pb::MessageParser<BIMDPSKInfo>(() => new BIMDPSKInfo());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<BIMDPSKInfo> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtProvisionReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public BIMDPSKInfo() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public BIMDPSKInfo(BIMDPSKInfo other) : this() {
      deviceKeys_ = other.deviceKeys_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public BIMDPSKInfo Clone() {
      return new BIMDPSKInfo(this);
    }

    /// <summary>Field number for the "deviceKeys" field.</summary>
    public const int DeviceKeysFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK> _repeated_deviceKeys_codec
        = pb::FieldCodec.ForMessage(10, global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK> deviceKeys_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Types.BIMDPSK> DeviceKeys {
      get { return deviceKeys_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as BIMDPSKInfo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(BIMDPSKInfo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!deviceKeys_.Equals(other.deviceKeys_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= deviceKeys_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      deviceKeys_.WriteTo(output, _repeated_deviceKeys_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += deviceKeys_.CalculateSize(_repeated_deviceKeys_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(BIMDPSKInfo other) {
      if (other == null) {
        return;
      }
      deviceKeys_.Add(other.deviceKeys_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            deviceKeys_.AddEntriesFrom(input, _repeated_deviceKeys_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the BIMDPSKInfo message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public sealed partial class BIMDPSK : pb::IMessage<BIMDPSK> {
        private static readonly pb::MessageParser<BIMDPSK> _parser = new pb::MessageParser<BIMDPSK>(() => new BIMDPSK());
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<BIMDPSK> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.BIMDPSKInfo.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public BIMDPSK() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public BIMDPSK(BIMDPSK other) : this() {
          mobileDeviceId_ = other.mobileDeviceId_;
          preSharedKey_ = other.preSharedKey_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public BIMDPSK Clone() {
          return new BIMDPSK(this);
        }

        /// <summary>Field number for the "mobileDeviceId" field.</summary>
        public const int MobileDeviceIdFieldNumber = 1;
        private string mobileDeviceId_ = "";
        /// <summary>
        ////Device id for Mobile.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string MobileDeviceId {
          get { return mobileDeviceId_; }
          set {
            mobileDeviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "preSharedKey" field.</summary>
        public const int PreSharedKeyFieldNumber = 2;
        private pb::ByteString preSharedKey_ = pb::ByteString.Empty;
        /// <summary>
        //// Repeated keys.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pb::ByteString PreSharedKey {
          get { return preSharedKey_; }
          set {
            preSharedKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as BIMDPSK);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(BIMDPSK other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (MobileDeviceId != other.MobileDeviceId) return false;
          if (PreSharedKey != other.PreSharedKey) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (MobileDeviceId.Length != 0) hash ^= MobileDeviceId.GetHashCode();
          if (PreSharedKey.Length != 0) hash ^= PreSharedKey.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (MobileDeviceId.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(MobileDeviceId);
          }
          if (PreSharedKey.Length != 0) {
            output.WriteRawTag(18);
            output.WriteBytes(PreSharedKey);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (MobileDeviceId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(MobileDeviceId);
          }
          if (PreSharedKey.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeBytesSize(PreSharedKey);
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(BIMDPSK other) {
          if (other == null) {
            return;
          }
          if (other.MobileDeviceId.Length != 0) {
            MobileDeviceId = other.MobileDeviceId;
          }
          if (other.PreSharedKey.Length != 0) {
            PreSharedKey = other.PreSharedKey;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                MobileDeviceId = input.ReadString();
                break;
              }
              case 18: {
                PreSharedKey = input.ReadBytes();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
