text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: config.proto
  
  #ifndef GOOGLE_PROTOBUF_INCLUDED_config_2eproto
  #define GOOGLE_PROTOBUF_INCLUDED_config_2eproto
  
  #include <limits>
  #include <string>
  
  #include <google/protobuf/port_def.inc>
  #if PROTOBUF_VERSION < 3011000
  #error This file was generated by a newer version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please update
  #error your headers.
  #endif
  #if 3011004 < PROTOBUF_MIN_PROTOC_VERSION
  #error This file was generated by an older version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please
  #error regenerate this file with a newer version of protoc.
  #endif
  
  #include <google/protobuf/port_undef.inc>
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/arena.h>
  #include <google/protobuf/arenastring.h>
  #include <google/protobuf/generated_message_table_driven.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/inlined_string_field.h>
  #include <google/protobuf/metadata.h>
  #include <google/protobuf/generated_message_reflection.h>
  #include <google/protobuf/message.h>
  #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
  #include <google/protobuf/extension_set.h>  // IWYU pragma: export
  #include <google/protobuf/generated_enum_reflection.h>
  #include <google/protobuf/unknown_field_set.h>
  // @@protoc_insertion_point(includes)
  #include <google/protobuf/port_def.inc>
  #define PROTOBUF_INTERNAL_EXPORT_config_2eproto
  PROTOBUF_NAMESPACE_OPEN
  namespace internal {
  class AnyMetadata;
  }  // namespace internal
  PROTOBUF_NAMESPACE_CLOSE
  
  // Internal implementation detail -- do not use these members.
  struct TableStruct_config_2eproto {
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[2]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
    static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
    static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
  };
  extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_config_2eproto;
  namespace aws {
  namespace kinesis {
  namespace protobuf {
  class AdditionalDimension;
  class AdditionalDimensionDefaultTypeInternal;
  extern AdditionalDimensionDefaultTypeInternal _AdditionalDimension_default_instance_;
  class Configuration;
  class ConfigurationDefaultTypeInternal;
  extern ConfigurationDefaultTypeInternal _Configuration_default_instance_;
  }  // namespace protobuf
  }  // namespace kinesis
  }  // namespace aws
  PROTOBUF_NAMESPACE_OPEN
  template<> ::aws::kinesis::protobuf::AdditionalDimension* Arena::CreateMaybeMessage<::aws::kinesis::protobuf::AdditionalDimension>(Arena*);
  template<> ::aws::kinesis::protobuf::Configuration* Arena::CreateMaybeMessage<::aws::kinesis::protobuf::Configuration>(Arena*);
  PROTOBUF_NAMESPACE_CLOSE
  namespace aws {
  namespace kinesis {
  namespace protobuf {
  
  enum Configuration_ThreadConfig : int {
    Configuration_ThreadConfig_PER_REQUEST = 0,
    Configuration_ThreadConfig_POOLED = 1
  };
  bool Configuration_ThreadConfig_IsValid(int value);
  constexpr Configuration_ThreadConfig Configuration_ThreadConfig_ThreadConfig_MIN = Configuration_ThreadConfig_PER_REQUEST;
  constexpr Configuration_ThreadConfig Configuration_ThreadConfig_ThreadConfig_MAX = Configuration_ThreadConfig_POOLED;
  constexpr int Configuration_ThreadConfig_ThreadConfig_ARRAYSIZE = Configuration_ThreadConfig_ThreadConfig_MAX + 1;
  
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Configuration_ThreadConfig_descriptor();
  template<typename T>
  inline const std::string& Configuration_ThreadConfig_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Configuration_ThreadConfig>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Configuration_ThreadConfig_Name.");
    return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
      Configuration_ThreadConfig_descriptor(), enum_t_value);
  }
  inline bool Configuration_ThreadConfig_Parse(
      const std::string& name, Configuration_ThreadConfig* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<Configuration_ThreadConfig>(
      Configuration_ThreadConfig_descriptor(), name, value);
  }
  // ===================================================================
  
  class AdditionalDimension :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:aws.kinesis.protobuf.AdditionalDimension) */ {
   public:
    AdditionalDimension();
    virtual ~AdditionalDimension();
  
    AdditionalDimension(const AdditionalDimension& from);
    AdditionalDimension(AdditionalDimension&& from) noexcept
      : AdditionalDimension() {
      *this = ::std::move(from);
    }
  
    inline AdditionalDimension& operator=(const AdditionalDimension& from) {
      CopyFrom(from);
      return *this;
    }
    inline AdditionalDimension& operator=(AdditionalDimension&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const AdditionalDimension& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const AdditionalDimension* internal_default_instance() {
      return reinterpret_cast<const AdditionalDimension*>(
                 &_AdditionalDimension_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      0;
  
    friend void swap(AdditionalDimension& a, AdditionalDimension& b) {
      a.Swap(&b);
    }
    inline void Swap(AdditionalDimension* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline AdditionalDimension* New() const final {
      return CreateMaybeMessage<AdditionalDimension>(nullptr);
    }
  
    AdditionalDimension* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<AdditionalDimension>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const AdditionalDimension& from);
    void MergeFrom(const AdditionalDimension& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(AdditionalDimension* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "aws.kinesis.protobuf.AdditionalDimension";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_config_2eproto);
      return ::descriptor_table_config_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kKeyFieldNumber = 1,
      kValueFieldNumber = 2,
      kGranularityFieldNumber = 3,
    };
    // required string key = 1;
    bool has_key() const;
    private:
    bool _internal_has_key() const;
    public:
    void clear_key();
    const std::string& key() const;
    void set_key(const std::string& value);
    void set_key(std::string&& value);
    void set_key(const char* value);
    void set_key(const char* value, size_t size);
    std::string* mutable_key();
    std::string* release_key();
    void set_allocated_key(std::string* key);
    private:
    const std::string& _internal_key() const;
    void _internal_set_key(const std::string& value);
    std::string* _internal_mutable_key();
    public:
  
    // required string value = 2;
    bool has_value() const;
    private:
    bool _internal_has_value() const;
    public:
    void clear_value();
    const std::string& value() const;
    void set_value(const std::string& value);
    void set_value(std::string&& value);
    void set_value(const char* value);
    void set_value(const char* value, size_t size);
    std::string* mutable_value();
    std::string* release_value();
    void set_allocated_value(std::string* value);
    private:
    const std::string& _internal_value() const;
    void _internal_set_value(const std::string& value);
    std::string* _internal_mutable_value();
    public:
  
    // required string granularity = 3;
    bool has_granularity() const;
    private:
    bool _internal_has_granularity() const;
    public:
    void clear_granularity();
    const std::string& granularity() const;
    void set_granularity(const std::string& value);
    void set_granularity(std::string&& value);
    void set_granularity(const char* value);
    void set_granularity(const char* value, size_t size);
    std::string* mutable_granularity();
    std::string* release_granularity();
    void set_allocated_granularity(std::string* granularity);
    private:
    const std::string& _internal_granularity() const;
    void _internal_set_granularity(const std::string& value);
    std::string* _internal_mutable_granularity();
    public:
  
    // @@protoc_insertion_point(class_scope:aws.kinesis.protobuf.AdditionalDimension)
   private:
    class _Internal;
  
    // helper for ByteSizeLong()
    size_t RequiredFieldsByteSizeFallback() const;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr key_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr granularity_;
    friend struct ::TableStruct_config_2eproto;
  };
  // -------------------------------------------------------------------
  
  class Configuration :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:aws.kinesis.protobuf.Configuration) */ {
   public:
    Configuration();
    virtual ~Configuration();
  
    Configuration(const Configuration& from);
    Configuration(Configuration&& from) noexcept
      : Configuration() {
      *this = ::std::move(from);
    }
  
    inline Configuration& operator=(const Configuration& from) {
      CopyFrom(from);
      return *this;
    }
    inline Configuration& operator=(Configuration&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const Configuration& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const Configuration* internal_default_instance() {
      return reinterpret_cast<const Configuration*>(
                 &_Configuration_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      1;
  
    friend void swap(Configuration& a, Configuration& b) {
      a.Swap(&b);
    }
    inline void Swap(Configuration* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline Configuration* New() const final {
      return CreateMaybeMessage<Configuration>(nullptr);
    }
  
    Configuration* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<Configuration>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const Configuration& from);
    void MergeFrom(const Configuration& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(Configuration* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "aws.kinesis.protobuf.Configuration";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_config_2eproto);
      return ::descriptor_table_config_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    typedef Configuration_ThreadConfig ThreadConfig;
    static constexpr ThreadConfig PER_REQUEST =
      Configuration_ThreadConfig_PER_REQUEST;
    static constexpr ThreadConfig POOLED =
      Configuration_ThreadConfig_POOLED;
    static inline bool ThreadConfig_IsValid(int value) {
      return Configuration_ThreadConfig_IsValid(value);
    }
    static constexpr ThreadConfig ThreadConfig_MIN =
      Configuration_ThreadConfig_ThreadConfig_MIN;
    static constexpr ThreadConfig ThreadConfig_MAX =
      Configuration_ThreadConfig_ThreadConfig_MAX;
    static constexpr int ThreadConfig_ARRAYSIZE =
      Configuration_ThreadConfig_ThreadConfig_ARRAYSIZE;
    static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
    ThreadConfig_descriptor() {
      return Configuration_ThreadConfig_descriptor();
    }
    template<typename T>
    static inline const std::string& ThreadConfig_Name(T enum_t_value) {
      static_assert(::std::is_same<T, ThreadConfig>::value ||
        ::std::is_integral<T>::value,
        "Incorrect type passed to function ThreadConfig_Name.");
      return Configuration_ThreadConfig_Name(enum_t_value);
    }
    static inline bool ThreadConfig_Parse(const std::string& name,
        ThreadConfig* value) {
      return Configuration_ThreadConfig_Parse(name, value);
    }
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kAdditionalMetricDimsFieldNumber = 128,
      kCloudwatchEndpointFieldNumber = 4,
      kKinesisEndpointFieldNumber = 11,
      kLogLevelFieldNumber = 13,
      kMetricsGranularityFieldNumber = 15,
      kMetricsLevelFieldNumber = 16,
      kMetricsNamespaceFieldNumber = 17,
      kRegionFieldNumber = 23,
      kEnableCoreDumpsFieldNumber = 9,
      kFailIfThrottledFieldNumber = 10,
      kThreadConfigFieldNumber = 26,
      kAggregationMaxCountFieldNumber = 2,
      kAggregationMaxSizeFieldNumber = 3,
      kCloudwatchPortFieldNumber = 5,
      kCollectionMaxCountFieldNumber = 6,
      kCollectionMaxSizeFieldNumber = 7,
      kConnectTimeoutFieldNumber = 8,
      kKinesisPortFieldNumber = 12,
      kMaxConnectionsFieldNumber = 14,
      kAggregationEnabledFieldNumber = 1,
      kVerifyCertificateFieldNumber = 25,
      kThreadPoolSizeFieldNumber = 27,
      kMetricsUploadDelayFieldNumber = 18,
      kMinConnectionsFieldNumber = 19,
      kRateLimitFieldNumber = 20,
      kRecordMaxBufferedTimeFieldNumber = 21,
      kRecordTtlFieldNumber = 22,
      kRequestTimeoutFieldNumber = 24,
    };
    // repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
    int additional_metric_dims_size() const;
    private:
    int _internal_additional_metric_dims_size() const;
    public:
    void clear_additional_metric_dims();
    ::aws::kinesis::protobuf::AdditionalDimension* mutable_additional_metric_dims(int index);
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::aws::kinesis::protobuf::AdditionalDimension >*
        mutable_additional_metric_dims();
    private:
    const ::aws::kinesis::protobuf::AdditionalDimension& _internal_additional_metric_dims(int index) const;
    ::aws::kinesis::protobuf::AdditionalDimension* _internal_add_additional_metric_dims();
    public:
    const ::aws::kinesis::protobuf::AdditionalDimension& additional_metric_dims(int index) const;
    ::aws::kinesis::protobuf::AdditionalDimension* add_additional_metric_dims();
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::aws::kinesis::protobuf::AdditionalDimension >&
        additional_metric_dims() const;
  
    // optional string cloudwatch_endpoint = 4 [default = ""];
    bool has_cloudwatch_endpoint() const;
    private:
    bool _internal_has_cloudwatch_endpoint() const;
    public:
    void clear_cloudwatch_endpoint();
    const std::string& cloudwatch_endpoint() const;
    void set_cloudwatch_endpoint(const std::string& value);
    void set_cloudwatch_endpoint(std::string&& value);
    void set_cloudwatch_endpoint(const char* value);
    void set_cloudwatch_endpoint(const char* value, size_t size);
    std::string* mutable_cloudwatch_endpoint();
    std::string* release_cloudwatch_endpoint();
    void set_allocated_cloudwatch_endpoint(std::string* cloudwatch_endpoint);
    private:
    const std::string& _internal_cloudwatch_endpoint() const;
    void _internal_set_cloudwatch_endpoint(const std::string& value);
    std::string* _internal_mutable_cloudwatch_endpoint();
    public:
  
    // optional string kinesis_endpoint = 11 [default = ""];
    bool has_kinesis_endpoint() const;
    private:
    bool _internal_has_kinesis_endpoint() const;
    public:
    void clear_kinesis_endpoint();
    const std::string& kinesis_endpoint() const;
    void set_kinesis_endpoint(const std::string& value);
    void set_kinesis_endpoint(std::string&& value);
    void set_kinesis_endpoint(const char* value);
    void set_kinesis_endpoint(const char* value, size_t size);
    std::string* mutable_kinesis_endpoint();
    std::string* release_kinesis_endpoint();
    void set_allocated_kinesis_endpoint(std::string* kinesis_endpoint);
    private:
    const std::string& _internal_kinesis_endpoint() const;
    void _internal_set_kinesis_endpoint(const std::string& value);
    std::string* _internal_mutable_kinesis_endpoint();
    public:
  
    // optional string log_level = 13 [default = "info"];
    bool has_log_level() const;
    private:
    bool _internal_has_log_level() const;
    public:
    void clear_log_level();
    const std::string& log_level() const;
    void set_log_level(const std::string& value);
    void set_log_level(std::string&& value);
    void set_log_level(const char* value);
    void set_log_level(const char* value, size_t size);
    std::string* mutable_log_level();
    std::string* release_log_level();
    void set_allocated_log_level(std::string* log_level);
    private:
    const std::string& _internal_log_level() const;
    void _internal_set_log_level(const std::string& value);
    std::string* _internal_mutable_log_level();
    public:
  
    // optional string metrics_granularity = 15 [default = "shard"];
    bool has_metrics_granularity() const;
    private:
    bool _internal_has_metrics_granularity() const;
    public:
    void clear_metrics_granularity();
    const std::string& metrics_granularity() const;
    void set_metrics_granularity(const std::string& value);
    void set_metrics_granularity(std::string&& value);
    void set_metrics_granularity(const char* value);
    void set_metrics_granularity(const char* value, size_t size);
    std::string* mutable_metrics_granularity();
    std::string* release_metrics_granularity();
    void set_allocated_metrics_granularity(std::string* metrics_granularity);
    private:
    const std::string& _internal_metrics_granularity() const;
    void _internal_set_metrics_granularity(const std::string& value);
    std::string* _internal_mutable_metrics_granularity();
    public:
  
    // optional string metrics_level = 16 [default = "detailed"];
    bool has_metrics_level() const;
    private:
    bool _internal_has_metrics_level() const;
    public:
    void clear_metrics_level();
    const std::string& metrics_level() const;
    void set_metrics_level(const std::string& value);
    void set_metrics_level(std::string&& value);
    void set_metrics_level(const char* value);
    void set_metrics_level(const char* value, size_t size);
    std::string* mutable_metrics_level();
    std::string* release_metrics_level();
    void set_allocated_metrics_level(std::string* metrics_level);
    private:
    const std::string& _internal_metrics_level() const;
    void _internal_set_metrics_level(const std::string& value);
    std::string* _internal_mutable_metrics_level();
    public:
  
    // optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
    bool has_metrics_namespace() const;
    private:
    bool _internal_has_metrics_namespace() const;
    public:
    void clear_metrics_namespace();
    const std::string& metrics_namespace() const;
    void set_metrics_namespace(const std::string& value);
    void set_metrics_namespace(std::string&& value);
    void set_metrics_namespace(const char* value);
    void set_metrics_namespace(const char* value, size_t size);
    std::string* mutable_metrics_namespace();
    std::string* release_metrics_namespace();
    void set_allocated_metrics_namespace(std::string* metrics_namespace);
    private:
    const std::string& _internal_metrics_namespace() const;
    void _internal_set_metrics_namespace(const std::string& value);
    std::string* _internal_mutable_metrics_namespace();
    public:
  
    // optional string region = 23 [default = ""];
    bool has_region() const;
    private:
    bool _internal_has_region() const;
    public:
    void clear_region();
    const std::string& region() const;
    void set_region(const std::string& value);
    void set_region(std::string&& value);
    void set_region(const char* value);
    void set_region(const char* value, size_t size);
    std::string* mutable_region();
    std::string* release_region();
    void set_allocated_region(std::string* region);
    private:
    const std::string& _internal_region() const;
    void _internal_set_region(const std::string& value);
    std::string* _internal_mutable_region();
    public:
  
    // optional bool enable_core_dumps = 9 [default = false];
    bool has_enable_core_dumps() const;
    private:
    bool _internal_has_enable_core_dumps() const;
    public:
    void clear_enable_core_dumps();
    bool enable_core_dumps() const;
    void set_enable_core_dumps(bool value);
    private:
    bool _internal_enable_core_dumps() const;
    void _internal_set_enable_core_dumps(bool value);
    public:
  
    // optional bool fail_if_throttled = 10 [default = false];
    bool has_fail_if_throttled() const;
    private:
    bool _internal_has_fail_if_throttled() const;
    public:
    void clear_fail_if_throttled();
    bool fail_if_throttled() const;
    void set_fail_if_throttled(bool value);
    private:
    bool _internal_fail_if_throttled() const;
    void _internal_set_fail_if_throttled(bool value);
    public:
  
    // optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 26 [default = PER_REQUEST];
    bool has_thread_config() const;
    private:
    bool _internal_has_thread_config() const;
    public:
    void clear_thread_config();
    ::aws::kinesis::protobuf::Configuration_ThreadConfig thread_config() const;
    void set_thread_config(::aws::kinesis::protobuf::Configuration_ThreadConfig value);
    private:
    ::aws::kinesis::protobuf::Configuration_ThreadConfig _internal_thread_config() const;
    void _internal_set_thread_config(::aws::kinesis::protobuf::Configuration_ThreadConfig value);
    public:
  
    // optional uint64 aggregation_max_count = 2 [default = 4294967295];
    bool has_aggregation_max_count() const;
    private:
    bool _internal_has_aggregation_max_count() const;
    public:
    void clear_aggregation_max_count();
    ::PROTOBUF_NAMESPACE_ID::uint64 aggregation_max_count() const;
    void set_aggregation_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_aggregation_max_count() const;
    void _internal_set_aggregation_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 aggregation_max_size = 3 [default = 51200];
    bool has_aggregation_max_size() const;
    private:
    bool _internal_has_aggregation_max_size() const;
    public:
    void clear_aggregation_max_size();
    ::PROTOBUF_NAMESPACE_ID::uint64 aggregation_max_size() const;
    void set_aggregation_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_aggregation_max_size() const;
    void _internal_set_aggregation_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 cloudwatch_port = 5 [default = 443];
    bool has_cloudwatch_port() const;
    private:
    bool _internal_has_cloudwatch_port() const;
    public:
    void clear_cloudwatch_port();
    ::PROTOBUF_NAMESPACE_ID::uint64 cloudwatch_port() const;
    void set_cloudwatch_port(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_cloudwatch_port() const;
    void _internal_set_cloudwatch_port(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 collection_max_count = 6 [default = 500];
    bool has_collection_max_count() const;
    private:
    bool _internal_has_collection_max_count() const;
    public:
    void clear_collection_max_count();
    ::PROTOBUF_NAMESPACE_ID::uint64 collection_max_count() const;
    void set_collection_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_collection_max_count() const;
    void _internal_set_collection_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 collection_max_size = 7 [default = 5242880];
    bool has_collection_max_size() const;
    private:
    bool _internal_has_collection_max_size() const;
    public:
    void clear_collection_max_size();
    ::PROTOBUF_NAMESPACE_ID::uint64 collection_max_size() const;
    void set_collection_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_collection_max_size() const;
    void _internal_set_collection_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 connect_timeout = 8 [default = 6000];
    bool has_connect_timeout() const;
    private:
    bool _internal_has_connect_timeout() const;
    public:
    void clear_connect_timeout();
    ::PROTOBUF_NAMESPACE_ID::uint64 connect_timeout() const;
    void set_connect_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_connect_timeout() const;
    void _internal_set_connect_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 kinesis_port = 12 [default = 443];
    bool has_kinesis_port() const;
    private:
    bool _internal_has_kinesis_port() const;
    public:
    void clear_kinesis_port();
    ::PROTOBUF_NAMESPACE_ID::uint64 kinesis_port() const;
    void set_kinesis_port(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_kinesis_port() const;
    void _internal_set_kinesis_port(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 max_connections = 14 [default = 24];
    bool has_max_connections() const;
    private:
    bool _internal_has_max_connections() const;
    public:
    void clear_max_connections();
    ::PROTOBUF_NAMESPACE_ID::uint64 max_connections() const;
    void set_max_connections(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_max_connections() const;
    void _internal_set_max_connections(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional bool aggregation_enabled = 1 [default = true];
    bool has_aggregation_enabled() const;
    private:
    bool _internal_has_aggregation_enabled() const;
    public:
    void clear_aggregation_enabled();
    bool aggregation_enabled() const;
    void set_aggregation_enabled(bool value);
    private:
    bool _internal_aggregation_enabled() const;
    void _internal_set_aggregation_enabled(bool value);
    public:
  
    // optional bool verify_certificate = 25 [default = true];
    bool has_verify_certificate() const;
    private:
    bool _internal_has_verify_certificate() const;
    public:
    void clear_verify_certificate();
    bool verify_certificate() const;
    void set_verify_certificate(bool value);
    private:
    bool _internal_verify_certificate() const;
    void _internal_set_verify_certificate(bool value);
    public:
  
    // optional uint32 thread_pool_size = 27 [default = 64];
    bool has_thread_pool_size() const;
    private:
    bool _internal_has_thread_pool_size() const;
    public:
    void clear_thread_pool_size();
    ::PROTOBUF_NAMESPACE_ID::uint32 thread_pool_size() const;
    void set_thread_pool_size(::PROTOBUF_NAMESPACE_ID::uint32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint32 _internal_thread_pool_size() const;
    void _internal_set_thread_pool_size(::PROTOBUF_NAMESPACE_ID::uint32 value);
    public:
  
    // optional uint64 metrics_upload_delay = 18 [default = 60000];
    bool has_metrics_upload_delay() const;
    private:
    bool _internal_has_metrics_upload_delay() const;
    public:
    void clear_metrics_upload_delay();
    ::PROTOBUF_NAMESPACE_ID::uint64 metrics_upload_delay() const;
    void set_metrics_upload_delay(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_metrics_upload_delay() const;
    void _internal_set_metrics_upload_delay(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 min_connections = 19 [default = 1];
    bool has_min_connections() const;
    private:
    bool _internal_has_min_connections() const;
    public:
    void clear_min_connections();
    ::PROTOBUF_NAMESPACE_ID::uint64 min_connections() const;
    void set_min_connections(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_min_connections() const;
    void _internal_set_min_connections(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 rate_limit = 20 [default = 150];
    bool has_rate_limit() const;
    private:
    bool _internal_has_rate_limit() const;
    public:
    void clear_rate_limit();
    ::PROTOBUF_NAMESPACE_ID::uint64 rate_limit() const;
    void set_rate_limit(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_rate_limit() const;
    void _internal_set_rate_limit(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 record_max_buffered_time = 21 [default = 100];
    bool has_record_max_buffered_time() const;
    private:
    bool _internal_has_record_max_buffered_time() const;
    public:
    void clear_record_max_buffered_time();
    ::PROTOBUF_NAMESPACE_ID::uint64 record_max_buffered_time() const;
    void set_record_max_buffered_time(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_record_max_buffered_time() const;
    void _internal_set_record_max_buffered_time(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 record_ttl = 22 [default = 30000];
    bool has_record_ttl() const;
    private:
    bool _internal_has_record_ttl() const;
    public:
    void clear_record_ttl();
    ::PROTOBUF_NAMESPACE_ID::uint64 record_ttl() const;
    void set_record_ttl(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_record_ttl() const;
    void _internal_set_record_ttl(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // optional uint64 request_timeout = 24 [default = 6000];
    bool has_request_timeout() const;
    private:
    bool _internal_has_request_timeout() const;
    public:
    void clear_request_timeout();
    ::PROTOBUF_NAMESPACE_ID::uint64 request_timeout() const;
    void set_request_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::uint64 _internal_request_timeout() const;
    void _internal_set_request_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value);
    public:
  
    // @@protoc_insertion_point(class_scope:aws.kinesis.protobuf.Configuration)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::aws::kinesis::protobuf::AdditionalDimension > additional_metric_dims_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cloudwatch_endpoint_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr kinesis_endpoint_;
    public:
    static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> _i_give_permission_to_break_this_code_default_log_level_;
    private:
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr log_level_;
    public:
    static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> _i_give_permission_to_break_this_code_default_metrics_granularity_;
    private:
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr metrics_granularity_;
    public:
    static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> _i_give_permission_to_break_this_code_default_metrics_level_;
    private:
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr metrics_level_;
    public:
    static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> _i_give_permission_to_break_this_code_default_metrics_namespace_;
    private:
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr metrics_namespace_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr region_;
    bool enable_core_dumps_;
    bool fail_if_throttled_;
    int thread_config_;
    ::PROTOBUF_NAMESPACE_ID::uint64 aggregation_max_count_;
    ::PROTOBUF_NAMESPACE_ID::uint64 aggregation_max_size_;
    ::PROTOBUF_NAMESPACE_ID::uint64 cloudwatch_port_;
    ::PROTOBUF_NAMESPACE_ID::uint64 collection_max_count_;
    ::PROTOBUF_NAMESPACE_ID::uint64 collection_max_size_;
    ::PROTOBUF_NAMESPACE_ID::uint64 connect_timeout_;
    ::PROTOBUF_NAMESPACE_ID::uint64 kinesis_port_;
    ::PROTOBUF_NAMESPACE_ID::uint64 max_connections_;
    bool aggregation_enabled_;
    bool verify_certificate_;
    ::PROTOBUF_NAMESPACE_ID::uint32 thread_pool_size_;
    ::PROTOBUF_NAMESPACE_ID::uint64 metrics_upload_delay_;
    ::PROTOBUF_NAMESPACE_ID::uint64 min_connections_;
    ::PROTOBUF_NAMESPACE_ID::uint64 rate_limit_;
    ::PROTOBUF_NAMESPACE_ID::uint64 record_max_buffered_time_;
    ::PROTOBUF_NAMESPACE_ID::uint64 record_ttl_;
    ::PROTOBUF_NAMESPACE_ID::uint64 request_timeout_;
    friend struct ::TableStruct_config_2eproto;
  };
  // ===================================================================
  
  
  // ===================================================================
  
  #ifdef __GNUC__
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  #endif  // __GNUC__
  // AdditionalDimension
  
  // required string key = 1;
  inline bool AdditionalDimension::_internal_has_key() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    return value;
  }
  inline bool AdditionalDimension::has_key() const {
    return _internal_has_key();
  }
  inline void AdditionalDimension::clear_key() {
    key_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000001u;
  }
  inline const std::string& AdditionalDimension::key() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.AdditionalDimension.key)
    return _internal_key();
  }
  inline void AdditionalDimension::set_key(const std::string& value) {
    _internal_set_key(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.AdditionalDimension.key)
  }
  inline std::string* AdditionalDimension::mutable_key() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.AdditionalDimension.key)
    return _internal_mutable_key();
  }
  inline const std::string& AdditionalDimension::_internal_key() const {
    return key_.GetNoArena();
  }
  inline void AdditionalDimension::_internal_set_key(const std::string& value) {
    _has_bits_[0] |= 0x00000001u;
    key_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void AdditionalDimension::set_key(std::string&& value) {
    _has_bits_[0] |= 0x00000001u;
    key_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.AdditionalDimension.key)
  }
  inline void AdditionalDimension::set_key(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000001u;
    key_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.AdditionalDimension.key)
  }
  inline void AdditionalDimension::set_key(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000001u;
    key_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.AdditionalDimension.key)
  }
  inline std::string* AdditionalDimension::_internal_mutable_key() {
    _has_bits_[0] |= 0x00000001u;
    return key_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* AdditionalDimension::release_key() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.AdditionalDimension.key)
    if (!_internal_has_key()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000001u;
    return key_.ReleaseNonDefaultNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void AdditionalDimension::set_allocated_key(std::string* key) {
    if (key != nullptr) {
      _has_bits_[0] |= 0x00000001u;
    } else {
      _has_bits_[0] &= ~0x00000001u;
    }
    key_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), key);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.AdditionalDimension.key)
  }
  
  // required string value = 2;
  inline bool AdditionalDimension::_internal_has_value() const {
    bool value = (_has_bits_[0] & 0x00000002u) != 0;
    return value;
  }
  inline bool AdditionalDimension::has_value() const {
    return _internal_has_value();
  }
  inline void AdditionalDimension::clear_value() {
    value_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000002u;
  }
  inline const std::string& AdditionalDimension::value() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.AdditionalDimension.value)
    return _internal_value();
  }
  inline void AdditionalDimension::set_value(const std::string& value) {
    _internal_set_value(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.AdditionalDimension.value)
  }
  inline std::string* AdditionalDimension::mutable_value() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.AdditionalDimension.value)
    return _internal_mutable_value();
  }
  inline const std::string& AdditionalDimension::_internal_value() const {
    return value_.GetNoArena();
  }
  inline void AdditionalDimension::_internal_set_value(const std::string& value) {
    _has_bits_[0] |= 0x00000002u;
    value_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void AdditionalDimension::set_value(std::string&& value) {
    _has_bits_[0] |= 0x00000002u;
    value_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.AdditionalDimension.value)
  }
  inline void AdditionalDimension::set_value(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000002u;
    value_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.AdditionalDimension.value)
  }
  inline void AdditionalDimension::set_value(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000002u;
    value_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.AdditionalDimension.value)
  }
  inline std::string* AdditionalDimension::_internal_mutable_value() {
    _has_bits_[0] |= 0x00000002u;
    return value_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* AdditionalDimension::release_value() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.AdditionalDimension.value)
    if (!_internal_has_value()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000002u;
    return value_.ReleaseNonDefaultNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void AdditionalDimension::set_allocated_value(std::string* value) {
    if (value != nullptr) {
      _has_bits_[0] |= 0x00000002u;
    } else {
      _has_bits_[0] &= ~0x00000002u;
    }
    value_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.AdditionalDimension.value)
  }
  
  // required string granularity = 3;
  inline bool AdditionalDimension::_internal_has_granularity() const {
    bool value = (_has_bits_[0] & 0x00000004u) != 0;
    return value;
  }
  inline bool AdditionalDimension::has_granularity() const {
    return _internal_has_granularity();
  }
  inline void AdditionalDimension::clear_granularity() {
    granularity_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000004u;
  }
  inline const std::string& AdditionalDimension::granularity() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.AdditionalDimension.granularity)
    return _internal_granularity();
  }
  inline void AdditionalDimension::set_granularity(const std::string& value) {
    _internal_set_granularity(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.AdditionalDimension.granularity)
  }
  inline std::string* AdditionalDimension::mutable_granularity() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.AdditionalDimension.granularity)
    return _internal_mutable_granularity();
  }
  inline const std::string& AdditionalDimension::_internal_granularity() const {
    return granularity_.GetNoArena();
  }
  inline void AdditionalDimension::_internal_set_granularity(const std::string& value) {
    _has_bits_[0] |= 0x00000004u;
    granularity_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void AdditionalDimension::set_granularity(std::string&& value) {
    _has_bits_[0] |= 0x00000004u;
    granularity_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.AdditionalDimension.granularity)
  }
  inline void AdditionalDimension::set_granularity(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000004u;
    granularity_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.AdditionalDimension.granularity)
  }
  inline void AdditionalDimension::set_granularity(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000004u;
    granularity_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.AdditionalDimension.granularity)
  }
  inline std::string* AdditionalDimension::_internal_mutable_granularity() {
    _has_bits_[0] |= 0x00000004u;
    return granularity_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* AdditionalDimension::release_granularity() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.AdditionalDimension.granularity)
    if (!_internal_has_granularity()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000004u;
    return granularity_.ReleaseNonDefaultNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void AdditionalDimension::set_allocated_granularity(std::string* granularity) {
    if (granularity != nullptr) {
      _has_bits_[0] |= 0x00000004u;
    } else {
      _has_bits_[0] &= ~0x00000004u;
    }
    granularity_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), granularity);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.AdditionalDimension.granularity)
  }
  
  // -------------------------------------------------------------------
  
  // Configuration
  
  // repeated .aws.kinesis.protobuf.AdditionalDimension additional_metric_dims = 128;
  inline int Configuration::_internal_additional_metric_dims_size() const {
    return additional_metric_dims_.size();
  }
  inline int Configuration::additional_metric_dims_size() const {
    return _internal_additional_metric_dims_size();
  }
  inline void Configuration::clear_additional_metric_dims() {
    additional_metric_dims_.Clear();
  }
  inline ::aws::kinesis::protobuf::AdditionalDimension* Configuration::mutable_additional_metric_dims(int index) {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.additional_metric_dims)
    return additional_metric_dims_.Mutable(index);
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::aws::kinesis::protobuf::AdditionalDimension >*
  Configuration::mutable_additional_metric_dims() {
    // @@protoc_insertion_point(field_mutable_list:aws.kinesis.protobuf.Configuration.additional_metric_dims)
    return &additional_metric_dims_;
  }
  inline const ::aws::kinesis::protobuf::AdditionalDimension& Configuration::_internal_additional_metric_dims(int index) const {
    return additional_metric_dims_.Get(index);
  }
  inline const ::aws::kinesis::protobuf::AdditionalDimension& Configuration::additional_metric_dims(int index) const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.additional_metric_dims)
    return _internal_additional_metric_dims(index);
  }
  inline ::aws::kinesis::protobuf::AdditionalDimension* Configuration::_internal_add_additional_metric_dims() {
    return additional_metric_dims_.Add();
  }
  inline ::aws::kinesis::protobuf::AdditionalDimension* Configuration::add_additional_metric_dims() {
    // @@protoc_insertion_point(field_add:aws.kinesis.protobuf.Configuration.additional_metric_dims)
    return _internal_add_additional_metric_dims();
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::aws::kinesis::protobuf::AdditionalDimension >&
  Configuration::additional_metric_dims() const {
    // @@protoc_insertion_point(field_list:aws.kinesis.protobuf.Configuration.additional_metric_dims)
    return additional_metric_dims_;
  }
  
  // optional bool aggregation_enabled = 1 [default = true];
  inline bool Configuration::_internal_has_aggregation_enabled() const {
    bool value = (_has_bits_[0] & 0x00040000u) != 0;
    return value;
  }
  inline bool Configuration::has_aggregation_enabled() const {
    return _internal_has_aggregation_enabled();
  }
  inline void Configuration::clear_aggregation_enabled() {
    aggregation_enabled_ = true;
    _has_bits_[0] &= ~0x00040000u;
  }
  inline bool Configuration::_internal_aggregation_enabled() const {
    return aggregation_enabled_;
  }
  inline bool Configuration::aggregation_enabled() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.aggregation_enabled)
    return _internal_aggregation_enabled();
  }
  inline void Configuration::_internal_set_aggregation_enabled(bool value) {
    _has_bits_[0] |= 0x00040000u;
    aggregation_enabled_ = value;
  }
  inline void Configuration::set_aggregation_enabled(bool value) {
    _internal_set_aggregation_enabled(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.aggregation_enabled)
  }
  
  // optional uint64 aggregation_max_count = 2 [default = 4294967295];
  inline bool Configuration::_internal_has_aggregation_max_count() const {
    bool value = (_has_bits_[0] & 0x00000400u) != 0;
    return value;
  }
  inline bool Configuration::has_aggregation_max_count() const {
    return _internal_has_aggregation_max_count();
  }
  inline void Configuration::clear_aggregation_max_count() {
    aggregation_max_count_ = PROTOBUF_ULONGLONG(4294967295);
    _has_bits_[0] &= ~0x00000400u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_aggregation_max_count() const {
    return aggregation_max_count_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::aggregation_max_count() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.aggregation_max_count)
    return _internal_aggregation_max_count();
  }
  inline void Configuration::_internal_set_aggregation_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00000400u;
    aggregation_max_count_ = value;
  }
  inline void Configuration::set_aggregation_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_aggregation_max_count(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.aggregation_max_count)
  }
  
  // optional uint64 aggregation_max_size = 3 [default = 51200];
  inline bool Configuration::_internal_has_aggregation_max_size() const {
    bool value = (_has_bits_[0] & 0x00000800u) != 0;
    return value;
  }
  inline bool Configuration::has_aggregation_max_size() const {
    return _internal_has_aggregation_max_size();
  }
  inline void Configuration::clear_aggregation_max_size() {
    aggregation_max_size_ = PROTOBUF_ULONGLONG(51200);
    _has_bits_[0] &= ~0x00000800u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_aggregation_max_size() const {
    return aggregation_max_size_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::aggregation_max_size() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.aggregation_max_size)
    return _internal_aggregation_max_size();
  }
  inline void Configuration::_internal_set_aggregation_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00000800u;
    aggregation_max_size_ = value;
  }
  inline void Configuration::set_aggregation_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_aggregation_max_size(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.aggregation_max_size)
  }
  
  // optional string cloudwatch_endpoint = 4 [default = ""];
  inline bool Configuration::_internal_has_cloudwatch_endpoint() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    return value;
  }
  inline bool Configuration::has_cloudwatch_endpoint() const {
    return _internal_has_cloudwatch_endpoint();
  }
  inline void Configuration::clear_cloudwatch_endpoint() {
    cloudwatch_endpoint_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000001u;
  }
  inline const std::string& Configuration::cloudwatch_endpoint() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
    return _internal_cloudwatch_endpoint();
  }
  inline void Configuration::set_cloudwatch_endpoint(const std::string& value) {
    _internal_set_cloudwatch_endpoint(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
  }
  inline std::string* Configuration::mutable_cloudwatch_endpoint() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
    return _internal_mutable_cloudwatch_endpoint();
  }
  inline const std::string& Configuration::_internal_cloudwatch_endpoint() const {
    return cloudwatch_endpoint_.GetNoArena();
  }
  inline void Configuration::_internal_set_cloudwatch_endpoint(const std::string& value) {
    _has_bits_[0] |= 0x00000001u;
    cloudwatch_endpoint_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void Configuration::set_cloudwatch_endpoint(std::string&& value) {
    _has_bits_[0] |= 0x00000001u;
    cloudwatch_endpoint_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
  }
  inline void Configuration::set_cloudwatch_endpoint(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000001u;
    cloudwatch_endpoint_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
  }
  inline void Configuration::set_cloudwatch_endpoint(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000001u;
    cloudwatch_endpoint_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
  }
  inline std::string* Configuration::_internal_mutable_cloudwatch_endpoint() {
    _has_bits_[0] |= 0x00000001u;
    return cloudwatch_endpoint_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* Configuration::release_cloudwatch_endpoint() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
    if (!_internal_has_cloudwatch_endpoint()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000001u;
    return cloudwatch_endpoint_.ReleaseNonDefaultNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void Configuration::set_allocated_cloudwatch_endpoint(std::string* cloudwatch_endpoint) {
    if (cloudwatch_endpoint != nullptr) {
      _has_bits_[0] |= 0x00000001u;
    } else {
      _has_bits_[0] &= ~0x00000001u;
    }
    cloudwatch_endpoint_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cloudwatch_endpoint);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.cloudwatch_endpoint)
  }
  
  // optional uint64 cloudwatch_port = 5 [default = 443];
  inline bool Configuration::_internal_has_cloudwatch_port() const {
    bool value = (_has_bits_[0] & 0x00001000u) != 0;
    return value;
  }
  inline bool Configuration::has_cloudwatch_port() const {
    return _internal_has_cloudwatch_port();
  }
  inline void Configuration::clear_cloudwatch_port() {
    cloudwatch_port_ = PROTOBUF_ULONGLONG(443);
    _has_bits_[0] &= ~0x00001000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_cloudwatch_port() const {
    return cloudwatch_port_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::cloudwatch_port() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.cloudwatch_port)
    return _internal_cloudwatch_port();
  }
  inline void Configuration::_internal_set_cloudwatch_port(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00001000u;
    cloudwatch_port_ = value;
  }
  inline void Configuration::set_cloudwatch_port(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_cloudwatch_port(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.cloudwatch_port)
  }
  
  // optional uint64 collection_max_count = 6 [default = 500];
  inline bool Configuration::_internal_has_collection_max_count() const {
    bool value = (_has_bits_[0] & 0x00002000u) != 0;
    return value;
  }
  inline bool Configuration::has_collection_max_count() const {
    return _internal_has_collection_max_count();
  }
  inline void Configuration::clear_collection_max_count() {
    collection_max_count_ = PROTOBUF_ULONGLONG(500);
    _has_bits_[0] &= ~0x00002000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_collection_max_count() const {
    return collection_max_count_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::collection_max_count() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.collection_max_count)
    return _internal_collection_max_count();
  }
  inline void Configuration::_internal_set_collection_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00002000u;
    collection_max_count_ = value;
  }
  inline void Configuration::set_collection_max_count(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_collection_max_count(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.collection_max_count)
  }
  
  // optional uint64 collection_max_size = 7 [default = 5242880];
  inline bool Configuration::_internal_has_collection_max_size() const {
    bool value = (_has_bits_[0] & 0x00004000u) != 0;
    return value;
  }
  inline bool Configuration::has_collection_max_size() const {
    return _internal_has_collection_max_size();
  }
  inline void Configuration::clear_collection_max_size() {
    collection_max_size_ = PROTOBUF_ULONGLONG(5242880);
    _has_bits_[0] &= ~0x00004000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_collection_max_size() const {
    return collection_max_size_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::collection_max_size() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.collection_max_size)
    return _internal_collection_max_size();
  }
  inline void Configuration::_internal_set_collection_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00004000u;
    collection_max_size_ = value;
  }
  inline void Configuration::set_collection_max_size(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_collection_max_size(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.collection_max_size)
  }
  
  // optional uint64 connect_timeout = 8 [default = 6000];
  inline bool Configuration::_internal_has_connect_timeout() const {
    bool value = (_has_bits_[0] & 0x00008000u) != 0;
    return value;
  }
  inline bool Configuration::has_connect_timeout() const {
    return _internal_has_connect_timeout();
  }
  inline void Configuration::clear_connect_timeout() {
    connect_timeout_ = PROTOBUF_ULONGLONG(6000);
    _has_bits_[0] &= ~0x00008000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_connect_timeout() const {
    return connect_timeout_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::connect_timeout() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.connect_timeout)
    return _internal_connect_timeout();
  }
  inline void Configuration::_internal_set_connect_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00008000u;
    connect_timeout_ = value;
  }
  inline void Configuration::set_connect_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_connect_timeout(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.connect_timeout)
  }
  
  // optional bool enable_core_dumps = 9 [default = false];
  inline bool Configuration::_internal_has_enable_core_dumps() const {
    bool value = (_has_bits_[0] & 0x00000080u) != 0;
    return value;
  }
  inline bool Configuration::has_enable_core_dumps() const {
    return _internal_has_enable_core_dumps();
  }
  inline void Configuration::clear_enable_core_dumps() {
    enable_core_dumps_ = false;
    _has_bits_[0] &= ~0x00000080u;
  }
  inline bool Configuration::_internal_enable_core_dumps() const {
    return enable_core_dumps_;
  }
  inline bool Configuration::enable_core_dumps() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.enable_core_dumps)
    return _internal_enable_core_dumps();
  }
  inline void Configuration::_internal_set_enable_core_dumps(bool value) {
    _has_bits_[0] |= 0x00000080u;
    enable_core_dumps_ = value;
  }
  inline void Configuration::set_enable_core_dumps(bool value) {
    _internal_set_enable_core_dumps(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.enable_core_dumps)
  }
  
  // optional bool fail_if_throttled = 10 [default = false];
  inline bool Configuration::_internal_has_fail_if_throttled() const {
    bool value = (_has_bits_[0] & 0x00000100u) != 0;
    return value;
  }
  inline bool Configuration::has_fail_if_throttled() const {
    return _internal_has_fail_if_throttled();
  }
  inline void Configuration::clear_fail_if_throttled() {
    fail_if_throttled_ = false;
    _has_bits_[0] &= ~0x00000100u;
  }
  inline bool Configuration::_internal_fail_if_throttled() const {
    return fail_if_throttled_;
  }
  inline bool Configuration::fail_if_throttled() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.fail_if_throttled)
    return _internal_fail_if_throttled();
  }
  inline void Configuration::_internal_set_fail_if_throttled(bool value) {
    _has_bits_[0] |= 0x00000100u;
    fail_if_throttled_ = value;
  }
  inline void Configuration::set_fail_if_throttled(bool value) {
    _internal_set_fail_if_throttled(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.fail_if_throttled)
  }
  
  // optional string kinesis_endpoint = 11 [default = ""];
  inline bool Configuration::_internal_has_kinesis_endpoint() const {
    bool value = (_has_bits_[0] & 0x00000002u) != 0;
    return value;
  }
  inline bool Configuration::has_kinesis_endpoint() const {
    return _internal_has_kinesis_endpoint();
  }
  inline void Configuration::clear_kinesis_endpoint() {
    kinesis_endpoint_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000002u;
  }
  inline const std::string& Configuration::kinesis_endpoint() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
    return _internal_kinesis_endpoint();
  }
  inline void Configuration::set_kinesis_endpoint(const std::string& value) {
    _internal_set_kinesis_endpoint(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
  }
  inline std::string* Configuration::mutable_kinesis_endpoint() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
    return _internal_mutable_kinesis_endpoint();
  }
  inline const std::string& Configuration::_internal_kinesis_endpoint() const {
    return kinesis_endpoint_.GetNoArena();
  }
  inline void Configuration::_internal_set_kinesis_endpoint(const std::string& value) {
    _has_bits_[0] |= 0x00000002u;
    kinesis_endpoint_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void Configuration::set_kinesis_endpoint(std::string&& value) {
    _has_bits_[0] |= 0x00000002u;
    kinesis_endpoint_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
  }
  inline void Configuration::set_kinesis_endpoint(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000002u;
    kinesis_endpoint_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
  }
  inline void Configuration::set_kinesis_endpoint(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000002u;
    kinesis_endpoint_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
  }
  inline std::string* Configuration::_internal_mutable_kinesis_endpoint() {
    _has_bits_[0] |= 0x00000002u;
    return kinesis_endpoint_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* Configuration::release_kinesis_endpoint() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
    if (!_internal_has_kinesis_endpoint()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000002u;
    return kinesis_endpoint_.ReleaseNonDefaultNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void Configuration::set_allocated_kinesis_endpoint(std::string* kinesis_endpoint) {
    if (kinesis_endpoint != nullptr) {
      _has_bits_[0] |= 0x00000002u;
    } else {
      _has_bits_[0] &= ~0x00000002u;
    }
    kinesis_endpoint_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), kinesis_endpoint);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.kinesis_endpoint)
  }
  
  // optional uint64 kinesis_port = 12 [default = 443];
  inline bool Configuration::_internal_has_kinesis_port() const {
    bool value = (_has_bits_[0] & 0x00010000u) != 0;
    return value;
  }
  inline bool Configuration::has_kinesis_port() const {
    return _internal_has_kinesis_port();
  }
  inline void Configuration::clear_kinesis_port() {
    kinesis_port_ = PROTOBUF_ULONGLONG(443);
    _has_bits_[0] &= ~0x00010000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_kinesis_port() const {
    return kinesis_port_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::kinesis_port() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.kinesis_port)
    return _internal_kinesis_port();
  }
  inline void Configuration::_internal_set_kinesis_port(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00010000u;
    kinesis_port_ = value;
  }
  inline void Configuration::set_kinesis_port(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_kinesis_port(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.kinesis_port)
  }
  
  // optional string log_level = 13 [default = "info"];
  inline bool Configuration::_internal_has_log_level() const {
    bool value = (_has_bits_[0] & 0x00000004u) != 0;
    return value;
  }
  inline bool Configuration::has_log_level() const {
    return _internal_has_log_level();
  }
  inline void Configuration::clear_log_level() {
    log_level_.ClearToDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get());
    _has_bits_[0] &= ~0x00000004u;
  }
  inline const std::string& Configuration::log_level() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.log_level)
    return _internal_log_level();
  }
  inline void Configuration::set_log_level(const std::string& value) {
    _internal_set_log_level(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.log_level)
  }
  inline std::string* Configuration::mutable_log_level() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.log_level)
    return _internal_mutable_log_level();
  }
  inline const std::string& Configuration::_internal_log_level() const {
    return log_level_.GetNoArena();
  }
  inline void Configuration::_internal_set_log_level(const std::string& value) {
    _has_bits_[0] |= 0x00000004u;
    log_level_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get(), value);
  }
  inline void Configuration::set_log_level(std::string&& value) {
    _has_bits_[0] |= 0x00000004u;
    log_level_.SetNoArena(
      &::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.log_level)
  }
  inline void Configuration::set_log_level(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000004u;
    log_level_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.log_level)
  }
  inline void Configuration::set_log_level(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000004u;
    log_level_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.log_level)
  }
  inline std::string* Configuration::_internal_mutable_log_level() {
    _has_bits_[0] |= 0x00000004u;
    return log_level_.MutableNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get());
  }
  inline std::string* Configuration::release_log_level() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.log_level)
    if (!_internal_has_log_level()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000004u;
    return log_level_.ReleaseNonDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get());
  }
  inline void Configuration::set_allocated_log_level(std::string* log_level) {
    if (log_level != nullptr) {
      _has_bits_[0] |= 0x00000004u;
    } else {
      _has_bits_[0] &= ~0x00000004u;
    }
    log_level_.SetAllocatedNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_log_level_.get(), log_level);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.log_level)
  }
  
  // optional uint64 max_connections = 14 [default = 24];
  inline bool Configuration::_internal_has_max_connections() const {
    bool value = (_has_bits_[0] & 0x00020000u) != 0;
    return value;
  }
  inline bool Configuration::has_max_connections() const {
    return _internal_has_max_connections();
  }
  inline void Configuration::clear_max_connections() {
    max_connections_ = PROTOBUF_ULONGLONG(24);
    _has_bits_[0] &= ~0x00020000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_max_connections() const {
    return max_connections_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::max_connections() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.max_connections)
    return _internal_max_connections();
  }
  inline void Configuration::_internal_set_max_connections(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00020000u;
    max_connections_ = value;
  }
  inline void Configuration::set_max_connections(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_max_connections(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.max_connections)
  }
  
  // optional string metrics_granularity = 15 [default = "shard"];
  inline bool Configuration::_internal_has_metrics_granularity() const {
    bool value = (_has_bits_[0] & 0x00000008u) != 0;
    return value;
  }
  inline bool Configuration::has_metrics_granularity() const {
    return _internal_has_metrics_granularity();
  }
  inline void Configuration::clear_metrics_granularity() {
    metrics_granularity_.ClearToDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get());
    _has_bits_[0] &= ~0x00000008u;
  }
  inline const std::string& Configuration::metrics_granularity() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.metrics_granularity)
    return _internal_metrics_granularity();
  }
  inline void Configuration::set_metrics_granularity(const std::string& value) {
    _internal_set_metrics_granularity(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.metrics_granularity)
  }
  inline std::string* Configuration::mutable_metrics_granularity() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.metrics_granularity)
    return _internal_mutable_metrics_granularity();
  }
  inline const std::string& Configuration::_internal_metrics_granularity() const {
    return metrics_granularity_.GetNoArena();
  }
  inline void Configuration::_internal_set_metrics_granularity(const std::string& value) {
    _has_bits_[0] |= 0x00000008u;
    metrics_granularity_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get(), value);
  }
  inline void Configuration::set_metrics_granularity(std::string&& value) {
    _has_bits_[0] |= 0x00000008u;
    metrics_granularity_.SetNoArena(
      &::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.metrics_granularity)
  }
  inline void Configuration::set_metrics_granularity(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000008u;
    metrics_granularity_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.metrics_granularity)
  }
  inline void Configuration::set_metrics_granularity(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000008u;
    metrics_granularity_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.metrics_granularity)
  }
  inline std::string* Configuration::_internal_mutable_metrics_granularity() {
    _has_bits_[0] |= 0x00000008u;
    return metrics_granularity_.MutableNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get());
  }
  inline std::string* Configuration::release_metrics_granularity() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.metrics_granularity)
    if (!_internal_has_metrics_granularity()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000008u;
    return metrics_granularity_.ReleaseNonDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get());
  }
  inline void Configuration::set_allocated_metrics_granularity(std::string* metrics_granularity) {
    if (metrics_granularity != nullptr) {
      _has_bits_[0] |= 0x00000008u;
    } else {
      _has_bits_[0] &= ~0x00000008u;
    }
    metrics_granularity_.SetAllocatedNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_granularity_.get(), metrics_granularity);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.metrics_granularity)
  }
  
  // optional string metrics_level = 16 [default = "detailed"];
  inline bool Configuration::_internal_has_metrics_level() const {
    bool value = (_has_bits_[0] & 0x00000010u) != 0;
    return value;
  }
  inline bool Configuration::has_metrics_level() const {
    return _internal_has_metrics_level();
  }
  inline void Configuration::clear_metrics_level() {
    metrics_level_.ClearToDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get());
    _has_bits_[0] &= ~0x00000010u;
  }
  inline const std::string& Configuration::metrics_level() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.metrics_level)
    return _internal_metrics_level();
  }
  inline void Configuration::set_metrics_level(const std::string& value) {
    _internal_set_metrics_level(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.metrics_level)
  }
  inline std::string* Configuration::mutable_metrics_level() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.metrics_level)
    return _internal_mutable_metrics_level();
  }
  inline const std::string& Configuration::_internal_metrics_level() const {
    return metrics_level_.GetNoArena();
  }
  inline void Configuration::_internal_set_metrics_level(const std::string& value) {
    _has_bits_[0] |= 0x00000010u;
    metrics_level_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get(), value);
  }
  inline void Configuration::set_metrics_level(std::string&& value) {
    _has_bits_[0] |= 0x00000010u;
    metrics_level_.SetNoArena(
      &::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.metrics_level)
  }
  inline void Configuration::set_metrics_level(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000010u;
    metrics_level_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.metrics_level)
  }
  inline void Configuration::set_metrics_level(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000010u;
    metrics_level_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.metrics_level)
  }
  inline std::string* Configuration::_internal_mutable_metrics_level() {
    _has_bits_[0] |= 0x00000010u;
    return metrics_level_.MutableNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get());
  }
  inline std::string* Configuration::release_metrics_level() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.metrics_level)
    if (!_internal_has_metrics_level()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000010u;
    return metrics_level_.ReleaseNonDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get());
  }
  inline void Configuration::set_allocated_metrics_level(std::string* metrics_level) {
    if (metrics_level != nullptr) {
      _has_bits_[0] |= 0x00000010u;
    } else {
      _has_bits_[0] &= ~0x00000010u;
    }
    metrics_level_.SetAllocatedNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_level_.get(), metrics_level);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.metrics_level)
  }
  
  // optional string metrics_namespace = 17 [default = "KinesisProducerLibrary"];
  inline bool Configuration::_internal_has_metrics_namespace() const {
    bool value = (_has_bits_[0] & 0x00000020u) != 0;
    return value;
  }
  inline bool Configuration::has_metrics_namespace() const {
    return _internal_has_metrics_namespace();
  }
  inline void Configuration::clear_metrics_namespace() {
    metrics_namespace_.ClearToDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get());
    _has_bits_[0] &= ~0x00000020u;
  }
  inline const std::string& Configuration::metrics_namespace() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.metrics_namespace)
    return _internal_metrics_namespace();
  }
  inline void Configuration::set_metrics_namespace(const std::string& value) {
    _internal_set_metrics_namespace(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.metrics_namespace)
  }
  inline std::string* Configuration::mutable_metrics_namespace() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.metrics_namespace)
    return _internal_mutable_metrics_namespace();
  }
  inline const std::string& Configuration::_internal_metrics_namespace() const {
    return metrics_namespace_.GetNoArena();
  }
  inline void Configuration::_internal_set_metrics_namespace(const std::string& value) {
    _has_bits_[0] |= 0x00000020u;
    metrics_namespace_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get(), value);
  }
  inline void Configuration::set_metrics_namespace(std::string&& value) {
    _has_bits_[0] |= 0x00000020u;
    metrics_namespace_.SetNoArena(
      &::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.metrics_namespace)
  }
  inline void Configuration::set_metrics_namespace(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000020u;
    metrics_namespace_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.metrics_namespace)
  }
  inline void Configuration::set_metrics_namespace(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000020u;
    metrics_namespace_.SetNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.metrics_namespace)
  }
  inline std::string* Configuration::_internal_mutable_metrics_namespace() {
    _has_bits_[0] |= 0x00000020u;
    return metrics_namespace_.MutableNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get());
  }
  inline std::string* Configuration::release_metrics_namespace() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.metrics_namespace)
    if (!_internal_has_metrics_namespace()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000020u;
    return metrics_namespace_.ReleaseNonDefaultNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get());
  }
  inline void Configuration::set_allocated_metrics_namespace(std::string* metrics_namespace) {
    if (metrics_namespace != nullptr) {
      _has_bits_[0] |= 0x00000020u;
    } else {
      _has_bits_[0] &= ~0x00000020u;
    }
    metrics_namespace_.SetAllocatedNoArena(&::aws::kinesis::protobuf::Configuration::_i_give_permission_to_break_this_code_default_metrics_namespace_.get(), metrics_namespace);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.metrics_namespace)
  }
  
  // optional uint64 metrics_upload_delay = 18 [default = 60000];
  inline bool Configuration::_internal_has_metrics_upload_delay() const {
    bool value = (_has_bits_[0] & 0x00200000u) != 0;
    return value;
  }
  inline bool Configuration::has_metrics_upload_delay() const {
    return _internal_has_metrics_upload_delay();
  }
  inline void Configuration::clear_metrics_upload_delay() {
    metrics_upload_delay_ = PROTOBUF_ULONGLONG(60000);
    _has_bits_[0] &= ~0x00200000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_metrics_upload_delay() const {
    return metrics_upload_delay_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::metrics_upload_delay() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.metrics_upload_delay)
    return _internal_metrics_upload_delay();
  }
  inline void Configuration::_internal_set_metrics_upload_delay(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00200000u;
    metrics_upload_delay_ = value;
  }
  inline void Configuration::set_metrics_upload_delay(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_metrics_upload_delay(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.metrics_upload_delay)
  }
  
  // optional uint64 min_connections = 19 [default = 1];
  inline bool Configuration::_internal_has_min_connections() const {
    bool value = (_has_bits_[0] & 0x00400000u) != 0;
    return value;
  }
  inline bool Configuration::has_min_connections() const {
    return _internal_has_min_connections();
  }
  inline void Configuration::clear_min_connections() {
    min_connections_ = PROTOBUF_ULONGLONG(1);
    _has_bits_[0] &= ~0x00400000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_min_connections() const {
    return min_connections_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::min_connections() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.min_connections)
    return _internal_min_connections();
  }
  inline void Configuration::_internal_set_min_connections(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00400000u;
    min_connections_ = value;
  }
  inline void Configuration::set_min_connections(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_min_connections(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.min_connections)
  }
  
  // optional uint64 rate_limit = 20 [default = 150];
  inline bool Configuration::_internal_has_rate_limit() const {
    bool value = (_has_bits_[0] & 0x00800000u) != 0;
    return value;
  }
  inline bool Configuration::has_rate_limit() const {
    return _internal_has_rate_limit();
  }
  inline void Configuration::clear_rate_limit() {
    rate_limit_ = PROTOBUF_ULONGLONG(150);
    _has_bits_[0] &= ~0x00800000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_rate_limit() const {
    return rate_limit_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::rate_limit() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.rate_limit)
    return _internal_rate_limit();
  }
  inline void Configuration::_internal_set_rate_limit(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x00800000u;
    rate_limit_ = value;
  }
  inline void Configuration::set_rate_limit(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_rate_limit(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.rate_limit)
  }
  
  // optional uint64 record_max_buffered_time = 21 [default = 100];
  inline bool Configuration::_internal_has_record_max_buffered_time() const {
    bool value = (_has_bits_[0] & 0x01000000u) != 0;
    return value;
  }
  inline bool Configuration::has_record_max_buffered_time() const {
    return _internal_has_record_max_buffered_time();
  }
  inline void Configuration::clear_record_max_buffered_time() {
    record_max_buffered_time_ = PROTOBUF_ULONGLONG(100);
    _has_bits_[0] &= ~0x01000000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_record_max_buffered_time() const {
    return record_max_buffered_time_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::record_max_buffered_time() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.record_max_buffered_time)
    return _internal_record_max_buffered_time();
  }
  inline void Configuration::_internal_set_record_max_buffered_time(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x01000000u;
    record_max_buffered_time_ = value;
  }
  inline void Configuration::set_record_max_buffered_time(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_record_max_buffered_time(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.record_max_buffered_time)
  }
  
  // optional uint64 record_ttl = 22 [default = 30000];
  inline bool Configuration::_internal_has_record_ttl() const {
    bool value = (_has_bits_[0] & 0x02000000u) != 0;
    return value;
  }
  inline bool Configuration::has_record_ttl() const {
    return _internal_has_record_ttl();
  }
  inline void Configuration::clear_record_ttl() {
    record_ttl_ = PROTOBUF_ULONGLONG(30000);
    _has_bits_[0] &= ~0x02000000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_record_ttl() const {
    return record_ttl_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::record_ttl() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.record_ttl)
    return _internal_record_ttl();
  }
  inline void Configuration::_internal_set_record_ttl(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x02000000u;
    record_ttl_ = value;
  }
  inline void Configuration::set_record_ttl(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_record_ttl(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.record_ttl)
  }
  
  // optional string region = 23 [default = ""];
  inline bool Configuration::_internal_has_region() const {
    bool value = (_has_bits_[0] & 0x00000040u) != 0;
    return value;
  }
  inline bool Configuration::has_region() const {
    return _internal_has_region();
  }
  inline void Configuration::clear_region() {
    region_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000040u;
  }
  inline const std::string& Configuration::region() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.region)
    return _internal_region();
  }
  inline void Configuration::set_region(const std::string& value) {
    _internal_set_region(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.region)
  }
  inline std::string* Configuration::mutable_region() {
    // @@protoc_insertion_point(field_mutable:aws.kinesis.protobuf.Configuration.region)
    return _internal_mutable_region();
  }
  inline const std::string& Configuration::_internal_region() const {
    return region_.GetNoArena();
  }
  inline void Configuration::_internal_set_region(const std::string& value) {
    _has_bits_[0] |= 0x00000040u;
    region_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void Configuration::set_region(std::string&& value) {
    _has_bits_[0] |= 0x00000040u;
    region_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:aws.kinesis.protobuf.Configuration.region)
  }
  inline void Configuration::set_region(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000040u;
    region_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:aws.kinesis.protobuf.Configuration.region)
  }
  inline void Configuration::set_region(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000040u;
    region_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:aws.kinesis.protobuf.Configuration.region)
  }
  inline std::string* Configuration::_internal_mutable_region() {
    _has_bits_[0] |= 0x00000040u;
    return region_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* Configuration::release_region() {
    // @@protoc_insertion_point(field_release:aws.kinesis.protobuf.Configuration.region)
    if (!_internal_has_region()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000040u;
    return region_.ReleaseNonDefaultNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void Configuration::set_allocated_region(std::string* region) {
    if (region != nullptr) {
      _has_bits_[0] |= 0x00000040u;
    } else {
      _has_bits_[0] &= ~0x00000040u;
    }
    region_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), region);
    // @@protoc_insertion_point(field_set_allocated:aws.kinesis.protobuf.Configuration.region)
  }
  
  // optional uint64 request_timeout = 24 [default = 6000];
  inline bool Configuration::_internal_has_request_timeout() const {
    bool value = (_has_bits_[0] & 0x04000000u) != 0;
    return value;
  }
  inline bool Configuration::has_request_timeout() const {
    return _internal_has_request_timeout();
  }
  inline void Configuration::clear_request_timeout() {
    request_timeout_ = PROTOBUF_ULONGLONG(6000);
    _has_bits_[0] &= ~0x04000000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::_internal_request_timeout() const {
    return request_timeout_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint64 Configuration::request_timeout() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.request_timeout)
    return _internal_request_timeout();
  }
  inline void Configuration::_internal_set_request_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _has_bits_[0] |= 0x04000000u;
    request_timeout_ = value;
  }
  inline void Configuration::set_request_timeout(::PROTOBUF_NAMESPACE_ID::uint64 value) {
    _internal_set_request_timeout(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.request_timeout)
  }
  
  // optional bool verify_certificate = 25 [default = true];
  inline bool Configuration::_internal_has_verify_certificate() const {
    bool value = (_has_bits_[0] & 0x00080000u) != 0;
    return value;
  }
  inline bool Configuration::has_verify_certificate() const {
    return _internal_has_verify_certificate();
  }
  inline void Configuration::clear_verify_certificate() {
    verify_certificate_ = true;
    _has_bits_[0] &= ~0x00080000u;
  }
  inline bool Configuration::_internal_verify_certificate() const {
    return verify_certificate_;
  }
  inline bool Configuration::verify_certificate() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.verify_certificate)
    return _internal_verify_certificate();
  }
  inline void Configuration::_internal_set_verify_certificate(bool value) {
    _has_bits_[0] |= 0x00080000u;
    verify_certificate_ = value;
  }
  inline void Configuration::set_verify_certificate(bool value) {
    _internal_set_verify_certificate(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.verify_certificate)
  }
  
  // optional .aws.kinesis.protobuf.Configuration.ThreadConfig thread_config = 26 [default = PER_REQUEST];
  inline bool Configuration::_internal_has_thread_config() const {
    bool value = (_has_bits_[0] & 0x00000200u) != 0;
    return value;
  }
  inline bool Configuration::has_thread_config() const {
    return _internal_has_thread_config();
  }
  inline void Configuration::clear_thread_config() {
    thread_config_ = 0;
    _has_bits_[0] &= ~0x00000200u;
  }
  inline ::aws::kinesis::protobuf::Configuration_ThreadConfig Configuration::_internal_thread_config() const {
    return static_cast< ::aws::kinesis::protobuf::Configuration_ThreadConfig >(thread_config_);
  }
  inline ::aws::kinesis::protobuf::Configuration_ThreadConfig Configuration::thread_config() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.thread_config)
    return _internal_thread_config();
  }
  inline void Configuration::_internal_set_thread_config(::aws::kinesis::protobuf::Configuration_ThreadConfig value) {
    assert(::aws::kinesis::protobuf::Configuration_ThreadConfig_IsValid(value));
    _has_bits_[0] |= 0x00000200u;
    thread_config_ = value;
  }
  inline void Configuration::set_thread_config(::aws::kinesis::protobuf::Configuration_ThreadConfig value) {
    _internal_set_thread_config(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.thread_config)
  }
  
  // optional uint32 thread_pool_size = 27 [default = 64];
  inline bool Configuration::_internal_has_thread_pool_size() const {
    bool value = (_has_bits_[0] & 0x00100000u) != 0;
    return value;
  }
  inline bool Configuration::has_thread_pool_size() const {
    return _internal_has_thread_pool_size();
  }
  inline void Configuration::clear_thread_pool_size() {
    thread_pool_size_ = 64u;
    _has_bits_[0] &= ~0x00100000u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint32 Configuration::_internal_thread_pool_size() const {
    return thread_pool_size_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::uint32 Configuration::thread_pool_size() const {
    // @@protoc_insertion_point(field_get:aws.kinesis.protobuf.Configuration.thread_pool_size)
    return _internal_thread_pool_size();
  }
  inline void Configuration::_internal_set_thread_pool_size(::PROTOBUF_NAMESPACE_ID::uint32 value) {
    _has_bits_[0] |= 0x00100000u;
    thread_pool_size_ = value;
  }
  inline void Configuration::set_thread_pool_size(::PROTOBUF_NAMESPACE_ID::uint32 value) {
    _internal_set_thread_pool_size(value);
    // @@protoc_insertion_point(field_set:aws.kinesis.protobuf.Configuration.thread_pool_size)
  }
  
  #ifdef __GNUC__
    #pragma GCC diagnostic pop
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace protobuf
  }  // namespace kinesis
  }  // namespace aws
  
  PROTOBUF_NAMESPACE_OPEN
  
  template <> struct is_proto_enum< ::aws::kinesis::protobuf::Configuration_ThreadConfig> : ::std::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::aws::kinesis::protobuf::Configuration_ThreadConfig>() {
    return ::aws::kinesis::protobuf::Configuration_ThreadConfig_descriptor();
  }
  
  PROTOBUF_NAMESPACE_CLOSE
  
  // @@protoc_insertion_point(global_scope)
  
  #include <google/protobuf/port_undef.inc>
  #endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_config_2eproto
  