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

com.amazonaws.services.kinesis.producer.protobuf.Config Maven / Gradle / Ivy

Go to download

The Amazon Kinesis Producer Library for Java enables developers to easily and reliably put data into Amazon Kinesis.

There is a newer version: 0.15.11
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: config.proto

package com.amazonaws.services.kinesis.producer.protobuf;

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

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

    /**
     * required string key = 1;
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * required string key = 1;
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * required string key = 1;
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * required string value = 2;
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * required string value = 2;
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * required string value = 2;
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * required string granularity = 3;
     * @return Whether the granularity field is set.
     */
    boolean hasGranularity();
    /**
     * required string granularity = 3;
     * @return The granularity.
     */
    java.lang.String getGranularity();
    /**
     * required string granularity = 3;
     * @return The bytes for granularity.
     */
    com.google.protobuf.ByteString
        getGranularityBytes();
  }
  /**
   * Protobuf type {@code aws.kinesis.protobuf.AdditionalDimension}
   */
  public  static final class AdditionalDimension extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:aws.kinesis.protobuf.AdditionalDimension)
      AdditionalDimensionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AdditionalDimension.newBuilder() to construct.
    private AdditionalDimension(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private AdditionalDimension() {
      key_ = "";
      value_ = "";
      granularity_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AdditionalDimension(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              value_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              granularity_ = bs;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_AdditionalDimension_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_AdditionalDimension_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.class, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * required string key = 1;
     * @return Whether the key field is set.
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * required string key = 1;
     * @return The key.
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      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()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * required string key = 1;
     * @return The bytes for key.
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object value_;
    /**
     * required string value = 2;
     * @return Whether the value field is set.
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * required string value = 2;
     * @return The value.
     */
    public java.lang.String getValue() {
      java.lang.Object 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()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * required string value = 2;
     * @return The bytes for value.
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GRANULARITY_FIELD_NUMBER = 3;
    private volatile java.lang.Object granularity_;
    /**
     * required string granularity = 3;
     * @return Whether the granularity field is set.
     */
    public boolean hasGranularity() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * required string granularity = 3;
     * @return The granularity.
     */
    public java.lang.String getGranularity() {
      java.lang.Object ref = granularity_;
      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()) {
          granularity_ = s;
        }
        return s;
      }
    }
    /**
     * required string granularity = 3;
     * @return The bytes for granularity.
     */
    public com.google.protobuf.ByteString
        getGranularityBytes() {
      java.lang.Object ref = granularity_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        granularity_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasKey()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasGranularity()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, granularity_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, granularity_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension)) {
        return super.equals(obj);
      }
      com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension other = (com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (hasGranularity() != other.hasGranularity()) return false;
      if (hasGranularity()) {
        if (!getGranularity()
            .equals(other.getGranularity())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      if (hasGranularity()) {
        hash = (37 * hash) + GRANULARITY_FIELD_NUMBER;
        hash = (53 * hash) + getGranularity().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension 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.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension 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.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code aws.kinesis.protobuf.AdditionalDimension}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:aws.kinesis.protobuf.AdditionalDimension)
        com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_AdditionalDimension_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_AdditionalDimension_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.class, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder.class);
      }

      // Construct using com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        granularity_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_AdditionalDimension_descriptor;
      }

      @java.lang.Override
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension getDefaultInstanceForType() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.getDefaultInstance();
      }

      @java.lang.Override
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension build() {
        com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension buildPartial() {
        com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension result = new com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.granularity_ = granularity_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension) {
          return mergeFrom((com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension other) {
        if (other == com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasGranularity()) {
          bitField0_ |= 0x00000004;
          granularity_ = other.granularity_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasKey()) {
          return false;
        }
        if (!hasValue()) {
          return false;
        }
        if (!hasGranularity()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * required string key = 1;
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * required string key = 1;
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        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()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string key = 1;
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string key = 1;
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * required string key = 1;
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * required string key = 1;
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * required string value = 2;
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * required string value = 2;
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object 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 (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string value = 2;
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string value = 2;
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * required string value = 2;
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * required string value = 2;
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object granularity_ = "";
      /**
       * required string granularity = 3;
       * @return Whether the granularity field is set.
       */
      public boolean hasGranularity() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * required string granularity = 3;
       * @return The granularity.
       */
      public java.lang.String getGranularity() {
        java.lang.Object ref = granularity_;
        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()) {
            granularity_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * required string granularity = 3;
       * @return The bytes for granularity.
       */
      public com.google.protobuf.ByteString
          getGranularityBytes() {
        java.lang.Object ref = granularity_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          granularity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * required string granularity = 3;
       * @param value The granularity to set.
       * @return This builder for chaining.
       */
      public Builder setGranularity(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        granularity_ = value;
        onChanged();
        return this;
      }
      /**
       * required string granularity = 3;
       * @return This builder for chaining.
       */
      public Builder clearGranularity() {
        bitField0_ = (bitField0_ & ~0x00000004);
        granularity_ = getDefaultInstance().getGranularity();
        onChanged();
        return this;
      }
      /**
       * required string granularity = 3;
       * @param value The bytes for granularity to set.
       * @return This builder for chaining.
       */
      public Builder setGranularityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        granularity_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:aws.kinesis.protobuf.AdditionalDimension)
    }

    // @@protoc_insertion_point(class_scope:aws.kinesis.protobuf.AdditionalDimension)
    private static final com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension();
    }

    public static com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigurationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:aws.kinesis.protobuf.Configuration)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    java.util.List 
        getAdditionalMetricDimsList();
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension getAdditionalMetricDims(int index);
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    int getAdditionalMetricDimsCount();
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    java.util.List 
        getAdditionalMetricDimsOrBuilderList();
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder getAdditionalMetricDimsOrBuilder(
        int index);

    /**
     * optional bool aggregation_enabled = 1 [default = true];
     * @return Whether the aggregationEnabled field is set.
     */
    boolean hasAggregationEnabled();
    /**
     * optional bool aggregation_enabled = 1 [default = true];
     * @return The aggregationEnabled.
     */
    boolean getAggregationEnabled();

    /**
     * optional uint64 aggregation_max_count = 2 [default = 4294967295];
     * @return Whether the aggregationMaxCount field is set.
     */
    boolean hasAggregationMaxCount();
    /**
     * optional uint64 aggregation_max_count = 2 [default = 4294967295];
     * @return The aggregationMaxCount.
     */
    long getAggregationMaxCount();

    /**
     * optional uint64 aggregation_max_size = 3 [default = 51200];
     * @return Whether the aggregationMaxSize field is set.
     */
    boolean hasAggregationMaxSize();
    /**
     * optional uint64 aggregation_max_size = 3 [default = 51200];
     * @return The aggregationMaxSize.
     */
    long getAggregationMaxSize();

    /**
     * optional string cloudwatch_endpoint = 4 [default = ""];
     * @return Whether the cloudwatchEndpoint field is set.
     */
    boolean hasCloudwatchEndpoint();
    /**
     * optional string cloudwatch_endpoint = 4 [default = ""];
     * @return The cloudwatchEndpoint.
     */
    java.lang.String getCloudwatchEndpoint();
    /**
     * optional string cloudwatch_endpoint = 4 [default = ""];
     * @return The bytes for cloudwatchEndpoint.
     */
    com.google.protobuf.ByteString
        getCloudwatchEndpointBytes();

    /**
     * optional uint64 cloudwatch_port = 5 [default = 443];
     * @return Whether the cloudwatchPort field is set.
     */
    boolean hasCloudwatchPort();
    /**
     * optional uint64 cloudwatch_port = 5 [default = 443];
     * @return The cloudwatchPort.
     */
    long getCloudwatchPort();

    /**
     * optional uint64 collection_max_count = 6 [default = 500];
     * @return Whether the collectionMaxCount field is set.
     */
    boolean hasCollectionMaxCount();
    /**
     * optional uint64 collection_max_count = 6 [default = 500];
     * @return The collectionMaxCount.
     */
    long getCollectionMaxCount();

    /**
     * optional uint64 collection_max_size = 7 [default = 5242880];
     * @return Whether the collectionMaxSize field is set.
     */
    boolean hasCollectionMaxSize();
    /**
     * optional uint64 collection_max_size = 7 [default = 5242880];
     * @return The collectionMaxSize.
     */
    long getCollectionMaxSize();

    /**
     * optional uint64 connect_timeout = 8 [default = 6000];
     * @return Whether the connectTimeout field is set.
     */
    boolean hasConnectTimeout();
    /**
     * optional uint64 connect_timeout = 8 [default = 6000];
     * @return The connectTimeout.
     */
    long getConnectTimeout();

    /**
     * optional bool enable_core_dumps = 9 [default = false];
     * @return Whether the enableCoreDumps field is set.
     */
    boolean hasEnableCoreDumps();
    /**
     * optional bool enable_core_dumps = 9 [default = false];
     * @return The enableCoreDumps.
     */
    boolean getEnableCoreDumps();

    /**
     * optional bool fail_if_throttled = 10 [default = false];
     * @return Whether the failIfThrottled field is set.
     */
    boolean hasFailIfThrottled();
    /**
     * optional bool fail_if_throttled = 10 [default = false];
     * @return The failIfThrottled.
     */
    boolean getFailIfThrottled();

    /**
     * optional string kinesis_endpoint = 11 [default = ""];
     * @return Whether the kinesisEndpoint field is set.
     */
    boolean hasKinesisEndpoint();
    /**
     * optional string kinesis_endpoint = 11 [default = ""];
     * @return The kinesisEndpoint.
     */
    java.lang.String getKinesisEndpoint();
    /**
     * optional string kinesis_endpoint = 11 [default = ""];
     * @return The bytes for kinesisEndpoint.
     */
    com.google.protobuf.ByteString
        getKinesisEndpointBytes();

    /**
     * optional uint64 kinesis_port = 12 [default = 443];
     * @return Whether the kinesisPort field is set.
     */
    boolean hasKinesisPort();
    /**
     * optional uint64 kinesis_port = 12 [default = 443];
     * @return The kinesisPort.
     */
    long getKinesisPort();

    /**
     * optional string log_level = 13 [default = "info"];
     * @return Whether the logLevel field is set.
     */
    boolean hasLogLevel();
    /**
     * optional string log_level = 13 [default = "info"];
     * @return The logLevel.
     */
    java.lang.String getLogLevel();
    /**
     * optional string log_level = 13 [default = "info"];
     * @return The bytes for logLevel.
     */
    com.google.protobuf.ByteString
        getLogLevelBytes();

    /**
     * optional uint64 max_connections = 14 [default = 24];
     * @return Whether the maxConnections field is set.
     */
    boolean hasMaxConnections();
    /**
     * optional uint64 max_connections = 14 [default = 24];
     * @return The maxConnections.
     */
    long getMaxConnections();

    /**
     * optional string metrics_granularity = 15 [default = "shard"];
     * @return Whether the metricsGranularity field is set.
     */
    boolean hasMetricsGranularity();
    /**
     * optional string metrics_granularity = 15 [default = "shard"];
     * @return The metricsGranularity.
     */
    java.lang.String getMetricsGranularity();
    /**
     * optional string metrics_granularity = 15 [default = "shard"];
     * @return The bytes for metricsGranularity.
     */
    com.google.protobuf.ByteString
        getMetricsGranularityBytes();

    /**
     * optional string metrics_level = 16 [default = "detailed"];
     * @return Whether the metricsLevel field is set.
     */
    boolean hasMetricsLevel();
    /**
     * optional string metrics_level = 16 [default = "detailed"];
     * @return The metricsLevel.
     */
    java.lang.String getMetricsLevel();
    /**
     * optional string metrics_level = 16 [default = "detailed"];
     * @return The bytes for metricsLevel.
     */
    com.google.protobuf.ByteString
        getMetricsLevelBytes();

    /**
     * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
     * @return Whether the metricsNamespace field is set.
     */
    boolean hasMetricsNamespace();
    /**
     * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
     * @return The metricsNamespace.
     */
    java.lang.String getMetricsNamespace();
    /**
     * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
     * @return The bytes for metricsNamespace.
     */
    com.google.protobuf.ByteString
        getMetricsNamespaceBytes();

    /**
     * optional uint64 metrics_upload_delay = 18 [default = 60000];
     * @return Whether the metricsUploadDelay field is set.
     */
    boolean hasMetricsUploadDelay();
    /**
     * optional uint64 metrics_upload_delay = 18 [default = 60000];
     * @return The metricsUploadDelay.
     */
    long getMetricsUploadDelay();

    /**
     * optional uint64 min_connections = 19 [default = 1];
     * @return Whether the minConnections field is set.
     */
    boolean hasMinConnections();
    /**
     * optional uint64 min_connections = 19 [default = 1];
     * @return The minConnections.
     */
    long getMinConnections();

    /**
     * optional uint64 rate_limit = 20 [default = 150];
     * @return Whether the rateLimit field is set.
     */
    boolean hasRateLimit();
    /**
     * optional uint64 rate_limit = 20 [default = 150];
     * @return The rateLimit.
     */
    long getRateLimit();

    /**
     * optional uint64 record_max_buffered_time = 21 [default = 100];
     * @return Whether the recordMaxBufferedTime field is set.
     */
    boolean hasRecordMaxBufferedTime();
    /**
     * optional uint64 record_max_buffered_time = 21 [default = 100];
     * @return The recordMaxBufferedTime.
     */
    long getRecordMaxBufferedTime();

    /**
     * optional uint64 record_ttl = 22 [default = 30000];
     * @return Whether the recordTtl field is set.
     */
    boolean hasRecordTtl();
    /**
     * optional uint64 record_ttl = 22 [default = 30000];
     * @return The recordTtl.
     */
    long getRecordTtl();

    /**
     * optional string region = 23 [default = ""];
     * @return Whether the region field is set.
     */
    boolean hasRegion();
    /**
     * optional string region = 23 [default = ""];
     * @return The region.
     */
    java.lang.String getRegion();
    /**
     * optional string region = 23 [default = ""];
     * @return The bytes for region.
     */
    com.google.protobuf.ByteString
        getRegionBytes();

    /**
     * optional uint64 request_timeout = 24 [default = 6000];
     * @return Whether the requestTimeout field is set.
     */
    boolean hasRequestTimeout();
    /**
     * optional uint64 request_timeout = 24 [default = 6000];
     * @return The requestTimeout.
     */
    long getRequestTimeout();

    /**
     * optional bool verify_certificate = 25 [default = true];
     * @return Whether the verifyCertificate field is set.
     */
    boolean hasVerifyCertificate();
    /**
     * optional bool verify_certificate = 25 [default = true];
     * @return The verifyCertificate.
     */
    boolean getVerifyCertificate();

    /**
     * optional string proxy_host = 26 [default = ""];
     * @return Whether the proxyHost field is set.
     */
    boolean hasProxyHost();
    /**
     * optional string proxy_host = 26 [default = ""];
     * @return The proxyHost.
     */
    java.lang.String getProxyHost();
    /**
     * optional string proxy_host = 26 [default = ""];
     * @return The bytes for proxyHost.
     */
    com.google.protobuf.ByteString
        getProxyHostBytes();

    /**
     * optional uint64 proxy_port = 27 [default = 443];
     * @return Whether the proxyPort field is set.
     */
    boolean hasProxyPort();
    /**
     * optional uint64 proxy_port = 27 [default = 443];
     * @return The proxyPort.
     */
    long getProxyPort();

    /**
     * optional string proxy_user_name = 28 [default = ""];
     * @return Whether the proxyUserName field is set.
     */
    boolean hasProxyUserName();
    /**
     * optional string proxy_user_name = 28 [default = ""];
     * @return The proxyUserName.
     */
    java.lang.String getProxyUserName();
    /**
     * optional string proxy_user_name = 28 [default = ""];
     * @return The bytes for proxyUserName.
     */
    com.google.protobuf.ByteString
        getProxyUserNameBytes();

    /**
     * optional string proxy_password = 29 [default = ""];
     * @return Whether the proxyPassword field is set.
     */
    boolean hasProxyPassword();
    /**
     * optional string proxy_password = 29 [default = ""];
     * @return The proxyPassword.
     */
    java.lang.String getProxyPassword();
    /**
     * optional string proxy_password = 29 [default = ""];
     * @return The bytes for proxyPassword.
     */
    com.google.protobuf.ByteString
        getProxyPasswordBytes();

    /**
     * optional string sts_endpoint = 32 [default = ""];
     * @return Whether the stsEndpoint field is set.
     */
    boolean hasStsEndpoint();
    /**
     * optional string sts_endpoint = 32 [default = ""];
     * @return The stsEndpoint.
     */
    java.lang.String getStsEndpoint();
    /**
     * optional string sts_endpoint = 32 [default = ""];
     * @return The bytes for stsEndpoint.
     */
    com.google.protobuf.ByteString
        getStsEndpointBytes();

    /**
     * optional uint64 sts_port = 33 [default = 443];
     * @return Whether the stsPort field is set.
     */
    boolean hasStsPort();
    /**
     * optional uint64 sts_port = 33 [default = 443];
     * @return The stsPort.
     */
    long getStsPort();

    /**
     * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
     * @return Whether the threadConfig field is set.
     */
    boolean hasThreadConfig();
    /**
     * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
     * @return The threadConfig.
     */
    com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig getThreadConfig();

    /**
     * optional uint32 thread_pool_size = 31 [default = 64];
     * @return Whether the threadPoolSize field is set.
     */
    boolean hasThreadPoolSize();
    /**
     * optional uint32 thread_pool_size = 31 [default = 64];
     * @return The threadPoolSize.
     */
    int getThreadPoolSize();
  }
  /**
   * Protobuf type {@code aws.kinesis.protobuf.Configuration}
   */
  public  static final class Configuration extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:aws.kinesis.protobuf.Configuration)
      ConfigurationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Configuration.newBuilder() to construct.
    private Configuration(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Configuration() {
      additionalMetricDims_ = java.util.Collections.emptyList();
      aggregationEnabled_ = true;
      aggregationMaxCount_ = 4294967295L;
      aggregationMaxSize_ = 51200L;
      cloudwatchEndpoint_ = "";
      cloudwatchPort_ = 443L;
      collectionMaxCount_ = 500L;
      collectionMaxSize_ = 5242880L;
      connectTimeout_ = 6000L;
      kinesisEndpoint_ = "";
      kinesisPort_ = 443L;
      logLevel_ = "info";
      maxConnections_ = 24L;
      metricsGranularity_ = "shard";
      metricsLevel_ = "detailed";
      metricsNamespace_ = "KinesisProducerLibrary";
      metricsUploadDelay_ = 60000L;
      minConnections_ = 1L;
      rateLimit_ = 150L;
      recordMaxBufferedTime_ = 100L;
      recordTtl_ = 30000L;
      region_ = "";
      requestTimeout_ = 6000L;
      verifyCertificate_ = true;
      proxyHost_ = "";
      proxyPort_ = 443L;
      proxyUserName_ = "";
      proxyPassword_ = "";
      stsEndpoint_ = "";
      stsPort_ = 443L;
      threadConfig_ = 0;
      threadPoolSize_ = 64;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Configuration(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      int mutable_bitField1_ = 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;
            case 8: {
              bitField0_ |= 0x00000001;
              aggregationEnabled_ = input.readBool();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              aggregationMaxCount_ = input.readUInt64();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              aggregationMaxSize_ = input.readUInt64();
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              cloudwatchEndpoint_ = bs;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              cloudwatchPort_ = input.readUInt64();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              collectionMaxCount_ = input.readUInt64();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              collectionMaxSize_ = input.readUInt64();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000080;
              connectTimeout_ = input.readUInt64();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              enableCoreDumps_ = input.readBool();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000200;
              failIfThrottled_ = input.readBool();
              break;
            }
            case 90: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000400;
              kinesisEndpoint_ = bs;
              break;
            }
            case 96: {
              bitField0_ |= 0x00000800;
              kinesisPort_ = input.readUInt64();
              break;
            }
            case 106: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00001000;
              logLevel_ = bs;
              break;
            }
            case 112: {
              bitField0_ |= 0x00002000;
              maxConnections_ = input.readUInt64();
              break;
            }
            case 122: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00004000;
              metricsGranularity_ = bs;
              break;
            }
            case 130: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00008000;
              metricsLevel_ = bs;
              break;
            }
            case 138: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00010000;
              metricsNamespace_ = bs;
              break;
            }
            case 144: {
              bitField0_ |= 0x00020000;
              metricsUploadDelay_ = input.readUInt64();
              break;
            }
            case 152: {
              bitField0_ |= 0x00040000;
              minConnections_ = input.readUInt64();
              break;
            }
            case 160: {
              bitField0_ |= 0x00080000;
              rateLimit_ = input.readUInt64();
              break;
            }
            case 168: {
              bitField0_ |= 0x00100000;
              recordMaxBufferedTime_ = input.readUInt64();
              break;
            }
            case 176: {
              bitField0_ |= 0x00200000;
              recordTtl_ = input.readUInt64();
              break;
            }
            case 186: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00400000;
              region_ = bs;
              break;
            }
            case 192: {
              bitField0_ |= 0x00800000;
              requestTimeout_ = input.readUInt64();
              break;
            }
            case 200: {
              bitField0_ |= 0x01000000;
              verifyCertificate_ = input.readBool();
              break;
            }
            case 210: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x02000000;
              proxyHost_ = bs;
              break;
            }
            case 216: {
              bitField0_ |= 0x04000000;
              proxyPort_ = input.readUInt64();
              break;
            }
            case 226: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x08000000;
              proxyUserName_ = bs;
              break;
            }
            case 234: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x10000000;
              proxyPassword_ = bs;
              break;
            }
            case 240: {
              int rawValue = input.readEnum();
                @SuppressWarnings("deprecation")
              com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig value = com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(30, rawValue);
              } else {
                bitField0_ |= 0x80000000;
                threadConfig_ = rawValue;
              }
              break;
            }
            case 248: {
              bitField1_ |= 0x00000001;
              threadPoolSize_ = input.readUInt32();
              break;
            }
            case 258: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x20000000;
              stsEndpoint_ = bs;
              break;
            }
            case 264: {
              bitField0_ |= 0x40000000;
              stsPort_ = input.readUInt64();
              break;
            }
            case 1026: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                additionalMetricDims_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              additionalMetricDims_.add(
                  input.readMessage(com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.PARSER, extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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) != 0)) {
          additionalMetricDims_ = java.util.Collections.unmodifiableList(additionalMetricDims_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_Configuration_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_Configuration_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.class, com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.Builder.class);
    }

    /**
     * Protobuf enum {@code aws.kinesis.protobuf.Configuration.ThreadConfig}
     */
    public enum ThreadConfig
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * PER_REQUEST = 0;
       */
      PER_REQUEST(0),
      /**
       * POOLED = 1;
       */
      POOLED(1),
      ;

      /**
       * PER_REQUEST = 0;
       */
      public static final int PER_REQUEST_VALUE = 0;
      /**
       * POOLED = 1;
       */
      public static final int POOLED_VALUE = 1;


      public final int getNumber() {
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ThreadConfig valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ThreadConfig forNumber(int value) {
        switch (value) {
          case 0: return PER_REQUEST;
          case 1: return POOLED;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          ThreadConfig> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public ThreadConfig findValueByNumber(int number) {
                return ThreadConfig.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.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.getDescriptor().getEnumTypes().get(0);
      }

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

      public static ThreadConfig 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 ThreadConfig(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:aws.kinesis.protobuf.Configuration.ThreadConfig)
    }

    private int bitField0_;
    private int bitField1_;
    public static final int ADDITIONAL_METRIC_DIMS_FIELD_NUMBER = 128;
    private java.util.List additionalMetricDims_;
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    public java.util.List getAdditionalMetricDimsList() {
      return additionalMetricDims_;
    }
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    public java.util.List
        getAdditionalMetricDimsOrBuilderList() {
      return additionalMetricDims_;
    }
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    public int getAdditionalMetricDimsCount() {
      return additionalMetricDims_.size();
    }
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension getAdditionalMetricDims(int index) {
      return additionalMetricDims_.get(index);
    }
    /**
     * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
     */
    public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder getAdditionalMetricDimsOrBuilder(
        int index) {
      return additionalMetricDims_.get(index);
    }

    public static final int AGGREGATION_ENABLED_FIELD_NUMBER = 1;
    private boolean aggregationEnabled_;
    /**
     * optional bool aggregation_enabled = 1 [default = true];
     * @return Whether the aggregationEnabled field is set.
     */
    public boolean hasAggregationEnabled() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * optional bool aggregation_enabled = 1 [default = true];
     * @return The aggregationEnabled.
     */
    public boolean getAggregationEnabled() {
      return aggregationEnabled_;
    }

    public static final int AGGREGATION_MAX_COUNT_FIELD_NUMBER = 2;
    private long aggregationMaxCount_;
    /**
     * optional uint64 aggregation_max_count = 2 [default = 4294967295];
     * @return Whether the aggregationMaxCount field is set.
     */
    public boolean hasAggregationMaxCount() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * optional uint64 aggregation_max_count = 2 [default = 4294967295];
     * @return The aggregationMaxCount.
     */
    public long getAggregationMaxCount() {
      return aggregationMaxCount_;
    }

    public static final int AGGREGATION_MAX_SIZE_FIELD_NUMBER = 3;
    private long aggregationMaxSize_;
    /**
     * optional uint64 aggregation_max_size = 3 [default = 51200];
     * @return Whether the aggregationMaxSize field is set.
     */
    public boolean hasAggregationMaxSize() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * optional uint64 aggregation_max_size = 3 [default = 51200];
     * @return The aggregationMaxSize.
     */
    public long getAggregationMaxSize() {
      return aggregationMaxSize_;
    }

    public static final int CLOUDWATCH_ENDPOINT_FIELD_NUMBER = 4;
    private volatile java.lang.Object cloudwatchEndpoint_;
    /**
     * optional string cloudwatch_endpoint = 4 [default = ""];
     * @return Whether the cloudwatchEndpoint field is set.
     */
    public boolean hasCloudwatchEndpoint() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * optional string cloudwatch_endpoint = 4 [default = ""];
     * @return The cloudwatchEndpoint.
     */
    public java.lang.String getCloudwatchEndpoint() {
      java.lang.Object ref = cloudwatchEndpoint_;
      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()) {
          cloudwatchEndpoint_ = s;
        }
        return s;
      }
    }
    /**
     * optional string cloudwatch_endpoint = 4 [default = ""];
     * @return The bytes for cloudwatchEndpoint.
     */
    public com.google.protobuf.ByteString
        getCloudwatchEndpointBytes() {
      java.lang.Object ref = cloudwatchEndpoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cloudwatchEndpoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLOUDWATCH_PORT_FIELD_NUMBER = 5;
    private long cloudwatchPort_;
    /**
     * optional uint64 cloudwatch_port = 5 [default = 443];
     * @return Whether the cloudwatchPort field is set.
     */
    public boolean hasCloudwatchPort() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * optional uint64 cloudwatch_port = 5 [default = 443];
     * @return The cloudwatchPort.
     */
    public long getCloudwatchPort() {
      return cloudwatchPort_;
    }

    public static final int COLLECTION_MAX_COUNT_FIELD_NUMBER = 6;
    private long collectionMaxCount_;
    /**
     * optional uint64 collection_max_count = 6 [default = 500];
     * @return Whether the collectionMaxCount field is set.
     */
    public boolean hasCollectionMaxCount() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * optional uint64 collection_max_count = 6 [default = 500];
     * @return The collectionMaxCount.
     */
    public long getCollectionMaxCount() {
      return collectionMaxCount_;
    }

    public static final int COLLECTION_MAX_SIZE_FIELD_NUMBER = 7;
    private long collectionMaxSize_;
    /**
     * optional uint64 collection_max_size = 7 [default = 5242880];
     * @return Whether the collectionMaxSize field is set.
     */
    public boolean hasCollectionMaxSize() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * optional uint64 collection_max_size = 7 [default = 5242880];
     * @return The collectionMaxSize.
     */
    public long getCollectionMaxSize() {
      return collectionMaxSize_;
    }

    public static final int CONNECT_TIMEOUT_FIELD_NUMBER = 8;
    private long connectTimeout_;
    /**
     * optional uint64 connect_timeout = 8 [default = 6000];
     * @return Whether the connectTimeout field is set.
     */
    public boolean hasConnectTimeout() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * optional uint64 connect_timeout = 8 [default = 6000];
     * @return The connectTimeout.
     */
    public long getConnectTimeout() {
      return connectTimeout_;
    }

    public static final int ENABLE_CORE_DUMPS_FIELD_NUMBER = 9;
    private boolean enableCoreDumps_;
    /**
     * optional bool enable_core_dumps = 9 [default = false];
     * @return Whether the enableCoreDumps field is set.
     */
    public boolean hasEnableCoreDumps() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * optional bool enable_core_dumps = 9 [default = false];
     * @return The enableCoreDumps.
     */
    public boolean getEnableCoreDumps() {
      return enableCoreDumps_;
    }

    public static final int FAIL_IF_THROTTLED_FIELD_NUMBER = 10;
    private boolean failIfThrottled_;
    /**
     * optional bool fail_if_throttled = 10 [default = false];
     * @return Whether the failIfThrottled field is set.
     */
    public boolean hasFailIfThrottled() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * optional bool fail_if_throttled = 10 [default = false];
     * @return The failIfThrottled.
     */
    public boolean getFailIfThrottled() {
      return failIfThrottled_;
    }

    public static final int KINESIS_ENDPOINT_FIELD_NUMBER = 11;
    private volatile java.lang.Object kinesisEndpoint_;
    /**
     * optional string kinesis_endpoint = 11 [default = ""];
     * @return Whether the kinesisEndpoint field is set.
     */
    public boolean hasKinesisEndpoint() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * optional string kinesis_endpoint = 11 [default = ""];
     * @return The kinesisEndpoint.
     */
    public java.lang.String getKinesisEndpoint() {
      java.lang.Object ref = kinesisEndpoint_;
      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()) {
          kinesisEndpoint_ = s;
        }
        return s;
      }
    }
    /**
     * optional string kinesis_endpoint = 11 [default = ""];
     * @return The bytes for kinesisEndpoint.
     */
    public com.google.protobuf.ByteString
        getKinesisEndpointBytes() {
      java.lang.Object ref = kinesisEndpoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kinesisEndpoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KINESIS_PORT_FIELD_NUMBER = 12;
    private long kinesisPort_;
    /**
     * optional uint64 kinesis_port = 12 [default = 443];
     * @return Whether the kinesisPort field is set.
     */
    public boolean hasKinesisPort() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * optional uint64 kinesis_port = 12 [default = 443];
     * @return The kinesisPort.
     */
    public long getKinesisPort() {
      return kinesisPort_;
    }

    public static final int LOG_LEVEL_FIELD_NUMBER = 13;
    private volatile java.lang.Object logLevel_;
    /**
     * optional string log_level = 13 [default = "info"];
     * @return Whether the logLevel field is set.
     */
    public boolean hasLogLevel() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * optional string log_level = 13 [default = "info"];
     * @return The logLevel.
     */
    public java.lang.String getLogLevel() {
      java.lang.Object ref = logLevel_;
      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()) {
          logLevel_ = s;
        }
        return s;
      }
    }
    /**
     * optional string log_level = 13 [default = "info"];
     * @return The bytes for logLevel.
     */
    public com.google.protobuf.ByteString
        getLogLevelBytes() {
      java.lang.Object ref = logLevel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        logLevel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAX_CONNECTIONS_FIELD_NUMBER = 14;
    private long maxConnections_;
    /**
     * optional uint64 max_connections = 14 [default = 24];
     * @return Whether the maxConnections field is set.
     */
    public boolean hasMaxConnections() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * optional uint64 max_connections = 14 [default = 24];
     * @return The maxConnections.
     */
    public long getMaxConnections() {
      return maxConnections_;
    }

    public static final int METRICS_GRANULARITY_FIELD_NUMBER = 15;
    private volatile java.lang.Object metricsGranularity_;
    /**
     * optional string metrics_granularity = 15 [default = "shard"];
     * @return Whether the metricsGranularity field is set.
     */
    public boolean hasMetricsGranularity() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * optional string metrics_granularity = 15 [default = "shard"];
     * @return The metricsGranularity.
     */
    public java.lang.String getMetricsGranularity() {
      java.lang.Object ref = metricsGranularity_;
      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()) {
          metricsGranularity_ = s;
        }
        return s;
      }
    }
    /**
     * optional string metrics_granularity = 15 [default = "shard"];
     * @return The bytes for metricsGranularity.
     */
    public com.google.protobuf.ByteString
        getMetricsGranularityBytes() {
      java.lang.Object ref = metricsGranularity_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        metricsGranularity_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METRICS_LEVEL_FIELD_NUMBER = 16;
    private volatile java.lang.Object metricsLevel_;
    /**
     * optional string metrics_level = 16 [default = "detailed"];
     * @return Whether the metricsLevel field is set.
     */
    public boolean hasMetricsLevel() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * optional string metrics_level = 16 [default = "detailed"];
     * @return The metricsLevel.
     */
    public java.lang.String getMetricsLevel() {
      java.lang.Object ref = metricsLevel_;
      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()) {
          metricsLevel_ = s;
        }
        return s;
      }
    }
    /**
     * optional string metrics_level = 16 [default = "detailed"];
     * @return The bytes for metricsLevel.
     */
    public com.google.protobuf.ByteString
        getMetricsLevelBytes() {
      java.lang.Object ref = metricsLevel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        metricsLevel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METRICS_NAMESPACE_FIELD_NUMBER = 17;
    private volatile java.lang.Object metricsNamespace_;
    /**
     * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
     * @return Whether the metricsNamespace field is set.
     */
    public boolean hasMetricsNamespace() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
     * @return The metricsNamespace.
     */
    public java.lang.String getMetricsNamespace() {
      java.lang.Object ref = metricsNamespace_;
      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()) {
          metricsNamespace_ = s;
        }
        return s;
      }
    }
    /**
     * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
     * @return The bytes for metricsNamespace.
     */
    public com.google.protobuf.ByteString
        getMetricsNamespaceBytes() {
      java.lang.Object ref = metricsNamespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        metricsNamespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METRICS_UPLOAD_DELAY_FIELD_NUMBER = 18;
    private long metricsUploadDelay_;
    /**
     * optional uint64 metrics_upload_delay = 18 [default = 60000];
     * @return Whether the metricsUploadDelay field is set.
     */
    public boolean hasMetricsUploadDelay() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * optional uint64 metrics_upload_delay = 18 [default = 60000];
     * @return The metricsUploadDelay.
     */
    public long getMetricsUploadDelay() {
      return metricsUploadDelay_;
    }

    public static final int MIN_CONNECTIONS_FIELD_NUMBER = 19;
    private long minConnections_;
    /**
     * optional uint64 min_connections = 19 [default = 1];
     * @return Whether the minConnections field is set.
     */
    public boolean hasMinConnections() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * optional uint64 min_connections = 19 [default = 1];
     * @return The minConnections.
     */
    public long getMinConnections() {
      return minConnections_;
    }

    public static final int RATE_LIMIT_FIELD_NUMBER = 20;
    private long rateLimit_;
    /**
     * optional uint64 rate_limit = 20 [default = 150];
     * @return Whether the rateLimit field is set.
     */
    public boolean hasRateLimit() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * optional uint64 rate_limit = 20 [default = 150];
     * @return The rateLimit.
     */
    public long getRateLimit() {
      return rateLimit_;
    }

    public static final int RECORD_MAX_BUFFERED_TIME_FIELD_NUMBER = 21;
    private long recordMaxBufferedTime_;
    /**
     * optional uint64 record_max_buffered_time = 21 [default = 100];
     * @return Whether the recordMaxBufferedTime field is set.
     */
    public boolean hasRecordMaxBufferedTime() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * optional uint64 record_max_buffered_time = 21 [default = 100];
     * @return The recordMaxBufferedTime.
     */
    public long getRecordMaxBufferedTime() {
      return recordMaxBufferedTime_;
    }

    public static final int RECORD_TTL_FIELD_NUMBER = 22;
    private long recordTtl_;
    /**
     * optional uint64 record_ttl = 22 [default = 30000];
     * @return Whether the recordTtl field is set.
     */
    public boolean hasRecordTtl() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * optional uint64 record_ttl = 22 [default = 30000];
     * @return The recordTtl.
     */
    public long getRecordTtl() {
      return recordTtl_;
    }

    public static final int REGION_FIELD_NUMBER = 23;
    private volatile java.lang.Object region_;
    /**
     * optional string region = 23 [default = ""];
     * @return Whether the region field is set.
     */
    public boolean hasRegion() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * optional string region = 23 [default = ""];
     * @return The region.
     */
    public java.lang.String getRegion() {
      java.lang.Object ref = region_;
      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()) {
          region_ = s;
        }
        return s;
      }
    }
    /**
     * optional string region = 23 [default = ""];
     * @return The bytes for region.
     */
    public com.google.protobuf.ByteString
        getRegionBytes() {
      java.lang.Object ref = region_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        region_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUEST_TIMEOUT_FIELD_NUMBER = 24;
    private long requestTimeout_;
    /**
     * optional uint64 request_timeout = 24 [default = 6000];
     * @return Whether the requestTimeout field is set.
     */
    public boolean hasRequestTimeout() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * optional uint64 request_timeout = 24 [default = 6000];
     * @return The requestTimeout.
     */
    public long getRequestTimeout() {
      return requestTimeout_;
    }

    public static final int VERIFY_CERTIFICATE_FIELD_NUMBER = 25;
    private boolean verifyCertificate_;
    /**
     * optional bool verify_certificate = 25 [default = true];
     * @return Whether the verifyCertificate field is set.
     */
    public boolean hasVerifyCertificate() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * optional bool verify_certificate = 25 [default = true];
     * @return The verifyCertificate.
     */
    public boolean getVerifyCertificate() {
      return verifyCertificate_;
    }

    public static final int PROXY_HOST_FIELD_NUMBER = 26;
    private volatile java.lang.Object proxyHost_;
    /**
     * optional string proxy_host = 26 [default = ""];
     * @return Whether the proxyHost field is set.
     */
    public boolean hasProxyHost() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * optional string proxy_host = 26 [default = ""];
     * @return The proxyHost.
     */
    public java.lang.String getProxyHost() {
      java.lang.Object ref = proxyHost_;
      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()) {
          proxyHost_ = s;
        }
        return s;
      }
    }
    /**
     * optional string proxy_host = 26 [default = ""];
     * @return The bytes for proxyHost.
     */
    public com.google.protobuf.ByteString
        getProxyHostBytes() {
      java.lang.Object ref = proxyHost_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        proxyHost_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROXY_PORT_FIELD_NUMBER = 27;
    private long proxyPort_;
    /**
     * optional uint64 proxy_port = 27 [default = 443];
     * @return Whether the proxyPort field is set.
     */
    public boolean hasProxyPort() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * optional uint64 proxy_port = 27 [default = 443];
     * @return The proxyPort.
     */
    public long getProxyPort() {
      return proxyPort_;
    }

    public static final int PROXY_USER_NAME_FIELD_NUMBER = 28;
    private volatile java.lang.Object proxyUserName_;
    /**
     * optional string proxy_user_name = 28 [default = ""];
     * @return Whether the proxyUserName field is set.
     */
    public boolean hasProxyUserName() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * optional string proxy_user_name = 28 [default = ""];
     * @return The proxyUserName.
     */
    public java.lang.String getProxyUserName() {
      java.lang.Object ref = proxyUserName_;
      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()) {
          proxyUserName_ = s;
        }
        return s;
      }
    }
    /**
     * optional string proxy_user_name = 28 [default = ""];
     * @return The bytes for proxyUserName.
     */
    public com.google.protobuf.ByteString
        getProxyUserNameBytes() {
      java.lang.Object ref = proxyUserName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        proxyUserName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROXY_PASSWORD_FIELD_NUMBER = 29;
    private volatile java.lang.Object proxyPassword_;
    /**
     * optional string proxy_password = 29 [default = ""];
     * @return Whether the proxyPassword field is set.
     */
    public boolean hasProxyPassword() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * optional string proxy_password = 29 [default = ""];
     * @return The proxyPassword.
     */
    public java.lang.String getProxyPassword() {
      java.lang.Object ref = proxyPassword_;
      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()) {
          proxyPassword_ = s;
        }
        return s;
      }
    }
    /**
     * optional string proxy_password = 29 [default = ""];
     * @return The bytes for proxyPassword.
     */
    public com.google.protobuf.ByteString
        getProxyPasswordBytes() {
      java.lang.Object ref = proxyPassword_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        proxyPassword_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STS_ENDPOINT_FIELD_NUMBER = 32;
    private volatile java.lang.Object stsEndpoint_;
    /**
     * optional string sts_endpoint = 32 [default = ""];
     * @return Whether the stsEndpoint field is set.
     */
    public boolean hasStsEndpoint() {
      return ((bitField0_ & 0x20000000) != 0);
    }
    /**
     * optional string sts_endpoint = 32 [default = ""];
     * @return The stsEndpoint.
     */
    public java.lang.String getStsEndpoint() {
      java.lang.Object ref = stsEndpoint_;
      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()) {
          stsEndpoint_ = s;
        }
        return s;
      }
    }
    /**
     * optional string sts_endpoint = 32 [default = ""];
     * @return The bytes for stsEndpoint.
     */
    public com.google.protobuf.ByteString
        getStsEndpointBytes() {
      java.lang.Object ref = stsEndpoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stsEndpoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STS_PORT_FIELD_NUMBER = 33;
    private long stsPort_;
    /**
     * optional uint64 sts_port = 33 [default = 443];
     * @return Whether the stsPort field is set.
     */
    public boolean hasStsPort() {
      return ((bitField0_ & 0x40000000) != 0);
    }
    /**
     * optional uint64 sts_port = 33 [default = 443];
     * @return The stsPort.
     */
    public long getStsPort() {
      return stsPort_;
    }

    public static final int THREAD_CONFIG_FIELD_NUMBER = 30;
    private int threadConfig_;
    /**
     * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
     * @return Whether the threadConfig field is set.
     */
    public boolean hasThreadConfig() {
      return ((bitField0_ & 0x80000000) != 0);
    }
    /**
     * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
     * @return The threadConfig.
     */
    public com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig getThreadConfig() {
      @SuppressWarnings("deprecation")
      com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig result = com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig.valueOf(threadConfig_);
      return result == null ? com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig.PER_REQUEST : result;
    }

    public static final int THREAD_POOL_SIZE_FIELD_NUMBER = 31;
    private int threadPoolSize_;
    /**
     * optional uint32 thread_pool_size = 31 [default = 64];
     * @return Whether the threadPoolSize field is set.
     */
    public boolean hasThreadPoolSize() {
      return ((bitField1_ & 0x00000001) != 0);
    }
    /**
     * optional uint32 thread_pool_size = 31 [default = 64];
     * @return The threadPoolSize.
     */
    public int getThreadPoolSize() {
      return threadPoolSize_;
    }

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

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

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, aggregationEnabled_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, aggregationMaxCount_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt64(3, aggregationMaxSize_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, cloudwatchEndpoint_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt64(5, cloudwatchPort_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt64(6, collectionMaxCount_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt64(7, collectionMaxSize_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeUInt64(8, connectTimeout_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(9, enableCoreDumps_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(10, failIfThrottled_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, kinesisEndpoint_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeUInt64(12, kinesisPort_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, logLevel_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeUInt64(14, maxConnections_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, metricsGranularity_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, metricsLevel_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 17, metricsNamespace_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeUInt64(18, metricsUploadDelay_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeUInt64(19, minConnections_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeUInt64(20, rateLimit_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeUInt64(21, recordMaxBufferedTime_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeUInt64(22, recordTtl_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 23, region_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeUInt64(24, requestTimeout_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        output.writeBool(25, verifyCertificate_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 26, proxyHost_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        output.writeUInt64(27, proxyPort_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 28, proxyUserName_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 29, proxyPassword_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        output.writeEnum(30, threadConfig_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        output.writeUInt32(31, threadPoolSize_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 32, stsEndpoint_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        output.writeUInt64(33, stsPort_);
      }
      for (int i = 0; i < additionalMetricDims_.size(); i++) {
        output.writeMessage(128, additionalMetricDims_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, aggregationEnabled_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, aggregationMaxCount_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, aggregationMaxSize_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, cloudwatchEndpoint_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, cloudwatchPort_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, collectionMaxCount_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(7, collectionMaxSize_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(8, connectTimeout_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, enableCoreDumps_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, failIfThrottled_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, kinesisEndpoint_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(12, kinesisPort_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, logLevel_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(14, maxConnections_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, metricsGranularity_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, metricsLevel_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, metricsNamespace_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(18, metricsUploadDelay_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(19, minConnections_);
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(20, rateLimit_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(21, recordMaxBufferedTime_);
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(22, recordTtl_);
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(23, region_);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(24, requestTimeout_);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(25, verifyCertificate_);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(26, proxyHost_);
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(27, proxyPort_);
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(28, proxyUserName_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(29, proxyPassword_);
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(30, threadConfig_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(31, threadPoolSize_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(32, stsEndpoint_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(33, stsPort_);
      }
      for (int i = 0; i < additionalMetricDims_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(128, additionalMetricDims_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration)) {
        return super.equals(obj);
      }
      com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration other = (com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration) obj;

      if (!getAdditionalMetricDimsList()
          .equals(other.getAdditionalMetricDimsList())) return false;
      if (hasAggregationEnabled() != other.hasAggregationEnabled()) return false;
      if (hasAggregationEnabled()) {
        if (getAggregationEnabled()
            != other.getAggregationEnabled()) return false;
      }
      if (hasAggregationMaxCount() != other.hasAggregationMaxCount()) return false;
      if (hasAggregationMaxCount()) {
        if (getAggregationMaxCount()
            != other.getAggregationMaxCount()) return false;
      }
      if (hasAggregationMaxSize() != other.hasAggregationMaxSize()) return false;
      if (hasAggregationMaxSize()) {
        if (getAggregationMaxSize()
            != other.getAggregationMaxSize()) return false;
      }
      if (hasCloudwatchEndpoint() != other.hasCloudwatchEndpoint()) return false;
      if (hasCloudwatchEndpoint()) {
        if (!getCloudwatchEndpoint()
            .equals(other.getCloudwatchEndpoint())) return false;
      }
      if (hasCloudwatchPort() != other.hasCloudwatchPort()) return false;
      if (hasCloudwatchPort()) {
        if (getCloudwatchPort()
            != other.getCloudwatchPort()) return false;
      }
      if (hasCollectionMaxCount() != other.hasCollectionMaxCount()) return false;
      if (hasCollectionMaxCount()) {
        if (getCollectionMaxCount()
            != other.getCollectionMaxCount()) return false;
      }
      if (hasCollectionMaxSize() != other.hasCollectionMaxSize()) return false;
      if (hasCollectionMaxSize()) {
        if (getCollectionMaxSize()
            != other.getCollectionMaxSize()) return false;
      }
      if (hasConnectTimeout() != other.hasConnectTimeout()) return false;
      if (hasConnectTimeout()) {
        if (getConnectTimeout()
            != other.getConnectTimeout()) return false;
      }
      if (hasEnableCoreDumps() != other.hasEnableCoreDumps()) return false;
      if (hasEnableCoreDumps()) {
        if (getEnableCoreDumps()
            != other.getEnableCoreDumps()) return false;
      }
      if (hasFailIfThrottled() != other.hasFailIfThrottled()) return false;
      if (hasFailIfThrottled()) {
        if (getFailIfThrottled()
            != other.getFailIfThrottled()) return false;
      }
      if (hasKinesisEndpoint() != other.hasKinesisEndpoint()) return false;
      if (hasKinesisEndpoint()) {
        if (!getKinesisEndpoint()
            .equals(other.getKinesisEndpoint())) return false;
      }
      if (hasKinesisPort() != other.hasKinesisPort()) return false;
      if (hasKinesisPort()) {
        if (getKinesisPort()
            != other.getKinesisPort()) return false;
      }
      if (hasLogLevel() != other.hasLogLevel()) return false;
      if (hasLogLevel()) {
        if (!getLogLevel()
            .equals(other.getLogLevel())) return false;
      }
      if (hasMaxConnections() != other.hasMaxConnections()) return false;
      if (hasMaxConnections()) {
        if (getMaxConnections()
            != other.getMaxConnections()) return false;
      }
      if (hasMetricsGranularity() != other.hasMetricsGranularity()) return false;
      if (hasMetricsGranularity()) {
        if (!getMetricsGranularity()
            .equals(other.getMetricsGranularity())) return false;
      }
      if (hasMetricsLevel() != other.hasMetricsLevel()) return false;
      if (hasMetricsLevel()) {
        if (!getMetricsLevel()
            .equals(other.getMetricsLevel())) return false;
      }
      if (hasMetricsNamespace() != other.hasMetricsNamespace()) return false;
      if (hasMetricsNamespace()) {
        if (!getMetricsNamespace()
            .equals(other.getMetricsNamespace())) return false;
      }
      if (hasMetricsUploadDelay() != other.hasMetricsUploadDelay()) return false;
      if (hasMetricsUploadDelay()) {
        if (getMetricsUploadDelay()
            != other.getMetricsUploadDelay()) return false;
      }
      if (hasMinConnections() != other.hasMinConnections()) return false;
      if (hasMinConnections()) {
        if (getMinConnections()
            != other.getMinConnections()) return false;
      }
      if (hasRateLimit() != other.hasRateLimit()) return false;
      if (hasRateLimit()) {
        if (getRateLimit()
            != other.getRateLimit()) return false;
      }
      if (hasRecordMaxBufferedTime() != other.hasRecordMaxBufferedTime()) return false;
      if (hasRecordMaxBufferedTime()) {
        if (getRecordMaxBufferedTime()
            != other.getRecordMaxBufferedTime()) return false;
      }
      if (hasRecordTtl() != other.hasRecordTtl()) return false;
      if (hasRecordTtl()) {
        if (getRecordTtl()
            != other.getRecordTtl()) return false;
      }
      if (hasRegion() != other.hasRegion()) return false;
      if (hasRegion()) {
        if (!getRegion()
            .equals(other.getRegion())) return false;
      }
      if (hasRequestTimeout() != other.hasRequestTimeout()) return false;
      if (hasRequestTimeout()) {
        if (getRequestTimeout()
            != other.getRequestTimeout()) return false;
      }
      if (hasVerifyCertificate() != other.hasVerifyCertificate()) return false;
      if (hasVerifyCertificate()) {
        if (getVerifyCertificate()
            != other.getVerifyCertificate()) return false;
      }
      if (hasProxyHost() != other.hasProxyHost()) return false;
      if (hasProxyHost()) {
        if (!getProxyHost()
            .equals(other.getProxyHost())) return false;
      }
      if (hasProxyPort() != other.hasProxyPort()) return false;
      if (hasProxyPort()) {
        if (getProxyPort()
            != other.getProxyPort()) return false;
      }
      if (hasProxyUserName() != other.hasProxyUserName()) return false;
      if (hasProxyUserName()) {
        if (!getProxyUserName()
            .equals(other.getProxyUserName())) return false;
      }
      if (hasProxyPassword() != other.hasProxyPassword()) return false;
      if (hasProxyPassword()) {
        if (!getProxyPassword()
            .equals(other.getProxyPassword())) return false;
      }
      if (hasStsEndpoint() != other.hasStsEndpoint()) return false;
      if (hasStsEndpoint()) {
        if (!getStsEndpoint()
            .equals(other.getStsEndpoint())) return false;
      }
      if (hasStsPort() != other.hasStsPort()) return false;
      if (hasStsPort()) {
        if (getStsPort()
            != other.getStsPort()) return false;
      }
      if (hasThreadConfig() != other.hasThreadConfig()) return false;
      if (hasThreadConfig()) {
        if (threadConfig_ != other.threadConfig_) return false;
      }
      if (hasThreadPoolSize() != other.hasThreadPoolSize()) return false;
      if (hasThreadPoolSize()) {
        if (getThreadPoolSize()
            != other.getThreadPoolSize()) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getAdditionalMetricDimsCount() > 0) {
        hash = (37 * hash) + ADDITIONAL_METRIC_DIMS_FIELD_NUMBER;
        hash = (53 * hash) + getAdditionalMetricDimsList().hashCode();
      }
      if (hasAggregationEnabled()) {
        hash = (37 * hash) + AGGREGATION_ENABLED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAggregationEnabled());
      }
      if (hasAggregationMaxCount()) {
        hash = (37 * hash) + AGGREGATION_MAX_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getAggregationMaxCount());
      }
      if (hasAggregationMaxSize()) {
        hash = (37 * hash) + AGGREGATION_MAX_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getAggregationMaxSize());
      }
      if (hasCloudwatchEndpoint()) {
        hash = (37 * hash) + CLOUDWATCH_ENDPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getCloudwatchEndpoint().hashCode();
      }
      if (hasCloudwatchPort()) {
        hash = (37 * hash) + CLOUDWATCH_PORT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCloudwatchPort());
      }
      if (hasCollectionMaxCount()) {
        hash = (37 * hash) + COLLECTION_MAX_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCollectionMaxCount());
      }
      if (hasCollectionMaxSize()) {
        hash = (37 * hash) + COLLECTION_MAX_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCollectionMaxSize());
      }
      if (hasConnectTimeout()) {
        hash = (37 * hash) + CONNECT_TIMEOUT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getConnectTimeout());
      }
      if (hasEnableCoreDumps()) {
        hash = (37 * hash) + ENABLE_CORE_DUMPS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getEnableCoreDumps());
      }
      if (hasFailIfThrottled()) {
        hash = (37 * hash) + FAIL_IF_THROTTLED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getFailIfThrottled());
      }
      if (hasKinesisEndpoint()) {
        hash = (37 * hash) + KINESIS_ENDPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getKinesisEndpoint().hashCode();
      }
      if (hasKinesisPort()) {
        hash = (37 * hash) + KINESIS_PORT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getKinesisPort());
      }
      if (hasLogLevel()) {
        hash = (37 * hash) + LOG_LEVEL_FIELD_NUMBER;
        hash = (53 * hash) + getLogLevel().hashCode();
      }
      if (hasMaxConnections()) {
        hash = (37 * hash) + MAX_CONNECTIONS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMaxConnections());
      }
      if (hasMetricsGranularity()) {
        hash = (37 * hash) + METRICS_GRANULARITY_FIELD_NUMBER;
        hash = (53 * hash) + getMetricsGranularity().hashCode();
      }
      if (hasMetricsLevel()) {
        hash = (37 * hash) + METRICS_LEVEL_FIELD_NUMBER;
        hash = (53 * hash) + getMetricsLevel().hashCode();
      }
      if (hasMetricsNamespace()) {
        hash = (37 * hash) + METRICS_NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getMetricsNamespace().hashCode();
      }
      if (hasMetricsUploadDelay()) {
        hash = (37 * hash) + METRICS_UPLOAD_DELAY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMetricsUploadDelay());
      }
      if (hasMinConnections()) {
        hash = (37 * hash) + MIN_CONNECTIONS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMinConnections());
      }
      if (hasRateLimit()) {
        hash = (37 * hash) + RATE_LIMIT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRateLimit());
      }
      if (hasRecordMaxBufferedTime()) {
        hash = (37 * hash) + RECORD_MAX_BUFFERED_TIME_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRecordMaxBufferedTime());
      }
      if (hasRecordTtl()) {
        hash = (37 * hash) + RECORD_TTL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRecordTtl());
      }
      if (hasRegion()) {
        hash = (37 * hash) + REGION_FIELD_NUMBER;
        hash = (53 * hash) + getRegion().hashCode();
      }
      if (hasRequestTimeout()) {
        hash = (37 * hash) + REQUEST_TIMEOUT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRequestTimeout());
      }
      if (hasVerifyCertificate()) {
        hash = (37 * hash) + VERIFY_CERTIFICATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getVerifyCertificate());
      }
      if (hasProxyHost()) {
        hash = (37 * hash) + PROXY_HOST_FIELD_NUMBER;
        hash = (53 * hash) + getProxyHost().hashCode();
      }
      if (hasProxyPort()) {
        hash = (37 * hash) + PROXY_PORT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getProxyPort());
      }
      if (hasProxyUserName()) {
        hash = (37 * hash) + PROXY_USER_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getProxyUserName().hashCode();
      }
      if (hasProxyPassword()) {
        hash = (37 * hash) + PROXY_PASSWORD_FIELD_NUMBER;
        hash = (53 * hash) + getProxyPassword().hashCode();
      }
      if (hasStsEndpoint()) {
        hash = (37 * hash) + STS_ENDPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getStsEndpoint().hashCode();
      }
      if (hasStsPort()) {
        hash = (37 * hash) + STS_PORT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getStsPort());
      }
      if (hasThreadConfig()) {
        hash = (37 * hash) + THREAD_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + threadConfig_;
      }
      if (hasThreadPoolSize()) {
        hash = (37 * hash) + THREAD_POOL_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + getThreadPoolSize();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration 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.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration 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.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code aws.kinesis.protobuf.Configuration}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:aws.kinesis.protobuf.Configuration)
        com.amazonaws.services.kinesis.producer.protobuf.Config.ConfigurationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_Configuration_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_Configuration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.class, com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.Builder.class);
      }

      // Construct using com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAdditionalMetricDimsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (additionalMetricDimsBuilder_ == null) {
          additionalMetricDims_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          additionalMetricDimsBuilder_.clear();
        }
        aggregationEnabled_ = true;
        bitField0_ = (bitField0_ & ~0x00000002);
        aggregationMaxCount_ = 4294967295L;
        bitField0_ = (bitField0_ & ~0x00000004);
        aggregationMaxSize_ = 51200L;
        bitField0_ = (bitField0_ & ~0x00000008);
        cloudwatchEndpoint_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        cloudwatchPort_ = 443L;
        bitField0_ = (bitField0_ & ~0x00000020);
        collectionMaxCount_ = 500L;
        bitField0_ = (bitField0_ & ~0x00000040);
        collectionMaxSize_ = 5242880L;
        bitField0_ = (bitField0_ & ~0x00000080);
        connectTimeout_ = 6000L;
        bitField0_ = (bitField0_ & ~0x00000100);
        enableCoreDumps_ = false;
        bitField0_ = (bitField0_ & ~0x00000200);
        failIfThrottled_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        kinesisEndpoint_ = "";
        bitField0_ = (bitField0_ & ~0x00000800);
        kinesisPort_ = 443L;
        bitField0_ = (bitField0_ & ~0x00001000);
        logLevel_ = "info";
        bitField0_ = (bitField0_ & ~0x00002000);
        maxConnections_ = 24L;
        bitField0_ = (bitField0_ & ~0x00004000);
        metricsGranularity_ = "shard";
        bitField0_ = (bitField0_ & ~0x00008000);
        metricsLevel_ = "detailed";
        bitField0_ = (bitField0_ & ~0x00010000);
        metricsNamespace_ = "KinesisProducerLibrary";
        bitField0_ = (bitField0_ & ~0x00020000);
        metricsUploadDelay_ = 60000L;
        bitField0_ = (bitField0_ & ~0x00040000);
        minConnections_ = 1L;
        bitField0_ = (bitField0_ & ~0x00080000);
        rateLimit_ = 150L;
        bitField0_ = (bitField0_ & ~0x00100000);
        recordMaxBufferedTime_ = 100L;
        bitField0_ = (bitField0_ & ~0x00200000);
        recordTtl_ = 30000L;
        bitField0_ = (bitField0_ & ~0x00400000);
        region_ = "";
        bitField0_ = (bitField0_ & ~0x00800000);
        requestTimeout_ = 6000L;
        bitField0_ = (bitField0_ & ~0x01000000);
        verifyCertificate_ = true;
        bitField0_ = (bitField0_ & ~0x02000000);
        proxyHost_ = "";
        bitField0_ = (bitField0_ & ~0x04000000);
        proxyPort_ = 443L;
        bitField0_ = (bitField0_ & ~0x08000000);
        proxyUserName_ = "";
        bitField0_ = (bitField0_ & ~0x10000000);
        proxyPassword_ = "";
        bitField0_ = (bitField0_ & ~0x20000000);
        stsEndpoint_ = "";
        bitField0_ = (bitField0_ & ~0x40000000);
        stsPort_ = 443L;
        bitField0_ = (bitField0_ & ~0x80000000);
        threadConfig_ = 0;
        bitField1_ = (bitField1_ & ~0x00000001);
        threadPoolSize_ = 64;
        bitField1_ = (bitField1_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.internal_static_aws_kinesis_protobuf_Configuration_descriptor;
      }

      @java.lang.Override
      public com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration getDefaultInstanceForType() {
        return com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.getDefaultInstance();
      }

      @java.lang.Override
      public com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration build() {
        com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration buildPartial() {
        com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration result = new com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration(this);
        int from_bitField0_ = bitField0_;
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        int to_bitField1_ = 0;
        if (additionalMetricDimsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            additionalMetricDims_ = java.util.Collections.unmodifiableList(additionalMetricDims_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.additionalMetricDims_ = additionalMetricDims_;
        } else {
          result.additionalMetricDims_ = additionalMetricDimsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.aggregationEnabled_ = aggregationEnabled_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.aggregationMaxCount_ = aggregationMaxCount_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.aggregationMaxSize_ = aggregationMaxSize_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.cloudwatchEndpoint_ = cloudwatchEndpoint_;
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000010;
        }
        result.cloudwatchPort_ = cloudwatchPort_;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.collectionMaxCount_ = collectionMaxCount_;
        if (((from_bitField0_ & 0x00000080) != 0)) {
          to_bitField0_ |= 0x00000040;
        }
        result.collectionMaxSize_ = collectionMaxSize_;
        if (((from_bitField0_ & 0x00000100) != 0)) {
          to_bitField0_ |= 0x00000080;
        }
        result.connectTimeout_ = connectTimeout_;
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.enableCoreDumps_ = enableCoreDumps_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.failIfThrottled_ = failIfThrottled_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          to_bitField0_ |= 0x00000400;
        }
        result.kinesisEndpoint_ = kinesisEndpoint_;
        if (((from_bitField0_ & 0x00001000) != 0)) {
          to_bitField0_ |= 0x00000800;
        }
        result.kinesisPort_ = kinesisPort_;
        if (((from_bitField0_ & 0x00002000) != 0)) {
          to_bitField0_ |= 0x00001000;
        }
        result.logLevel_ = logLevel_;
        if (((from_bitField0_ & 0x00004000) != 0)) {
          to_bitField0_ |= 0x00002000;
        }
        result.maxConnections_ = maxConnections_;
        if (((from_bitField0_ & 0x00008000) != 0)) {
          to_bitField0_ |= 0x00004000;
        }
        result.metricsGranularity_ = metricsGranularity_;
        if (((from_bitField0_ & 0x00010000) != 0)) {
          to_bitField0_ |= 0x00008000;
        }
        result.metricsLevel_ = metricsLevel_;
        if (((from_bitField0_ & 0x00020000) != 0)) {
          to_bitField0_ |= 0x00010000;
        }
        result.metricsNamespace_ = metricsNamespace_;
        if (((from_bitField0_ & 0x00040000) != 0)) {
          to_bitField0_ |= 0x00020000;
        }
        result.metricsUploadDelay_ = metricsUploadDelay_;
        if (((from_bitField0_ & 0x00080000) != 0)) {
          to_bitField0_ |= 0x00040000;
        }
        result.minConnections_ = minConnections_;
        if (((from_bitField0_ & 0x00100000) != 0)) {
          to_bitField0_ |= 0x00080000;
        }
        result.rateLimit_ = rateLimit_;
        if (((from_bitField0_ & 0x00200000) != 0)) {
          to_bitField0_ |= 0x00100000;
        }
        result.recordMaxBufferedTime_ = recordMaxBufferedTime_;
        if (((from_bitField0_ & 0x00400000) != 0)) {
          to_bitField0_ |= 0x00200000;
        }
        result.recordTtl_ = recordTtl_;
        if (((from_bitField0_ & 0x00800000) != 0)) {
          to_bitField0_ |= 0x00400000;
        }
        result.region_ = region_;
        if (((from_bitField0_ & 0x01000000) != 0)) {
          to_bitField0_ |= 0x00800000;
        }
        result.requestTimeout_ = requestTimeout_;
        if (((from_bitField0_ & 0x02000000) != 0)) {
          to_bitField0_ |= 0x01000000;
        }
        result.verifyCertificate_ = verifyCertificate_;
        if (((from_bitField0_ & 0x04000000) != 0)) {
          to_bitField0_ |= 0x02000000;
        }
        result.proxyHost_ = proxyHost_;
        if (((from_bitField0_ & 0x08000000) != 0)) {
          to_bitField0_ |= 0x04000000;
        }
        result.proxyPort_ = proxyPort_;
        if (((from_bitField0_ & 0x10000000) != 0)) {
          to_bitField0_ |= 0x08000000;
        }
        result.proxyUserName_ = proxyUserName_;
        if (((from_bitField0_ & 0x20000000) != 0)) {
          to_bitField0_ |= 0x10000000;
        }
        result.proxyPassword_ = proxyPassword_;
        if (((from_bitField0_ & 0x40000000) != 0)) {
          to_bitField0_ |= 0x20000000;
        }
        result.stsEndpoint_ = stsEndpoint_;
        if (((from_bitField0_ & 0x80000000) != 0)) {
          to_bitField0_ |= 0x40000000;
        }
        result.stsPort_ = stsPort_;
        if (((from_bitField1_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x80000000;
        }
        result.threadConfig_ = threadConfig_;
        if (((from_bitField1_ & 0x00000002) != 0)) {
          to_bitField1_ |= 0x00000001;
        }
        result.threadPoolSize_ = threadPoolSize_;
        result.bitField0_ = to_bitField0_;
        result.bitField1_ = to_bitField1_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration) {
          return mergeFrom((com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration other) {
        if (other == com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.getDefaultInstance()) return this;
        if (additionalMetricDimsBuilder_ == null) {
          if (!other.additionalMetricDims_.isEmpty()) {
            if (additionalMetricDims_.isEmpty()) {
              additionalMetricDims_ = other.additionalMetricDims_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAdditionalMetricDimsIsMutable();
              additionalMetricDims_.addAll(other.additionalMetricDims_);
            }
            onChanged();
          }
        } else {
          if (!other.additionalMetricDims_.isEmpty()) {
            if (additionalMetricDimsBuilder_.isEmpty()) {
              additionalMetricDimsBuilder_.dispose();
              additionalMetricDimsBuilder_ = null;
              additionalMetricDims_ = other.additionalMetricDims_;
              bitField0_ = (bitField0_ & ~0x00000001);
              additionalMetricDimsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAdditionalMetricDimsFieldBuilder() : null;
            } else {
              additionalMetricDimsBuilder_.addAllMessages(other.additionalMetricDims_);
            }
          }
        }
        if (other.hasAggregationEnabled()) {
          setAggregationEnabled(other.getAggregationEnabled());
        }
        if (other.hasAggregationMaxCount()) {
          setAggregationMaxCount(other.getAggregationMaxCount());
        }
        if (other.hasAggregationMaxSize()) {
          setAggregationMaxSize(other.getAggregationMaxSize());
        }
        if (other.hasCloudwatchEndpoint()) {
          bitField0_ |= 0x00000010;
          cloudwatchEndpoint_ = other.cloudwatchEndpoint_;
          onChanged();
        }
        if (other.hasCloudwatchPort()) {
          setCloudwatchPort(other.getCloudwatchPort());
        }
        if (other.hasCollectionMaxCount()) {
          setCollectionMaxCount(other.getCollectionMaxCount());
        }
        if (other.hasCollectionMaxSize()) {
          setCollectionMaxSize(other.getCollectionMaxSize());
        }
        if (other.hasConnectTimeout()) {
          setConnectTimeout(other.getConnectTimeout());
        }
        if (other.hasEnableCoreDumps()) {
          setEnableCoreDumps(other.getEnableCoreDumps());
        }
        if (other.hasFailIfThrottled()) {
          setFailIfThrottled(other.getFailIfThrottled());
        }
        if (other.hasKinesisEndpoint()) {
          bitField0_ |= 0x00000800;
          kinesisEndpoint_ = other.kinesisEndpoint_;
          onChanged();
        }
        if (other.hasKinesisPort()) {
          setKinesisPort(other.getKinesisPort());
        }
        if (other.hasLogLevel()) {
          bitField0_ |= 0x00002000;
          logLevel_ = other.logLevel_;
          onChanged();
        }
        if (other.hasMaxConnections()) {
          setMaxConnections(other.getMaxConnections());
        }
        if (other.hasMetricsGranularity()) {
          bitField0_ |= 0x00008000;
          metricsGranularity_ = other.metricsGranularity_;
          onChanged();
        }
        if (other.hasMetricsLevel()) {
          bitField0_ |= 0x00010000;
          metricsLevel_ = other.metricsLevel_;
          onChanged();
        }
        if (other.hasMetricsNamespace()) {
          bitField0_ |= 0x00020000;
          metricsNamespace_ = other.metricsNamespace_;
          onChanged();
        }
        if (other.hasMetricsUploadDelay()) {
          setMetricsUploadDelay(other.getMetricsUploadDelay());
        }
        if (other.hasMinConnections()) {
          setMinConnections(other.getMinConnections());
        }
        if (other.hasRateLimit()) {
          setRateLimit(other.getRateLimit());
        }
        if (other.hasRecordMaxBufferedTime()) {
          setRecordMaxBufferedTime(other.getRecordMaxBufferedTime());
        }
        if (other.hasRecordTtl()) {
          setRecordTtl(other.getRecordTtl());
        }
        if (other.hasRegion()) {
          bitField0_ |= 0x00800000;
          region_ = other.region_;
          onChanged();
        }
        if (other.hasRequestTimeout()) {
          setRequestTimeout(other.getRequestTimeout());
        }
        if (other.hasVerifyCertificate()) {
          setVerifyCertificate(other.getVerifyCertificate());
        }
        if (other.hasProxyHost()) {
          bitField0_ |= 0x04000000;
          proxyHost_ = other.proxyHost_;
          onChanged();
        }
        if (other.hasProxyPort()) {
          setProxyPort(other.getProxyPort());
        }
        if (other.hasProxyUserName()) {
          bitField0_ |= 0x10000000;
          proxyUserName_ = other.proxyUserName_;
          onChanged();
        }
        if (other.hasProxyPassword()) {
          bitField0_ |= 0x20000000;
          proxyPassword_ = other.proxyPassword_;
          onChanged();
        }
        if (other.hasStsEndpoint()) {
          bitField0_ |= 0x40000000;
          stsEndpoint_ = other.stsEndpoint_;
          onChanged();
        }
        if (other.hasStsPort()) {
          setStsPort(other.getStsPort());
        }
        if (other.hasThreadConfig()) {
          setThreadConfig(other.getThreadConfig());
        }
        if (other.hasThreadPoolSize()) {
          setThreadPoolSize(other.getThreadPoolSize());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getAdditionalMetricDimsCount(); i++) {
          if (!getAdditionalMetricDims(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;
      private int bitField1_;

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

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder> additionalMetricDimsBuilder_;

      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public java.util.List getAdditionalMetricDimsList() {
        if (additionalMetricDimsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(additionalMetricDims_);
        } else {
          return additionalMetricDimsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public int getAdditionalMetricDimsCount() {
        if (additionalMetricDimsBuilder_ == null) {
          return additionalMetricDims_.size();
        } else {
          return additionalMetricDimsBuilder_.getCount();
        }
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension getAdditionalMetricDims(int index) {
        if (additionalMetricDimsBuilder_ == null) {
          return additionalMetricDims_.get(index);
        } else {
          return additionalMetricDimsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder setAdditionalMetricDims(
          int index, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension value) {
        if (additionalMetricDimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.set(index, value);
          onChanged();
        } else {
          additionalMetricDimsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder setAdditionalMetricDims(
          int index, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder builderForValue) {
        if (additionalMetricDimsBuilder_ == null) {
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.set(index, builderForValue.build());
          onChanged();
        } else {
          additionalMetricDimsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder addAdditionalMetricDims(com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension value) {
        if (additionalMetricDimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.add(value);
          onChanged();
        } else {
          additionalMetricDimsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder addAdditionalMetricDims(
          int index, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension value) {
        if (additionalMetricDimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.add(index, value);
          onChanged();
        } else {
          additionalMetricDimsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder addAdditionalMetricDims(
          com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder builderForValue) {
        if (additionalMetricDimsBuilder_ == null) {
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.add(builderForValue.build());
          onChanged();
        } else {
          additionalMetricDimsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder addAdditionalMetricDims(
          int index, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder builderForValue) {
        if (additionalMetricDimsBuilder_ == null) {
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.add(index, builderForValue.build());
          onChanged();
        } else {
          additionalMetricDimsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder addAllAdditionalMetricDims(
          java.lang.Iterable values) {
        if (additionalMetricDimsBuilder_ == null) {
          ensureAdditionalMetricDimsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, additionalMetricDims_);
          onChanged();
        } else {
          additionalMetricDimsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder clearAdditionalMetricDims() {
        if (additionalMetricDimsBuilder_ == null) {
          additionalMetricDims_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          additionalMetricDimsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public Builder removeAdditionalMetricDims(int index) {
        if (additionalMetricDimsBuilder_ == null) {
          ensureAdditionalMetricDimsIsMutable();
          additionalMetricDims_.remove(index);
          onChanged();
        } else {
          additionalMetricDimsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder getAdditionalMetricDimsBuilder(
          int index) {
        return getAdditionalMetricDimsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder getAdditionalMetricDimsOrBuilder(
          int index) {
        if (additionalMetricDimsBuilder_ == null) {
          return additionalMetricDims_.get(index);  } else {
          return additionalMetricDimsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public java.util.List
           getAdditionalMetricDimsOrBuilderList() {
        if (additionalMetricDimsBuilder_ != null) {
          return additionalMetricDimsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(additionalMetricDims_);
        }
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder addAdditionalMetricDimsBuilder() {
        return getAdditionalMetricDimsFieldBuilder().addBuilder(
            com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.getDefaultInstance());
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder addAdditionalMetricDimsBuilder(
          int index) {
        return getAdditionalMetricDimsFieldBuilder().addBuilder(
            index, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.getDefaultInstance());
      }
      /**
       * repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
       */
      public java.util.List
           getAdditionalMetricDimsBuilderList() {
        return getAdditionalMetricDimsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder>
          getAdditionalMetricDimsFieldBuilder() {
        if (additionalMetricDimsBuilder_ == null) {
          additionalMetricDimsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimension.Builder, com.amazonaws.services.kinesis.producer.protobuf.Config.AdditionalDimensionOrBuilder>(
                  additionalMetricDims_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          additionalMetricDims_ = null;
        }
        return additionalMetricDimsBuilder_;
      }

      private boolean aggregationEnabled_ = true;
      /**
       * optional bool aggregation_enabled = 1 [default = true];
       * @return Whether the aggregationEnabled field is set.
       */
      public boolean hasAggregationEnabled() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * optional bool aggregation_enabled = 1 [default = true];
       * @return The aggregationEnabled.
       */
      public boolean getAggregationEnabled() {
        return aggregationEnabled_;
      }
      /**
       * optional bool aggregation_enabled = 1 [default = true];
       * @param value The aggregationEnabled to set.
       * @return This builder for chaining.
       */
      public Builder setAggregationEnabled(boolean value) {
        bitField0_ |= 0x00000002;
        aggregationEnabled_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool aggregation_enabled = 1 [default = true];
       * @return This builder for chaining.
       */
      public Builder clearAggregationEnabled() {
        bitField0_ = (bitField0_ & ~0x00000002);
        aggregationEnabled_ = true;
        onChanged();
        return this;
      }

      private long aggregationMaxCount_ = 4294967295L;
      /**
       * optional uint64 aggregation_max_count = 2 [default = 4294967295];
       * @return Whether the aggregationMaxCount field is set.
       */
      public boolean hasAggregationMaxCount() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * optional uint64 aggregation_max_count = 2 [default = 4294967295];
       * @return The aggregationMaxCount.
       */
      public long getAggregationMaxCount() {
        return aggregationMaxCount_;
      }
      /**
       * optional uint64 aggregation_max_count = 2 [default = 4294967295];
       * @param value The aggregationMaxCount to set.
       * @return This builder for chaining.
       */
      public Builder setAggregationMaxCount(long value) {
        bitField0_ |= 0x00000004;
        aggregationMaxCount_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 aggregation_max_count = 2 [default = 4294967295];
       * @return This builder for chaining.
       */
      public Builder clearAggregationMaxCount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        aggregationMaxCount_ = 4294967295L;
        onChanged();
        return this;
      }

      private long aggregationMaxSize_ = 51200L;
      /**
       * optional uint64 aggregation_max_size = 3 [default = 51200];
       * @return Whether the aggregationMaxSize field is set.
       */
      public boolean hasAggregationMaxSize() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * optional uint64 aggregation_max_size = 3 [default = 51200];
       * @return The aggregationMaxSize.
       */
      public long getAggregationMaxSize() {
        return aggregationMaxSize_;
      }
      /**
       * optional uint64 aggregation_max_size = 3 [default = 51200];
       * @param value The aggregationMaxSize to set.
       * @return This builder for chaining.
       */
      public Builder setAggregationMaxSize(long value) {
        bitField0_ |= 0x00000008;
        aggregationMaxSize_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 aggregation_max_size = 3 [default = 51200];
       * @return This builder for chaining.
       */
      public Builder clearAggregationMaxSize() {
        bitField0_ = (bitField0_ & ~0x00000008);
        aggregationMaxSize_ = 51200L;
        onChanged();
        return this;
      }

      private java.lang.Object cloudwatchEndpoint_ = "";
      /**
       * optional string cloudwatch_endpoint = 4 [default = ""];
       * @return Whether the cloudwatchEndpoint field is set.
       */
      public boolean hasCloudwatchEndpoint() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * optional string cloudwatch_endpoint = 4 [default = ""];
       * @return The cloudwatchEndpoint.
       */
      public java.lang.String getCloudwatchEndpoint() {
        java.lang.Object ref = cloudwatchEndpoint_;
        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()) {
            cloudwatchEndpoint_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string cloudwatch_endpoint = 4 [default = ""];
       * @return The bytes for cloudwatchEndpoint.
       */
      public com.google.protobuf.ByteString
          getCloudwatchEndpointBytes() {
        java.lang.Object ref = cloudwatchEndpoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cloudwatchEndpoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string cloudwatch_endpoint = 4 [default = ""];
       * @param value The cloudwatchEndpoint to set.
       * @return This builder for chaining.
       */
      public Builder setCloudwatchEndpoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        cloudwatchEndpoint_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string cloudwatch_endpoint = 4 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearCloudwatchEndpoint() {
        bitField0_ = (bitField0_ & ~0x00000010);
        cloudwatchEndpoint_ = getDefaultInstance().getCloudwatchEndpoint();
        onChanged();
        return this;
      }
      /**
       * optional string cloudwatch_endpoint = 4 [default = ""];
       * @param value The bytes for cloudwatchEndpoint to set.
       * @return This builder for chaining.
       */
      public Builder setCloudwatchEndpointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        cloudwatchEndpoint_ = value;
        onChanged();
        return this;
      }

      private long cloudwatchPort_ = 443L;
      /**
       * optional uint64 cloudwatch_port = 5 [default = 443];
       * @return Whether the cloudwatchPort field is set.
       */
      public boolean hasCloudwatchPort() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * optional uint64 cloudwatch_port = 5 [default = 443];
       * @return The cloudwatchPort.
       */
      public long getCloudwatchPort() {
        return cloudwatchPort_;
      }
      /**
       * optional uint64 cloudwatch_port = 5 [default = 443];
       * @param value The cloudwatchPort to set.
       * @return This builder for chaining.
       */
      public Builder setCloudwatchPort(long value) {
        bitField0_ |= 0x00000020;
        cloudwatchPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 cloudwatch_port = 5 [default = 443];
       * @return This builder for chaining.
       */
      public Builder clearCloudwatchPort() {
        bitField0_ = (bitField0_ & ~0x00000020);
        cloudwatchPort_ = 443L;
        onChanged();
        return this;
      }

      private long collectionMaxCount_ = 500L;
      /**
       * optional uint64 collection_max_count = 6 [default = 500];
       * @return Whether the collectionMaxCount field is set.
       */
      public boolean hasCollectionMaxCount() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * optional uint64 collection_max_count = 6 [default = 500];
       * @return The collectionMaxCount.
       */
      public long getCollectionMaxCount() {
        return collectionMaxCount_;
      }
      /**
       * optional uint64 collection_max_count = 6 [default = 500];
       * @param value The collectionMaxCount to set.
       * @return This builder for chaining.
       */
      public Builder setCollectionMaxCount(long value) {
        bitField0_ |= 0x00000040;
        collectionMaxCount_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 collection_max_count = 6 [default = 500];
       * @return This builder for chaining.
       */
      public Builder clearCollectionMaxCount() {
        bitField0_ = (bitField0_ & ~0x00000040);
        collectionMaxCount_ = 500L;
        onChanged();
        return this;
      }

      private long collectionMaxSize_ = 5242880L;
      /**
       * optional uint64 collection_max_size = 7 [default = 5242880];
       * @return Whether the collectionMaxSize field is set.
       */
      public boolean hasCollectionMaxSize() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * optional uint64 collection_max_size = 7 [default = 5242880];
       * @return The collectionMaxSize.
       */
      public long getCollectionMaxSize() {
        return collectionMaxSize_;
      }
      /**
       * optional uint64 collection_max_size = 7 [default = 5242880];
       * @param value The collectionMaxSize to set.
       * @return This builder for chaining.
       */
      public Builder setCollectionMaxSize(long value) {
        bitField0_ |= 0x00000080;
        collectionMaxSize_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 collection_max_size = 7 [default = 5242880];
       * @return This builder for chaining.
       */
      public Builder clearCollectionMaxSize() {
        bitField0_ = (bitField0_ & ~0x00000080);
        collectionMaxSize_ = 5242880L;
        onChanged();
        return this;
      }

      private long connectTimeout_ = 6000L;
      /**
       * optional uint64 connect_timeout = 8 [default = 6000];
       * @return Whether the connectTimeout field is set.
       */
      public boolean hasConnectTimeout() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * optional uint64 connect_timeout = 8 [default = 6000];
       * @return The connectTimeout.
       */
      public long getConnectTimeout() {
        return connectTimeout_;
      }
      /**
       * optional uint64 connect_timeout = 8 [default = 6000];
       * @param value The connectTimeout to set.
       * @return This builder for chaining.
       */
      public Builder setConnectTimeout(long value) {
        bitField0_ |= 0x00000100;
        connectTimeout_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 connect_timeout = 8 [default = 6000];
       * @return This builder for chaining.
       */
      public Builder clearConnectTimeout() {
        bitField0_ = (bitField0_ & ~0x00000100);
        connectTimeout_ = 6000L;
        onChanged();
        return this;
      }

      private boolean enableCoreDumps_ ;
      /**
       * optional bool enable_core_dumps = 9 [default = false];
       * @return Whether the enableCoreDumps field is set.
       */
      public boolean hasEnableCoreDumps() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * optional bool enable_core_dumps = 9 [default = false];
       * @return The enableCoreDumps.
       */
      public boolean getEnableCoreDumps() {
        return enableCoreDumps_;
      }
      /**
       * optional bool enable_core_dumps = 9 [default = false];
       * @param value The enableCoreDumps to set.
       * @return This builder for chaining.
       */
      public Builder setEnableCoreDumps(boolean value) {
        bitField0_ |= 0x00000200;
        enableCoreDumps_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool enable_core_dumps = 9 [default = false];
       * @return This builder for chaining.
       */
      public Builder clearEnableCoreDumps() {
        bitField0_ = (bitField0_ & ~0x00000200);
        enableCoreDumps_ = false;
        onChanged();
        return this;
      }

      private boolean failIfThrottled_ ;
      /**
       * optional bool fail_if_throttled = 10 [default = false];
       * @return Whether the failIfThrottled field is set.
       */
      public boolean hasFailIfThrottled() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * optional bool fail_if_throttled = 10 [default = false];
       * @return The failIfThrottled.
       */
      public boolean getFailIfThrottled() {
        return failIfThrottled_;
      }
      /**
       * optional bool fail_if_throttled = 10 [default = false];
       * @param value The failIfThrottled to set.
       * @return This builder for chaining.
       */
      public Builder setFailIfThrottled(boolean value) {
        bitField0_ |= 0x00000400;
        failIfThrottled_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool fail_if_throttled = 10 [default = false];
       * @return This builder for chaining.
       */
      public Builder clearFailIfThrottled() {
        bitField0_ = (bitField0_ & ~0x00000400);
        failIfThrottled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object kinesisEndpoint_ = "";
      /**
       * optional string kinesis_endpoint = 11 [default = ""];
       * @return Whether the kinesisEndpoint field is set.
       */
      public boolean hasKinesisEndpoint() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * optional string kinesis_endpoint = 11 [default = ""];
       * @return The kinesisEndpoint.
       */
      public java.lang.String getKinesisEndpoint() {
        java.lang.Object ref = kinesisEndpoint_;
        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()) {
            kinesisEndpoint_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string kinesis_endpoint = 11 [default = ""];
       * @return The bytes for kinesisEndpoint.
       */
      public com.google.protobuf.ByteString
          getKinesisEndpointBytes() {
        java.lang.Object ref = kinesisEndpoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kinesisEndpoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string kinesis_endpoint = 11 [default = ""];
       * @param value The kinesisEndpoint to set.
       * @return This builder for chaining.
       */
      public Builder setKinesisEndpoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        kinesisEndpoint_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string kinesis_endpoint = 11 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearKinesisEndpoint() {
        bitField0_ = (bitField0_ & ~0x00000800);
        kinesisEndpoint_ = getDefaultInstance().getKinesisEndpoint();
        onChanged();
        return this;
      }
      /**
       * optional string kinesis_endpoint = 11 [default = ""];
       * @param value The bytes for kinesisEndpoint to set.
       * @return This builder for chaining.
       */
      public Builder setKinesisEndpointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        kinesisEndpoint_ = value;
        onChanged();
        return this;
      }

      private long kinesisPort_ = 443L;
      /**
       * optional uint64 kinesis_port = 12 [default = 443];
       * @return Whether the kinesisPort field is set.
       */
      public boolean hasKinesisPort() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * optional uint64 kinesis_port = 12 [default = 443];
       * @return The kinesisPort.
       */
      public long getKinesisPort() {
        return kinesisPort_;
      }
      /**
       * optional uint64 kinesis_port = 12 [default = 443];
       * @param value The kinesisPort to set.
       * @return This builder for chaining.
       */
      public Builder setKinesisPort(long value) {
        bitField0_ |= 0x00001000;
        kinesisPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 kinesis_port = 12 [default = 443];
       * @return This builder for chaining.
       */
      public Builder clearKinesisPort() {
        bitField0_ = (bitField0_ & ~0x00001000);
        kinesisPort_ = 443L;
        onChanged();
        return this;
      }

      private java.lang.Object logLevel_ = "info";
      /**
       * optional string log_level = 13 [default = "info"];
       * @return Whether the logLevel field is set.
       */
      public boolean hasLogLevel() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * optional string log_level = 13 [default = "info"];
       * @return The logLevel.
       */
      public java.lang.String getLogLevel() {
        java.lang.Object ref = logLevel_;
        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()) {
            logLevel_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string log_level = 13 [default = "info"];
       * @return The bytes for logLevel.
       */
      public com.google.protobuf.ByteString
          getLogLevelBytes() {
        java.lang.Object ref = logLevel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          logLevel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string log_level = 13 [default = "info"];
       * @param value The logLevel to set.
       * @return This builder for chaining.
       */
      public Builder setLogLevel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00002000;
        logLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string log_level = 13 [default = "info"];
       * @return This builder for chaining.
       */
      public Builder clearLogLevel() {
        bitField0_ = (bitField0_ & ~0x00002000);
        logLevel_ = getDefaultInstance().getLogLevel();
        onChanged();
        return this;
      }
      /**
       * optional string log_level = 13 [default = "info"];
       * @param value The bytes for logLevel to set.
       * @return This builder for chaining.
       */
      public Builder setLogLevelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00002000;
        logLevel_ = value;
        onChanged();
        return this;
      }

      private long maxConnections_ = 24L;
      /**
       * optional uint64 max_connections = 14 [default = 24];
       * @return Whether the maxConnections field is set.
       */
      public boolean hasMaxConnections() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * optional uint64 max_connections = 14 [default = 24];
       * @return The maxConnections.
       */
      public long getMaxConnections() {
        return maxConnections_;
      }
      /**
       * optional uint64 max_connections = 14 [default = 24];
       * @param value The maxConnections to set.
       * @return This builder for chaining.
       */
      public Builder setMaxConnections(long value) {
        bitField0_ |= 0x00004000;
        maxConnections_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 max_connections = 14 [default = 24];
       * @return This builder for chaining.
       */
      public Builder clearMaxConnections() {
        bitField0_ = (bitField0_ & ~0x00004000);
        maxConnections_ = 24L;
        onChanged();
        return this;
      }

      private java.lang.Object metricsGranularity_ = "shard";
      /**
       * optional string metrics_granularity = 15 [default = "shard"];
       * @return Whether the metricsGranularity field is set.
       */
      public boolean hasMetricsGranularity() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * optional string metrics_granularity = 15 [default = "shard"];
       * @return The metricsGranularity.
       */
      public java.lang.String getMetricsGranularity() {
        java.lang.Object ref = metricsGranularity_;
        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()) {
            metricsGranularity_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string metrics_granularity = 15 [default = "shard"];
       * @return The bytes for metricsGranularity.
       */
      public com.google.protobuf.ByteString
          getMetricsGranularityBytes() {
        java.lang.Object ref = metricsGranularity_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          metricsGranularity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string metrics_granularity = 15 [default = "shard"];
       * @param value The metricsGranularity to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsGranularity(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00008000;
        metricsGranularity_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string metrics_granularity = 15 [default = "shard"];
       * @return This builder for chaining.
       */
      public Builder clearMetricsGranularity() {
        bitField0_ = (bitField0_ & ~0x00008000);
        metricsGranularity_ = getDefaultInstance().getMetricsGranularity();
        onChanged();
        return this;
      }
      /**
       * optional string metrics_granularity = 15 [default = "shard"];
       * @param value The bytes for metricsGranularity to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsGranularityBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00008000;
        metricsGranularity_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object metricsLevel_ = "detailed";
      /**
       * optional string metrics_level = 16 [default = "detailed"];
       * @return Whether the metricsLevel field is set.
       */
      public boolean hasMetricsLevel() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * optional string metrics_level = 16 [default = "detailed"];
       * @return The metricsLevel.
       */
      public java.lang.String getMetricsLevel() {
        java.lang.Object ref = metricsLevel_;
        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()) {
            metricsLevel_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string metrics_level = 16 [default = "detailed"];
       * @return The bytes for metricsLevel.
       */
      public com.google.protobuf.ByteString
          getMetricsLevelBytes() {
        java.lang.Object ref = metricsLevel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          metricsLevel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string metrics_level = 16 [default = "detailed"];
       * @param value The metricsLevel to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsLevel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00010000;
        metricsLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string metrics_level = 16 [default = "detailed"];
       * @return This builder for chaining.
       */
      public Builder clearMetricsLevel() {
        bitField0_ = (bitField0_ & ~0x00010000);
        metricsLevel_ = getDefaultInstance().getMetricsLevel();
        onChanged();
        return this;
      }
      /**
       * optional string metrics_level = 16 [default = "detailed"];
       * @param value The bytes for metricsLevel to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsLevelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00010000;
        metricsLevel_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object metricsNamespace_ = "KinesisProducerLibrary";
      /**
       * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
       * @return Whether the metricsNamespace field is set.
       */
      public boolean hasMetricsNamespace() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
       * @return The metricsNamespace.
       */
      public java.lang.String getMetricsNamespace() {
        java.lang.Object ref = metricsNamespace_;
        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()) {
            metricsNamespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
       * @return The bytes for metricsNamespace.
       */
      public com.google.protobuf.ByteString
          getMetricsNamespaceBytes() {
        java.lang.Object ref = metricsNamespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          metricsNamespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
       * @param value The metricsNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsNamespace(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00020000;
        metricsNamespace_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
       * @return This builder for chaining.
       */
      public Builder clearMetricsNamespace() {
        bitField0_ = (bitField0_ & ~0x00020000);
        metricsNamespace_ = getDefaultInstance().getMetricsNamespace();
        onChanged();
        return this;
      }
      /**
       * optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
       * @param value The bytes for metricsNamespace to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00020000;
        metricsNamespace_ = value;
        onChanged();
        return this;
      }

      private long metricsUploadDelay_ = 60000L;
      /**
       * optional uint64 metrics_upload_delay = 18 [default = 60000];
       * @return Whether the metricsUploadDelay field is set.
       */
      public boolean hasMetricsUploadDelay() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * optional uint64 metrics_upload_delay = 18 [default = 60000];
       * @return The metricsUploadDelay.
       */
      public long getMetricsUploadDelay() {
        return metricsUploadDelay_;
      }
      /**
       * optional uint64 metrics_upload_delay = 18 [default = 60000];
       * @param value The metricsUploadDelay to set.
       * @return This builder for chaining.
       */
      public Builder setMetricsUploadDelay(long value) {
        bitField0_ |= 0x00040000;
        metricsUploadDelay_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 metrics_upload_delay = 18 [default = 60000];
       * @return This builder for chaining.
       */
      public Builder clearMetricsUploadDelay() {
        bitField0_ = (bitField0_ & ~0x00040000);
        metricsUploadDelay_ = 60000L;
        onChanged();
        return this;
      }

      private long minConnections_ = 1L;
      /**
       * optional uint64 min_connections = 19 [default = 1];
       * @return Whether the minConnections field is set.
       */
      public boolean hasMinConnections() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * optional uint64 min_connections = 19 [default = 1];
       * @return The minConnections.
       */
      public long getMinConnections() {
        return minConnections_;
      }
      /**
       * optional uint64 min_connections = 19 [default = 1];
       * @param value The minConnections to set.
       * @return This builder for chaining.
       */
      public Builder setMinConnections(long value) {
        bitField0_ |= 0x00080000;
        minConnections_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 min_connections = 19 [default = 1];
       * @return This builder for chaining.
       */
      public Builder clearMinConnections() {
        bitField0_ = (bitField0_ & ~0x00080000);
        minConnections_ = 1L;
        onChanged();
        return this;
      }

      private long rateLimit_ = 150L;
      /**
       * optional uint64 rate_limit = 20 [default = 150];
       * @return Whether the rateLimit field is set.
       */
      public boolean hasRateLimit() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * optional uint64 rate_limit = 20 [default = 150];
       * @return The rateLimit.
       */
      public long getRateLimit() {
        return rateLimit_;
      }
      /**
       * optional uint64 rate_limit = 20 [default = 150];
       * @param value The rateLimit to set.
       * @return This builder for chaining.
       */
      public Builder setRateLimit(long value) {
        bitField0_ |= 0x00100000;
        rateLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 rate_limit = 20 [default = 150];
       * @return This builder for chaining.
       */
      public Builder clearRateLimit() {
        bitField0_ = (bitField0_ & ~0x00100000);
        rateLimit_ = 150L;
        onChanged();
        return this;
      }

      private long recordMaxBufferedTime_ = 100L;
      /**
       * optional uint64 record_max_buffered_time = 21 [default = 100];
       * @return Whether the recordMaxBufferedTime field is set.
       */
      public boolean hasRecordMaxBufferedTime() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * optional uint64 record_max_buffered_time = 21 [default = 100];
       * @return The recordMaxBufferedTime.
       */
      public long getRecordMaxBufferedTime() {
        return recordMaxBufferedTime_;
      }
      /**
       * optional uint64 record_max_buffered_time = 21 [default = 100];
       * @param value The recordMaxBufferedTime to set.
       * @return This builder for chaining.
       */
      public Builder setRecordMaxBufferedTime(long value) {
        bitField0_ |= 0x00200000;
        recordMaxBufferedTime_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 record_max_buffered_time = 21 [default = 100];
       * @return This builder for chaining.
       */
      public Builder clearRecordMaxBufferedTime() {
        bitField0_ = (bitField0_ & ~0x00200000);
        recordMaxBufferedTime_ = 100L;
        onChanged();
        return this;
      }

      private long recordTtl_ = 30000L;
      /**
       * optional uint64 record_ttl = 22 [default = 30000];
       * @return Whether the recordTtl field is set.
       */
      public boolean hasRecordTtl() {
        return ((bitField0_ & 0x00400000) != 0);
      }
      /**
       * optional uint64 record_ttl = 22 [default = 30000];
       * @return The recordTtl.
       */
      public long getRecordTtl() {
        return recordTtl_;
      }
      /**
       * optional uint64 record_ttl = 22 [default = 30000];
       * @param value The recordTtl to set.
       * @return This builder for chaining.
       */
      public Builder setRecordTtl(long value) {
        bitField0_ |= 0x00400000;
        recordTtl_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 record_ttl = 22 [default = 30000];
       * @return This builder for chaining.
       */
      public Builder clearRecordTtl() {
        bitField0_ = (bitField0_ & ~0x00400000);
        recordTtl_ = 30000L;
        onChanged();
        return this;
      }

      private java.lang.Object region_ = "";
      /**
       * optional string region = 23 [default = ""];
       * @return Whether the region field is set.
       */
      public boolean hasRegion() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * optional string region = 23 [default = ""];
       * @return The region.
       */
      public java.lang.String getRegion() {
        java.lang.Object ref = region_;
        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()) {
            region_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string region = 23 [default = ""];
       * @return The bytes for region.
       */
      public com.google.protobuf.ByteString
          getRegionBytes() {
        java.lang.Object ref = region_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          region_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string region = 23 [default = ""];
       * @param value The region to set.
       * @return This builder for chaining.
       */
      public Builder setRegion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00800000;
        region_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string region = 23 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearRegion() {
        bitField0_ = (bitField0_ & ~0x00800000);
        region_ = getDefaultInstance().getRegion();
        onChanged();
        return this;
      }
      /**
       * optional string region = 23 [default = ""];
       * @param value The bytes for region to set.
       * @return This builder for chaining.
       */
      public Builder setRegionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00800000;
        region_ = value;
        onChanged();
        return this;
      }

      private long requestTimeout_ = 6000L;
      /**
       * optional uint64 request_timeout = 24 [default = 6000];
       * @return Whether the requestTimeout field is set.
       */
      public boolean hasRequestTimeout() {
        return ((bitField0_ & 0x01000000) != 0);
      }
      /**
       * optional uint64 request_timeout = 24 [default = 6000];
       * @return The requestTimeout.
       */
      public long getRequestTimeout() {
        return requestTimeout_;
      }
      /**
       * optional uint64 request_timeout = 24 [default = 6000];
       * @param value The requestTimeout to set.
       * @return This builder for chaining.
       */
      public Builder setRequestTimeout(long value) {
        bitField0_ |= 0x01000000;
        requestTimeout_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 request_timeout = 24 [default = 6000];
       * @return This builder for chaining.
       */
      public Builder clearRequestTimeout() {
        bitField0_ = (bitField0_ & ~0x01000000);
        requestTimeout_ = 6000L;
        onChanged();
        return this;
      }

      private boolean verifyCertificate_ = true;
      /**
       * optional bool verify_certificate = 25 [default = true];
       * @return Whether the verifyCertificate field is set.
       */
      public boolean hasVerifyCertificate() {
        return ((bitField0_ & 0x02000000) != 0);
      }
      /**
       * optional bool verify_certificate = 25 [default = true];
       * @return The verifyCertificate.
       */
      public boolean getVerifyCertificate() {
        return verifyCertificate_;
      }
      /**
       * optional bool verify_certificate = 25 [default = true];
       * @param value The verifyCertificate to set.
       * @return This builder for chaining.
       */
      public Builder setVerifyCertificate(boolean value) {
        bitField0_ |= 0x02000000;
        verifyCertificate_ = value;
        onChanged();
        return this;
      }
      /**
       * optional bool verify_certificate = 25 [default = true];
       * @return This builder for chaining.
       */
      public Builder clearVerifyCertificate() {
        bitField0_ = (bitField0_ & ~0x02000000);
        verifyCertificate_ = true;
        onChanged();
        return this;
      }

      private java.lang.Object proxyHost_ = "";
      /**
       * optional string proxy_host = 26 [default = ""];
       * @return Whether the proxyHost field is set.
       */
      public boolean hasProxyHost() {
        return ((bitField0_ & 0x04000000) != 0);
      }
      /**
       * optional string proxy_host = 26 [default = ""];
       * @return The proxyHost.
       */
      public java.lang.String getProxyHost() {
        java.lang.Object ref = proxyHost_;
        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()) {
            proxyHost_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string proxy_host = 26 [default = ""];
       * @return The bytes for proxyHost.
       */
      public com.google.protobuf.ByteString
          getProxyHostBytes() {
        java.lang.Object ref = proxyHost_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          proxyHost_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string proxy_host = 26 [default = ""];
       * @param value The proxyHost to set.
       * @return This builder for chaining.
       */
      public Builder setProxyHost(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x04000000;
        proxyHost_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string proxy_host = 26 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearProxyHost() {
        bitField0_ = (bitField0_ & ~0x04000000);
        proxyHost_ = getDefaultInstance().getProxyHost();
        onChanged();
        return this;
      }
      /**
       * optional string proxy_host = 26 [default = ""];
       * @param value The bytes for proxyHost to set.
       * @return This builder for chaining.
       */
      public Builder setProxyHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x04000000;
        proxyHost_ = value;
        onChanged();
        return this;
      }

      private long proxyPort_ = 443L;
      /**
       * optional uint64 proxy_port = 27 [default = 443];
       * @return Whether the proxyPort field is set.
       */
      public boolean hasProxyPort() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * optional uint64 proxy_port = 27 [default = 443];
       * @return The proxyPort.
       */
      public long getProxyPort() {
        return proxyPort_;
      }
      /**
       * optional uint64 proxy_port = 27 [default = 443];
       * @param value The proxyPort to set.
       * @return This builder for chaining.
       */
      public Builder setProxyPort(long value) {
        bitField0_ |= 0x08000000;
        proxyPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 proxy_port = 27 [default = 443];
       * @return This builder for chaining.
       */
      public Builder clearProxyPort() {
        bitField0_ = (bitField0_ & ~0x08000000);
        proxyPort_ = 443L;
        onChanged();
        return this;
      }

      private java.lang.Object proxyUserName_ = "";
      /**
       * optional string proxy_user_name = 28 [default = ""];
       * @return Whether the proxyUserName field is set.
       */
      public boolean hasProxyUserName() {
        return ((bitField0_ & 0x10000000) != 0);
      }
      /**
       * optional string proxy_user_name = 28 [default = ""];
       * @return The proxyUserName.
       */
      public java.lang.String getProxyUserName() {
        java.lang.Object ref = proxyUserName_;
        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()) {
            proxyUserName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string proxy_user_name = 28 [default = ""];
       * @return The bytes for proxyUserName.
       */
      public com.google.protobuf.ByteString
          getProxyUserNameBytes() {
        java.lang.Object ref = proxyUserName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          proxyUserName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string proxy_user_name = 28 [default = ""];
       * @param value The proxyUserName to set.
       * @return This builder for chaining.
       */
      public Builder setProxyUserName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x10000000;
        proxyUserName_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string proxy_user_name = 28 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearProxyUserName() {
        bitField0_ = (bitField0_ & ~0x10000000);
        proxyUserName_ = getDefaultInstance().getProxyUserName();
        onChanged();
        return this;
      }
      /**
       * optional string proxy_user_name = 28 [default = ""];
       * @param value The bytes for proxyUserName to set.
       * @return This builder for chaining.
       */
      public Builder setProxyUserNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x10000000;
        proxyUserName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object proxyPassword_ = "";
      /**
       * optional string proxy_password = 29 [default = ""];
       * @return Whether the proxyPassword field is set.
       */
      public boolean hasProxyPassword() {
        return ((bitField0_ & 0x20000000) != 0);
      }
      /**
       * optional string proxy_password = 29 [default = ""];
       * @return The proxyPassword.
       */
      public java.lang.String getProxyPassword() {
        java.lang.Object ref = proxyPassword_;
        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()) {
            proxyPassword_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string proxy_password = 29 [default = ""];
       * @return The bytes for proxyPassword.
       */
      public com.google.protobuf.ByteString
          getProxyPasswordBytes() {
        java.lang.Object ref = proxyPassword_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          proxyPassword_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string proxy_password = 29 [default = ""];
       * @param value The proxyPassword to set.
       * @return This builder for chaining.
       */
      public Builder setProxyPassword(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x20000000;
        proxyPassword_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string proxy_password = 29 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearProxyPassword() {
        bitField0_ = (bitField0_ & ~0x20000000);
        proxyPassword_ = getDefaultInstance().getProxyPassword();
        onChanged();
        return this;
      }
      /**
       * optional string proxy_password = 29 [default = ""];
       * @param value The bytes for proxyPassword to set.
       * @return This builder for chaining.
       */
      public Builder setProxyPasswordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x20000000;
        proxyPassword_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object stsEndpoint_ = "";
      /**
       * optional string sts_endpoint = 32 [default = ""];
       * @return Whether the stsEndpoint field is set.
       */
      public boolean hasStsEndpoint() {
        return ((bitField0_ & 0x40000000) != 0);
      }
      /**
       * optional string sts_endpoint = 32 [default = ""];
       * @return The stsEndpoint.
       */
      public java.lang.String getStsEndpoint() {
        java.lang.Object ref = stsEndpoint_;
        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()) {
            stsEndpoint_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * optional string sts_endpoint = 32 [default = ""];
       * @return The bytes for stsEndpoint.
       */
      public com.google.protobuf.ByteString
          getStsEndpointBytes() {
        java.lang.Object ref = stsEndpoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stsEndpoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * optional string sts_endpoint = 32 [default = ""];
       * @param value The stsEndpoint to set.
       * @return This builder for chaining.
       */
      public Builder setStsEndpoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x40000000;
        stsEndpoint_ = value;
        onChanged();
        return this;
      }
      /**
       * optional string sts_endpoint = 32 [default = ""];
       * @return This builder for chaining.
       */
      public Builder clearStsEndpoint() {
        bitField0_ = (bitField0_ & ~0x40000000);
        stsEndpoint_ = getDefaultInstance().getStsEndpoint();
        onChanged();
        return this;
      }
      /**
       * optional string sts_endpoint = 32 [default = ""];
       * @param value The bytes for stsEndpoint to set.
       * @return This builder for chaining.
       */
      public Builder setStsEndpointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x40000000;
        stsEndpoint_ = value;
        onChanged();
        return this;
      }

      private long stsPort_ = 443L;
      /**
       * optional uint64 sts_port = 33 [default = 443];
       * @return Whether the stsPort field is set.
       */
      public boolean hasStsPort() {
        return ((bitField0_ & 0x80000000) != 0);
      }
      /**
       * optional uint64 sts_port = 33 [default = 443];
       * @return The stsPort.
       */
      public long getStsPort() {
        return stsPort_;
      }
      /**
       * optional uint64 sts_port = 33 [default = 443];
       * @param value The stsPort to set.
       * @return This builder for chaining.
       */
      public Builder setStsPort(long value) {
        bitField0_ |= 0x80000000;
        stsPort_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint64 sts_port = 33 [default = 443];
       * @return This builder for chaining.
       */
      public Builder clearStsPort() {
        bitField0_ = (bitField0_ & ~0x80000000);
        stsPort_ = 443L;
        onChanged();
        return this;
      }

      private int threadConfig_ = 0;
      /**
       * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
       * @return Whether the threadConfig field is set.
       */
      public boolean hasThreadConfig() {
        return ((bitField1_ & 0x00000001) != 0);
      }
      /**
       * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
       * @return The threadConfig.
       */
      public com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig getThreadConfig() {
        @SuppressWarnings("deprecation")
        com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig result = com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig.valueOf(threadConfig_);
        return result == null ? com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig.PER_REQUEST : result;
      }
      /**
       * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
       * @param value The threadConfig to set.
       * @return This builder for chaining.
       */
      public Builder setThreadConfig(com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration.ThreadConfig value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField1_ |= 0x00000001;
        threadConfig_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 30 [default = PER_REQUEST];
       * @return This builder for chaining.
       */
      public Builder clearThreadConfig() {
        bitField1_ = (bitField1_ & ~0x00000001);
        threadConfig_ = 0;
        onChanged();
        return this;
      }

      private int threadPoolSize_ = 64;
      /**
       * optional uint32 thread_pool_size = 31 [default = 64];
       * @return Whether the threadPoolSize field is set.
       */
      public boolean hasThreadPoolSize() {
        return ((bitField1_ & 0x00000002) != 0);
      }
      /**
       * optional uint32 thread_pool_size = 31 [default = 64];
       * @return The threadPoolSize.
       */
      public int getThreadPoolSize() {
        return threadPoolSize_;
      }
      /**
       * optional uint32 thread_pool_size = 31 [default = 64];
       * @param value The threadPoolSize to set.
       * @return This builder for chaining.
       */
      public Builder setThreadPoolSize(int value) {
        bitField1_ |= 0x00000002;
        threadPoolSize_ = value;
        onChanged();
        return this;
      }
      /**
       * optional uint32 thread_pool_size = 31 [default = 64];
       * @return This builder for chaining.
       */
      public Builder clearThreadPoolSize() {
        bitField1_ = (bitField1_ & ~0x00000002);
        threadPoolSize_ = 64;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:aws.kinesis.protobuf.Configuration)
    }

    // @@protoc_insertion_point(class_scope:aws.kinesis.protobuf.Configuration)
    private static final com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration();
    }

    public static com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.amazonaws.services.kinesis.producer.protobuf.Config.Configuration getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_aws_kinesis_protobuf_AdditionalDimension_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_aws_kinesis_protobuf_AdditionalDimension_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_aws_kinesis_protobuf_Configuration_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_aws_kinesis_protobuf_Configuration_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\014config.proto\022\024aws.kinesis.protobuf\"F\n\023" +
      "AdditionalDimension\022\013\n\003key\030\001 \002(\t\022\r\n\005valu" +
      "e\030\002 \002(\t\022\023\n\013granularity\030\003 \002(\t\"\277\t\n\rConfigu" +
      "ration\022J\n\026additional_metric_dims\030\200\001 \003(\0132" +
      ").aws.kinesis.protobuf.AdditionalDimensi" +
      "on\022!\n\023aggregation_enabled\030\001 \001(\010:\004true\022)\n" +
      "\025aggregation_max_count\030\002 \001(\004:\n4294967295" +
      "\022#\n\024aggregation_max_size\030\003 \001(\004:\00551200\022\035\n" +
      "\023cloudwatch_endpoint\030\004 \001(\t:\000\022\034\n\017cloudwat" +
      "ch_port\030\005 \001(\004:\003443\022!\n\024collection_max_cou" +
      "nt\030\006 \001(\004:\003500\022$\n\023collection_max_size\030\007 \001" +
      "(\004:\0075242880\022\035\n\017connect_timeout\030\010 \001(\004:\00460" +
      "00\022 \n\021enable_core_dumps\030\t \001(\010:\005false\022 \n\021" +
      "fail_if_throttled\030\n \001(\010:\005false\022\032\n\020kinesi" +
      "s_endpoint\030\013 \001(\t:\000\022\031\n\014kinesis_port\030\014 \001(\004" +
      ":\003443\022\027\n\tlog_level\030\r \001(\t:\004info\022\033\n\017max_co" +
      "nnections\030\016 \001(\004:\00224\022\"\n\023metrics_granulari" +
      "ty\030\017 \001(\t:\005shard\022\037\n\rmetrics_level\030\020 \001(\t:\010" +
      "detailed\0221\n\021metrics_namespace\030\021 \001(\t:\026Kin" +
      "esisProducerLibrary\022#\n\024metrics_upload_de" +
      "lay\030\022 \001(\004:\00560000\022\032\n\017min_connections\030\023 \001(" +
      "\004:\0011\022\027\n\nrate_limit\030\024 \001(\004:\003150\022%\n\030record_" +
      "max_buffered_time\030\025 \001(\004:\003100\022\031\n\nrecord_t" +
      "tl\030\026 \001(\004:\00530000\022\020\n\006region\030\027 \001(\t:\000\022\035\n\017req" +
      "uest_timeout\030\030 \001(\004:\0046000\022 \n\022verify_certi" +
      "ficate\030\031 \001(\010:\004true\022\024\n\nproxy_host\030\032 \001(\t:\000" +
      "\022\027\n\nproxy_port\030\033 \001(\004:\003443\022\031\n\017proxy_user_" +
      "name\030\034 \001(\t:\000\022\030\n\016proxy_password\030\035 \001(\t:\000\022\026" +
      "\n\014sts_endpoint\030  \001(\t:\000\022\025\n\010sts_port\030! \001(\004" +
      ":\003443\022T\n\rthread_config\030\036 \001(\01620.aws.kines" +
      "is.protobuf.Configuration.ThreadConfig:\013" +
      "PER_REQUEST\022\034\n\020thread_pool_size\030\037 \001(\r:\0026" +
      "4\"+\n\014ThreadConfig\022\017\n\013PER_REQUEST\020\000\022\n\n\006PO" +
      "OLED\020\001B2\n0com.amazonaws.services.kinesis" +
      ".producer.protobuf"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_aws_kinesis_protobuf_AdditionalDimension_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_aws_kinesis_protobuf_AdditionalDimension_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_aws_kinesis_protobuf_AdditionalDimension_descriptor,
        new java.lang.String[] { "Key", "Value", "Granularity", });
    internal_static_aws_kinesis_protobuf_Configuration_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_aws_kinesis_protobuf_Configuration_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_aws_kinesis_protobuf_Configuration_descriptor,
        new java.lang.String[] { "AdditionalMetricDims", "AggregationEnabled", "AggregationMaxCount", "AggregationMaxSize", "CloudwatchEndpoint", "CloudwatchPort", "CollectionMaxCount", "CollectionMaxSize", "ConnectTimeout", "EnableCoreDumps", "FailIfThrottled", "KinesisEndpoint", "KinesisPort", "LogLevel", "MaxConnections", "MetricsGranularity", "MetricsLevel", "MetricsNamespace", "MetricsUploadDelay", "MinConnections", "RateLimit", "RecordMaxBufferedTime", "RecordTtl", "Region", "RequestTimeout", "VerifyCertificate", "ProxyHost", "ProxyPort", "ProxyUserName", "ProxyPassword", "StsEndpoint", "StsPort", "ThreadConfig", "ThreadPoolSize", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy